delphi 窗体的创建和释放
来源:互联网 发布:新疆的网络被监控 编辑:程序博客网 时间:2024/06/10 17:12
http://www.cnblogs.com/chenmfly/p/4770490.html
delphi 窗体的创建和释放
Delphi中的窗体分为模式窗体和无模式窗体。二者的区别在于,用户可以在无模式窗体和其他窗体之间切换。这样,用户就可以同时工作于一个应用程序的几个部分。Delphi中窗体的初始化有两种情况,动态创建,和自动创建。通过show显示一个无模式窗体,ShowModal显示一个模式窗体。窗体有创建对应的也要考虑释放问题。当关闭一个窗体时,窗体并没有真正从内存中释放掉,它仍然存在于内存中,除非关闭了主窗体。因为模式窗体于无模式窗体的不同,所以二者的释放处理也有不同。
模式窗体的创建与释放
因为模式窗体可以判断什么时候关闭窗体,可以用一下代码来创建和释放窗体。
begin ModalForm := TModalForm.Create(Application);//动态创建窗体 try ModalForm.ShowModal;//显示模式窗体 finally ModalForm.Free; //释放窗体实例 //ShowMessage(BoolToStr(ModalForm = nil)); ModalForm := nil; //把窗体变量设为nil //ShowMessage(BoolToStr(ModalForm = nil)); end;end;
非模式窗体的创建与释放
begin Form1 := TForm1.Create(Application); Form1.show;end;
用上述代码会导致每次都创建窗体实例,从而消耗了大量的内存。我们可以考虑让窗体只创建一次,同时在窗体关闭的时候将释放掉。
begin if not Assigned(ModalLessForm) then //确保只创建一个窗口 begin ModalLessForm := TModalLessForm.Create(Application); end; ModalLessForm.Show;end;
以上代码就是一个单例模式,确保只创建一次。当关闭窗体后,如果希望在内存中释放掉,就要处理器onClose事件,吧Action设为caFree,同时还要在onDestroy事件中将窗体变量指向nil。
procedure TModalLessForm.FormClose(Sender: TObject; var Action: TCloseAction);begin action := caFree; //当关闭窗口时释放窗体end;procedure TModalLessForm.FomDestroy(Sender: TObject);begin ModalLessForm := nil; //在窗口销毁时,把modalLessForm变量设为nilend;
0 0
- delphi 窗体的创建和释放
- Delphi 窗体的创建 和 释放
- delphi 窗体的创建和释放
- delphi 窗体的创建和释放
- delphi学习点滴——窗体创建和释放
- 获得 MDI 窗体创建和释放的方法
- Delphi MDI 子窗体的创建和销毁 [zhuan]
- mdi窗体的创建与释放
- windows 窗体 的实例化和释放
- Delphi窗体的创建与销毁基础教程
- delphi 创建启动窗体
- delphi 指针的内存分配和释放
- Delphi的内存分配和释放
- DELPHI 动态 创建和释放 多个 EDIT 控件
- DELPHI 动态 创建和释放 多个 EDIT 控件
- dephi窗体的释放
- 在Delphi 中用程序实现自定义窗体的创建和显示顺序(1)
- 在Delphi 中用程序实现自定义窗体的创建和显示顺序(2)
- XTTS from solaris sparc to linux
- 第八周 顺序串算法
- 生成github的 ssh key
- 发现一个支持神经网络可视化的好工具-Netscope
- 文件传输协议 ftp 协议
- delphi 窗体的创建和释放
- RS232,RS422,RS485,UART,IIC,SPI总结
- 大数据基准测试 TPC-H、TPC-DS
- gimp
- JSP:Get 与 post 的区别
- Ubuntu编译安装Node.js
- php 移动或重命名文件(图片)到另一目录下
- 打印字符串、复制字符串、连接字符串
- linux 编译指定库、头文件的路径问题