使用 IntraWeb (5) - 页面布局之 TFrame
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 添加到页面就成了.
转载于:https://www.cnblogs.com/martian6125/p/9630991.html
使用 IntraWeb (5) - 页面布局之 TFrame相关推荐
- 使用 IntraWeb (4) - 页面布局之 TIWRegion
TIWRegion 是容器, 首先布局好它(们). 在空白窗体上添加 4 个 TIWRegion, 然后: uses System.UITypes; //为使用 Anchors 属性{下面代码中的设置 ...
- unigui的页面布局使用
(unigui的页面布局还是很强大的,基本什么的排版都能搞好.前面部分为原文章翻译,翻译不一定很准确,就能看吧,后面有使用说明,有什么不明白的欢迎加我QQ(910300653)一起交流学习) 一.布局 ...
- table和div在页面布局上应该注意的问题
在这篇文章开篇,我先纠正一下我之前写的一篇入门文章的错误,还是先引用一下比较官方的说法吧,避免再次误导各位新手 " <!DOCTYPE> 声明必须位于 HTML5 文档中的第一行 ...
- xml信息管理系统_WPF信息管理系统项目实战教程二:使用XAML实现页面布局
首页面布局设计 XAML(Extensible Application Markup Language),可扩展应用程序标记语言的使用使得C#桌面应用程序开发前后端实现真正分离.前端人员可使用该标记语 ...
- wordpress page显示未找到页面_通过Avada主题了解网页基本结构和页面布局
Avada主题是目前很流行的国外建站主题,我们在学习 avada主题建站初期有必要先了解网页基本结构和页面布局情况,这样对后面使用 avada主题建站,了解 avada主题Theme Options设 ...
- 深度解析使用CSS单位px、em、rem、vh、vw、vmin、vmax实现页面布局
1.px:绝对单位,页面按精确像素展示 2.em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值. em ...
- 企业网络推广——网站页面布局优化对于企业网络推广来说非同一般
一般站长们在进行网站优化期间都不会忽视对网站页面的优化,反而是将大部分精力都集中在网站首页的优化工作上,毕竟网站页面的优化可以为目标用户群体创建一个他们喜爱并且能够被搜索引擎顺利抓取.识别的页面,从而 ...
- SharePoint 2013 入门教程之创建页面布局及页面
原文:SharePoint 2013 入门教程之创建页面布局及页面 在SharePoint的使用过程中,页面布局和页面时很重要的两个概念,主要用于数据个性化展示,下面,我们简单介绍一下SharePoi ...
- Ext Js MVC系列二 利用Application和Viewport进行应用程序初始化和页面布局
通过上一篇我们已经对Ext js MVC框架开发有了一个大概的了解,这一篇将利用Application和Viewport进行应用程序的初始化和页面布局.我想从以下几方面来进行总结. 1,通过Ext.L ...
最新文章
- 《Windows核心编程》学习笔记(10)– 同步设备I/O与异步设备I/O
- angular5绑定html,在Angular模板绑定中剥离html
- 逃出你的肖申克(一):为什么一定要亲身经历了之后才能明白?
- Windows Azure 社区新闻综述(#70 版)
- 计算机为什么启动二次才能打开,为什么电脑要2次重启才能启动显示器那
- python打印多个变量_在Python中打印多个变量
- Android--使用剪切板在Activity中传值
- 智能时代,企业如何“聚数为智”加速数字化转型?
- PHP中获取文件扩展名的N种方法
- 那个名为 XROS 的操作系统,倒在了元宇宙浪潮中!
- 即将发布的 JDK 11 包含了什么?
- 在鉴定名画真伪这件事上,专家可能要被AI代替了
- 除了快,5G 有哪些关键技术?
- Android仿微信语音聊天功能
- JavaScript实现Sleep效果
- 最小二乘法的对偶形式(CVX)
- 指挥调度中心大屏幕用液晶拼接屏还是DLP大屏?
- C语言show用法,show的用法及句型
- QT程序设置界面显示风格
- 自动控制原理(2) - 线性化和传递函数