博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RzPageControl(pagecontrol)实现多标签的动态添加,切换,关闭
阅读量:3587 次
发布时间:2019-05-20

本文共 2214 字,大约阅读时间需要 7 分钟。

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

转载地址:http://cmvwn.baihongyu.com/

你可能感兴趣的文章
Java学习遇到的问题与处理
查看>>
SpringBoot2.0
查看>>
Mybatis学习与问题
查看>>
日常电脑问题处理合集
查看>>
反射与注解学习时遇到的问题及解决方案
查看>>
名词解释(通俗版)
查看>>
Spring Security
查看>>
流式编程
查看>>
数据结构与算法(C语言版)——陈越
查看>>
HTTP抓包实战的问题与总结
查看>>
基于XML的IOC容器初始化以及循环依赖问题——Spring中的refresh()方法
查看>>
Spring组件注册、Bean生命周期、自动装配相关知识
查看>>
Spring基于注解的IOC初始化过程(较长慎入)
查看>>
《Arduino》开发 之 基于 u8g2 库 的 OLED 菜单界面
查看>>
python学习之旅
查看>>
python-00-小白,你该怎样学编程?
查看>>
py-mongdb语法
查看>>
计算机网络 | 无盘工作站的建立
查看>>
Redis基础知识
查看>>
面向对象设计的五大基本原则
查看>>