Delphi MDI 子窗体的创建和销毁 [zhuan]
来源:互联网 发布:linux vi 替换字符串 编辑:程序博客网 时间:2024/05/16 15:46
文章来源: Delphi MDI 子窗体的创建和销毁
1.如果要创建一个mdi child,先看是否有这个child 存在,如果有,则用它,如果没有再创建
//该函数判断MDI 子窗体是否存在,再进行创建和显示
function isInclude(formclass: TFormClass): boolean;
var
i: Integer;
form: TObject;
begin
result := false;
for i := 0 to frmMain.MDIChildCount do
begin
form := frmMain.MDIChildren[i];
if form is formclass then
result := true;
end;
end;
//例如:打开frmAbout这个子窗体
procedure TfrmMain.actAboutExecute(Sender: TObject);
begin
if not isInclude(TfrmAbout) then
// if not Assigned(frmAbout) then
begin
frmAbout := TfrmAbout.Create(Self);
frmAbout.Caption := '关于';
frmAbout.Show;
end
else
frmAbout.Show;
end;
http://www.whois.com/whois/pc100.net
2. 如果判断一个form是否存在,用 assigned(aForm)来看是否有创建并指向这个instance. (需要注意form destroy掉时,aForm 指标并没有free掉,要注意下一条的细节。
3. 对于mdi child 的销毁,注意以下几项:
①关闭mdi, 用form.close方法。
②在 onClose事件处理中,需要判断是否可以 free掉, 用 Action := caFree
③销毁form时,需要释放form参数的指针内容。 aForm := nil.
Delphi中MDI子窗口的关闭方式默认为缩小而不是关闭,所以当你单击子窗口右上角的关闭按钮时会发觉该子窗口只是最小化,而不是你预期的那样被关闭。解决办法是在子窗口的OnClose事件处理过程中加入如下代码,示例:
procedure ChildForm.OnClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
Delphi为一个Form的关闭行为指定了四种方式,分别是:
caNone: 禁止Form被关闭
caHide: Form不被关闭,但是被隐藏。被隐藏的Form仍然可以被程序访问。
caFree: Form被关闭,并且释放其占用的资源。
caMinimize: Form被最小化而不是被关闭,这是MDI子窗口的默认关闭行为。
原文出自:http://www.cnblogs.com/python001/
- Delphi MDI 子窗体的创建和销毁 [zhuan]
- delphi的DLL封装MDI子窗体
- Delphi窗体的创建与销毁基础教程
- Windows应用程序C#创建MDI父窗体和子窗体
- C#中MDI子窗体的创建方法
- MDI技巧之屏蔽启动时创建的子窗体
- WINFORM 中mdi结构的子窗体不重复创建
- MDI的子窗体问题
- Delphi – 在DLL中保存并创建MDI子窗体(翻译)
- 在CMainFrame中创建MDI子窗体
- Delphi中的窗体创建与销毁
- Delphi 创建MDI窗体的问题,不知是delphi的bug还是我问题
- DELPHI中MDI子窗口的关闭 和打开
- 获得 MDI 窗体创建和释放的方法
- 锁定MDI子窗体的位置
- mdi多层子窗体的实现
- MDI 激活子窗体的方法
- 新建MDI子窗体
- django中的ajax实现(POST)--转载备份
- MFC中三个重要的宏
- MFC关于Radio Button控件选择的问题
- 【SSH进阶之路】Spring的IOC逐层深入——依赖注入的两种实现类型(四)
- 20150122Review
- Delphi MDI 子窗体的创建和销毁 [zhuan]
- Java使用tomcat连接Sql server 2008数据库
- django中的ajax实现(GET)--转载备份
- 1026. 程序运行时间
- poj 1328 Radar Installation(贪心)
- php学习:array->判断值在数组中是否存在
- Oracle trunc()函数的用法
- Excel的COUNTIFS的用法
- 3.Java NIO系列教程之Buffer