博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uniGUI试用笔记(五)
阅读量:5827 次
发布时间:2019-06-18

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

uniGUI的主窗体可以采用多页面方式进行管理,参考网上的资料,都是用TUniFrame + TUniPageControl 来实现,尝试了一下,效果还不错,如下图:

用TUniFrame 能够使用继承模式,我采用了以下的类关系:

TfmeWebEmbedBase : 所有嵌入Frame的基类,实现了与主窗体的交互和控制,包括窗体的关闭等

TfmeWebDBListBase:   与数据集列表操作相关的基类,实现了数据集的开启、数据导出与打印等

TfmeWebDBListEditBase:与数据集读写操作相关的基类,实现了数据集的新增、修改、删除、导入及保存等

业务窗体根据情况从TfmeWebDBListBase或TfmeWebDBListEditBase继承。

 

在主窗体中,首先构建一个列表,容纳所有的Frame

FFrameList : TList;

菜单或按钮点击,需要开启业务窗体时,调用函数

procedure TfrmWebMain.ShowFrame(AfmeBaseClass: TfmeWebEmbedClass;  AOwnerData: Variant); var   ts: TUniTabSheet;   fme : TfmeWebEmbedBase; begin   {
查找是否已经存在相应的业务窗体 } fme := FindFrame(AfmeBaseClass); {
如果没有则新建 } if not Assigned(fme) then begin {
先创建TabShee,用于放置Frame } ts := TUniTabSheet.Create(self); ts.PageControl := pcMain; ts.Closable := False; {
置换关闭事件,用于关闭业务窗体 } ts.OnClose := OnTabSheetClose; {
构建业务窗体 } fme := AfmeBaseClass.Create(Self); fme.Parent := ts; fme.TabSheet := ts; fme.Align := alClient; fme.MainForm := Self; {
设置返回事件,当业务窗体按下
<返回>
时,执行该函数} fme.OnReturn := OnFrameReturn; ts.Caption := fme.ModelName; {
业务窗体加入到列表 } FFrameList.Add(fme); end else {
如果找到已存在的业务窗体,则取其对应的TabSheet} ts := fme.TabSheet; {
进行业务窗体的数据准备工作,失败则释放业务窗体 } if not fme.PrepareData(AOwnerData) then begin ReleasFrame(fme); Exit; end; {
显示业务窗体 } ts.TabVisible := true; pcMain.ActivePage := ts; end;

 

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

你可能感兴趣的文章
AS3——禁止swf缩放
查看>>
说给部分程序员听
查看>>
linq 学习笔记之 Linq基本子句
查看>>
Java中新建子文件夹和新建文件
查看>>
[Js]布局转换
查看>>
Hot Bath
查看>>
国内常用NTP服务器地址及
查看>>
Java annotation 自定义注释@interface的用法
查看>>
Apache Spark 章节1
查看>>
phpcms与discuz的ucenter整合
查看>>
sql Escape用法
查看>>
Linux crontab定时执行任务
查看>>
JUnit编写单元测试代码注意点小结
查看>>
Quartus使用Verilog设计计数器步骤全解
查看>>
mysql root密码重置
查看>>
33蛇形填数
查看>>
Windows API一日一练(66)CreateWaitableTimer和SetWaitableTimer函数
查看>>
中秋节
查看>>
选择排序
查看>>
wpf datagrid 遍历行
查看>>