RzPageControl设置多页时显示关闭按钮

假设您要将模式窗口为主的桌面程序改成融合窗口,原子窗口为TForm类型窗口。
用到的组件:Raize 5.x                  (不要问我为什么不用TFrame)

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

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

<pre>

Co de highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

——> 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 ;
</pre>

关于窗口中的按键事件,也就是onKeyPress,因为我用的是TForm,所以可以直接使
用这个事件,只是切换组件时,需要以消息的形式来处理,代码如下:

<pre>

Co de highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

——> 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 ;
</pre>

关于融合窗口的关闭,也简单的,只要在RzPageControl的Close事件里设置
AllowClose为真即可,代码如下:

<pre>

Co de highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

——> procedure  TfrmMain.RzPageControl1Close(Sender: TObject;
var  AllowClose: Boolean);
begin // 因为我不想关闭“首页”这个RzTabSheet,所以这样判断就行。
AllowClose :
=  RzPageControl1.ActivePage.Caption  <> ' 首页 '
end ;
</pre>

其他事项呢,不要忘记设置RzPageControl的几个相关属性来显示标签页样式和关闭
按钮就行了,比如ShowCloseButtonOnActiveTab为真,ShowCloseButton这个为假。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值