zoukankan      html  css  js  c++  java
  • RzPageControl(pagecontrol)实现多标签的动态添加,切换,关闭

    https://blog.csdn.net/pdw2009/article/details/76157651

    使用RzPageControl来实现多标签页
    使用菜单来打开标签页,通过标签页的caption来判断将标签页是否已经被打开过了.

    1.创建标签页,并判断是否是已经打开过的页面

    procedure TFmain.Page1Click(Sender: TObject);
    var
      newpage:TRzTabSheet;
      index:integer;
    begin
      newpage:=nil;
      if not gotopage('第一页',newpage) then
        begin
          index:=findpage('第一页');
          if index=-1 then exit;
          Form1:=TForm.Create(nil);
          Form1.Parent:=Fmain.pagecontrol1.Pages[index];
          Form1.Align:=alclient;
          Form1.BorderStyle:=bsnone;
          Form1.Show;
        end;
    end;
    

      

    gotopage函数,跳转到需要显示的那页,不存在的话就创建那一页

    {
       gotopage:跳转到某页
       如果存在这页,跳转后返回true;
       如果不存在,则新建一页,返回false;
    }

    function TFmain.gotopage(scaption:string;newpage:TRzTabSheet):boolean;
    var
      i:integer;
      isExists:Boolean;
    begin
      newpage:=nil;
      isExists:=false;
      if length(scaption)<=0 then exit;
      for i:=0 to pagecontrol1.PageCount-1 do
        begin
          if pagecontrol1.Pages[i].Caption=scaption then
            begin
              pagecontrol1.ActivePage:=pagecontrol1.Pages[i];
              isExists:=true;
              break;
            end;
        end;
      if not isExists then
        begin
          newpage:=TRZTabSheet.Create(pagecontrol1);
          newpage.Caption:=scaption;
          newpage.PageControl:=pagecontrol1;
          pagecontrol1.ActivePage:=newpage;
        end;
      result:=isExists;
    end;

    findpage函数,找到指定caption的那一页,返回那页的index,如果那页不存在,返回-1

    {
      findpage:根据标题查询页,返回index
      参数为页caption
      没有找到返回-1,找到返回index
    }

    function TFmain.findpage(scaption:string):integer;
    var
      i:integer;
      isExists:boolean;
    begin
      isExists:=false;
      for i:=0 to pagecontrol1.PageCount-1 do
        begin
          if pagecontrol1.Pages[i].Caption=scaption then
            begin
              pagecontrol1.ActivePage:=pagecontrol1.Pages[i];
              isExists:=true;
              result:=i;
              break;
            end;
        end;
      if not isExists then result:=-1;
    end;

    2.双击标签,关闭标签页
    RzpageControl的双击事件,如果标题不是’首页’就关闭当前显示的这页

    procedure TFmain.PageControl1DblClick(Sender: TObject);
    begin
       if PageControl1.ActivePage.Caption<>'首页' then
      pagecontrol1.CloseActiveTab;
    end;
    

      3.通过关闭按钮关闭
    先设置ShowCloseButton属性为true
    然后重写OnClose事件

    procedure TFmain.PageControl1Close(Sender: TObject;
      var AllowClose: Boolean);
    begin //如果只剩下一页不关闭,或当前页是首页不关闭
      if (self.PageControl1.PageCount=1) or (self.PageControl1.ActivePage.Caption='首页')  then
      begin
        AllowClose:=False;
        Exit;
      end;
      AllowClose:=True;
    end;
  • 相关阅读:
    perl system和exec 调用
    perl hash 根据键访问相应值
    perl unless循环
    perl hash数组
    Flex中利用单选按钮切换柱状图横纵坐标以及描述
    ReferenceError: Error #1069: 在 spark.components.RadioButtonGroup 上找不到属性 label,且没有默认值
    perl utf8 转gbk
    Oracle根据数据块ITL查找UNDO前镜像
    集团管控的历史读本——Leo鉴书76
    1067: spark.components:NavigatorContent 类型值的隐式强制指令的目标是非相关类型 String
  • 原文地址:https://www.cnblogs.com/tc310/p/10857927.html
Copyright © 2011-2022 走看看