博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速又改动少的将窗口改成融合窗
阅读量:4979 次
发布时间:2019-06-12

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

假设您要将模式窗口为主的桌面程序改成融合窗口,原子窗口为TForm类型窗口。

用到的组件:Raize 5.x                  (不要问我为什么不用TFrame)

目前流行用Raize的RzPageControl来做融合窗口,因为它自带TabSheet的关闭按钮和事件,所以大家都用这个了。

我的实现方法是放一个RzTabSheet当首页,上面显示一些通知通告、待办事项提醒的项目,然后所有子模块的窗口直接动态创建到RzPageControl里去,创建代码如下: 

procedure TfrmMain.N13Click(Sender: TObject);var  f : TfrmCallTask;//需要给子模块传递变量,所以这样定义  TabCtrl: TRzTabSheet;//容器  i : Integer;begin  for i := 0 to RzPageControl1.PageCount - 1 do    if RzPageControl1.Pages[i].Caption = '任务列表' then    begin      RzPageControl1.Pages[i].Show;      exit;    end;//这里是根据子模块窗口的标题来区分有没有生成,有生成就激活显示  TabCtrl := TRzTabSheet.Create(RzPageControl1);//创建容器  TabCtrl.PageControl := RzPageControl1;//容器归属  RzPageControl1.ActivePageIndex := TabCtrl.PageIndex;//激活容器页  f := TfrmCallTask.Create(TabCtrl);//创建窗口  //我这里用的是TForm而不是TFrame,所以是有窗口标题这些属性的  TabCtrl.Caption := f.Caption;//用窗口标题当标签页名称  f.ManualDock(TabCtrl);//将窗口融合到容器里  f.Align := alClient;//窗口自适应  f.vU := vU;//这里是设置窗口模块里的变量,当然也可以操作组件  f.vN := vN;  f.Show;  f.SetFocus;//窗口显示后做个聚焦end;
关于窗口中的按键事件,也就是onKeyPress,因为我用的是TForm,所以可以直接使用这个事件,只是切换组件时,需要以消息的形式来处理,代码如下:

procedure TfrmCallList.Edit1KeyPress(Sender: TObject; var Key: Char);begin  if (Key = #13) then  begin    Key := #0;    PostMessage(Handle, WM_KEYDOWN, VK_TAB, 0);//模拟按下Tab键    //Perform(WM_NEXTDLGCTL, 1, 0);//模式窗口时有效,融合窗口时无效  end;end;
关于融合窗口的关闭,也简单的,只要在RzPageControl的Close事件里设置AllowClose为真即可,代码如下:

procedure TfrmMain.RzPageControl1Close(Sender: TObject;var AllowClose: Boolean);begin//因为我不想关闭“首页”这个RzTabSheet,所以这样判断就行。  AllowClose := RzPageControl1.ActivePage.Caption <>'首页'end;
其他事项呢,不要忘记设置RzPageControl的几个相关属性来显示标签页样式和关闭按钮就行了,比如ShowCloseButtonOnActiveTab为真,ShowCloseButton这个为假。

下面附上效果图:

转载于:https://www.cnblogs.com/xieyunc/p/9126555.html

你可能感兴趣的文章
Python-面向对象(一)-Day7
查看>>
解决报错:error: The requested URL returned error: 401 Unauthorized while accessing
查看>>
Matplotlib——第一章轻松画个图
查看>>
Executor 框架
查看>>
ubuntu安装配置jdk
查看>>
nginx配置初步
查看>>
新版本chrome浏览器控制台怎么设置成独立的窗口
查看>>
winform保存用户登录(单态模式)
查看>>
图片加载问题
查看>>
老鸟解疑惑,菜鸟可起飞
查看>>
Java相关
查看>>
java 文件读取写入
查看>>
Frequentist 观点和 Bayesian 观点
查看>>
生活中的物理学(电学)
查看>>
中医文化 —— 穴位
查看>>
从二叉搜索树到平衡二叉搜索树
查看>>
推理集 —— 心理
查看>>
队列&栈的研究
查看>>
axis2 实例学习
查看>>
开发进度02
查看>>