zoukankan      html  css  js  c++  java
  • uniGUI试用笔记(五)

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

    image

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

    image

    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;
  • 相关阅读:
    一道简单的递推题(快速幂+矩阵乘法优化+滚动数组)
    玲珑OJ 1129
    (转)Python函数式编程——map()、reduce()
    在windows中安装两个不同版本的Python
    Python 安装 pytesser 处理验证码出现的问题
    Python爬虫之HDU提交数据
    Python SGMLParser 的1个BUG??
    CF622F:The Sum of the k-th Powers
    LuoGuP3321:[SDOI2015]序列统计
    卡马克开方膜拜笔记
  • 原文地址:https://www.cnblogs.com/ChinaEHR/p/4012064.html
Copyright © 2011-2022 走看看