• 使用 IntraWeb (5)



    IW 对 TFrame(还是之前那个), 这在页面布局中很有用.

    如果多个页面都有一个共同的部分(譬如页眉、页脚、菜单、边栏等), 可以将这些共同的部分放在一个 TFrame 中, 从而方便统一与修改.

    IW 也对 TMainMenu 提供了支持, 本例就做一个共享的菜单吧.

    新建工程后, 添加一个 New Frame:


    新建的 TIWFrame1 中, 已自动添加了一个 IWFrameRegion(TIWRegion), 先选一下 IWFrameRegion(控件要放在它上面);

    然后分别添加 TIWMenu、TMainMenu(TMainMenu 要附加在 TIWMenu 使用).


    之后的工作在设计时完成比较简单, 这里全部是用代码实现的.

    双击 Frame 窗体写代码(因为 TFrame 没有 OnCreate 事件, 所以它使用的是 IWFrameRegion.OnCreate):

    unit Unit2;
    
    interface
    
    uses
      SysUtils, Classes, Controls, Forms, IWVCLBaseContainer, IWColor, IWContainer, IWRegion, Vcl.Menus,
      IWVCLBaseControl, IWBaseControl, IWBaseHTMLControl, IWControl, IWCompMenu, IWHTMLContainer, IWHTML40Container;
    
    type
      TIWFrame1 = class(TFrame)
        IWFrameRegion: TIWRegion;
        IWMenu1: TIWMenu;
        MainMenu1: TMainMenu;
        procedure IWFrameRegionCreate(Sender: TObject);
        procedure MyOnClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    implementation
    
    {$R *.dfm}
    
    uses IWInit; //为使用 WebApplication
    
    {给子菜单准备的点击事件}
    procedure TIWFrame1.MyOnClick(Sender: TObject);
    begin
      WebApplication.ShowMessage(TMenuItem(Sender).Caption);
    end;
    
    procedure TIWFrame1.IWFrameRegionCreate(Sender: TObject);
    var
      mItemA, mItemB, mItem: TMenuItem;
    begin
      {提前设定这个 Frame 在其他容器中的位置与大小}
      Align := alTop;
      Height := IWMenu1.Height;
    
      {设置 IWMenu1}
      IWMenu1.Align := alTop;
      IWMenu1.AttachedMenu := MainMenu1; //关键代码
    
      IWMenu1.SubMenuStyle.BGColor := clWebWHITESMOKE;
      IWMenu1.SubMenuStyle.BorderColor := clWebWHITESMOKE;
      IWMenu1.SubMenuStyle.ItemBGColor := clWebWHITESMOKE;
      IWMenu1.SubMenuStyle.DisabledItemBGColor := clWebWHITESMOKE;
      IWMenu1.SubMenuStyle.SelectedItemBGColor := clWebWHEAT;
    
      {设置 IWFrameRegion}
      IWFrameRegion.ClipRegion := False; //关键代码
      IWFrameRegion.Height := IWMenu1.Height;
    
      {建立菜单, 这在设计时很容易}
      mItemA := MainMenu1.CreateMenuItem;
      mItemA.Caption := 'Menu A';
      MainMenu1.Items.Add(mItemA);
    
      mItemB := MainMenu1.CreateMenuItem;
      mItemB.Caption := 'Menu B';
      mItemB.OnClick := MyOnClick;
      MainMenu1.Items.Add(mItemB);
    
        mItem := MainMenu1.CreateMenuItem;
        mItem.Caption := 'Menu A1';
        mItem.OnClick := MyOnClick;
        mItemA.Add(mItem);
    
        mItem := MainMenu1.CreateMenuItem;
        mItem.Caption := '-';
        mItemA.Add(mItem);
    
        mItem := MainMenu1.CreateMenuItem;
        mItem.Caption := 'Menu A2';
        mItemA.Add(mItem);
    
          mItemA := mItem;
          mItem := MainMenu1.CreateMenuItem;
          mItem.Caption := 'Menu A21';
          mItem.OnClick := MyOnClick;
          mItemA.Add(mItem);
    
          mItem := MainMenu1.CreateMenuItem;
          mItem.Caption := 'Menu A22';
          mItem.OnClick := MyOnClick;
          mItemA.Add(mItem);
    end;
    
    end.
    


    按下面图示操作, 把刚才制作的 Frame 添加到 Tool Palette 以方便其他窗口(页面)调用.


    然后就和添加其他控件一样, 从 Tool Palette 把刚刚制作的 TIWFrame1Template 添加到页面就成了.

  • 相关阅读:
    软件评测师笔记(十二)—— 口令攻击相关
    软件评测师笔记(十一)—— 可靠性测试相关
    软件评测师笔记(十)—— 安全测试相关
    软件评测师笔记(九)—— 性能测试相关
    【猫狗数据集】利用tensorboard可视化训练和测试过程
    【colab pytorch】使用tensorboardcolab可视化
    【colab pytorch】使用tensorboard可视化
    【colab pytorch】FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy
    【猫狗数据集】使用学习率衰减策略并边训练边测试
    【猫狗数据集】划分验证集并边训练边验证
  • 原文地址:https://www.cnblogs.com/del/p/3766617.html
Copyright © 2020-2023  润新知