注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

使用 IntraWeb (5) - 页面布局之 TFrame  

2015-07-05 07:14:28|  分类: delphi xe8 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

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

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

新建工程后, 添加一个 New Frame:
使用 IntraWeb (5) - 页面布局之 TFrame - 你梦我圆 - 鑫淼梦园的博客

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

然后分别添加 TIWMenu、TMainMenu(TMainMenu 要附加在 TIWMenu 使用).
使用 IntraWeb (5) - 页面布局之 TFrame - 你梦我圆 - 鑫淼梦园的博客

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

双击 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 以方便其他窗口(页面)调用.
使用 IntraWeb (5) - 页面布局之 TFrame - 你梦我圆 - 鑫淼梦园的博客

然后就和添加其他控件一样, 从 Tool Palette 把刚刚制作的 TIWFrame1Template 添加到页面就成了.
  评论这张
 
阅读(31)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017