• RzPageControl(pagecontrol)


    实现多标签的动态添加,切换,关闭

    使用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;
    View Code

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

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

    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;
    View Code
  • 相关阅读:
    反射泛型方法
    Redis令牌桶限流
    laravel中间件的使用
    Laravel-权限系统
    Laravel 即时应用的一种实现方式
    laravel实现多模块
    laravel5+ElasticSearch+go-mysql-elasticsearch MySQL数据实时导入(mac)
    swoole视频直播
    开发SSO单点登录需要注意的问题
    进程、线程、协程三者之间的联系与区别
  • 原文地址:https://www.cnblogs.com/blogpro/p/11453508.html
Copyright © 2020-2023  润新知