Delphi MDI子窗体

摘要:
为了避免程序启动时即创建子窗体,可通过C++Builder的集成环境IDE上的菜单ProjectOptions上的Form标签页,将所有子窗体从Auto-createforms窗口中,移至Availableforms窗口。⑤主窗体的重要属性的使用ActiveMDIChild属性,指向当前活动的子窗体。MDIChildCount属性,用于判断已经创建的子窗体的总数。MDIChildren属性,是一个TForm*类型的指针数组,指向目前存在的所有的子窗体。

用MDI实现浏览子窗口,具有窗口管理功能,同屏观看多个网页的内容
① 多文档窗体(MDI)
MDI窗体是一种具有主子结构的窗体体系,微软的Word便是其中的一个典型例子。MDI体系中至少需要两种窗体,只能将其中之一设置为主窗体,其余窗体全部则全部为子窗体,主窗体负责子窗体的管理、切换等工作。自然,子窗体上承载的内容可各不相同。Tidy浏览器最终实现了三种不同的窗体:主窗体、浏览子窗体、源代码子窗体。
② 设置窗体类型
我们通过窗体的FormStyle属性设置窗体类型,它是一个枚举类型,可取的值包括:fsNormal, fsMDIChild, fsMDIForm, fsStayOnTop。分别对应:普通窗体, MDI子窗体,MDI主窗体, 普通顶部窗体。
值得注意的是,窗体的FormStyle属性应在设计期确定,运行期间更改是不可取的。
③ 子窗体的创建
一般而言,主窗体在应用程序启动时自动创建,子窗体通常在响应用户的有关动作之后才创建。并且,同一类子窗体实例可以多次被创建。为了避免程序启动时即创建子窗体,可通过C++Builder的集成环境IDE上的菜单ProjectOptions上的Form标签页,将所有子窗体从Auto-create forms窗口中,移至Available forms窗口。
④ 子窗体的关闭
MDI窗体技术中另一个值得注意的问题是,用户点击MDI子窗体的关闭按钮企图关闭子窗体,系统默认的动作却是将其最小化。为了真正的实现关闭子窗体并释放所占用的内存,可在OnClose事件中将引用参数Action设置为caFree。Action的其他可取值为:caNone,caHide,caMinimize,分别对应无动作、隐藏、最小化。
⑤ 主窗体的重要属性的使用
ActiveMDIChild属性,指向当前活动的子窗体。此乃TForm *类型的指针,必要时可强制转换为任意类型的子窗体实例。
MDIChildCount属性,用于判断已经创建的子窗体的总数。
MDIChildren属性,是一个TForm *类型的指针数组,指向目前存在的所有的子窗体。结合MDIChildCount属性,可以实现子窗体的遍历。
⑥ 子窗体之间的切换
直接引用主窗体的方法Previous()、Next(),可以实现子窗体的前、后切换。
⑦ 子窗体的布局
直接引用主窗体的方法Tile()、Cascade(),可以实现子窗体的平铺、层叠布局。

免责声明:文章转载自《Delphi MDI子窗体》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(void)0和0的区别及用法Windows 8.1系统及实用软件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Delphi2007升级到Delphi 2010总结

这两天把一个使用Delphi2007成功升级到了Delphi2010。升级途中很艰辛,总结了 以下经验与大家分享。另外,D7使用的第三方组件,由于官方没有发布For Delphi2010的更新,修改的第三 方组件列表见文章尾部。1,PChar因为Delphi不支持无类型指针的算术运算,很多程序员使用 PChar来代替Pointer,即使指针指向目标并不是P...

C# winform ——界面美化技巧

C# winform 界面美化技巧(扁平化设计) 转 关于C#界面美化的一些小技巧在不使用第三方控件如 IrisSkin 的前提下,依然可以对winform做出让人眼前一亮的美化首先,我们先来实现主界面的扁平化 此处分为两个步骤,第一步是更改winform自带的MainForm窗体属性,第二步是添加窗体事件。将主窗体FormBorderStyle更改...

delphi函数调用约定

指令 参数存放位置 参数传递顺序 参数内存管理 使用地方 Register CPU寄存器 从左到右 被调用者 默认,published属性存取方法必须使用 Pascal 栈 从左到右 被调用者 向后兼容 Cdecl 栈 从右到左 调用者 调用c/c++共享库 Stdcall 栈 从右到左 被调用者 API调用 Safecall 栈...

delphi计算两个时间差-转

uses DateUtils;   var S1, S2: string; T1, T2: TDateTime; D, H, M, S: Integer; Value: Int64; begin S1 := '2015/09/23 15:44:50'; S2 := '2013/09/22 16:47:51'; T1 := Str...

DELPHI 字符串分割处理

DELPHI 字符串分割处理 Code 1Function FindStr(BegSprStr,EdSpStr:String;var Source:String):String;  2var  3BegStr1Len,EdSpStr2Len,BegStr1Index,EdSpStr2index:integer;  4Temp:String;  5begi...

delphi 各新版本特性收集

增强的数据库浏览器 BDP 数据提供者相应的数据库浏览器已经在几个地方作了增强。 现在可以简单的将数据从一个BDP数据提供者迁移到另外一个,这个功能能够允许你将一个数据表从一个BDP数据提供者复制另外一个上面. 这样会复制和重新建立复制目标数据表的元数据, 即使这个数据根本就是来之不同的数据源, 如将Oracle的数据迁移到MSSQL上.这和BdpCopy...