RzPageControl(pagecontrol)实现多标签的动态添加,切换,关闭

Posted tc310

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

 

 

 

以上是关于RzPageControl(pagecontrol)实现多标签的动态添加,切换,关闭的主要内容,如果未能解决你的问题,请参考以下文章

Delphi:RzPageControl(pagecontrol)实现多标签的动态添加,切换,关闭

自定义PageControl样式

启动时可关闭的 PageControl

将 PageController 与 NavigationController 一起使用

IBOutlet pageControl无效

在 ViewController 上的 CollectionViewCell 中使用 PageControl