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)实现多标签的动态添加,切换,关闭