Delphi 窗体的创建和释放
2018-03-02 09:07
381 查看
Delphi中的窗体分为模式窗体和无模式窗体。二者的区别在于,用户可以在无模式窗体和其他窗体之间切换。这样,用户就可以同时工作于一个应用程序的几个部分。Delphi中窗体的初始化有两种情况,动态创建,和自动创建。通过show显示一个无模式窗体,ShowModal显示一个模式窗体。窗体有创建对应的也要考虑释放问题。当关闭一个窗体时,窗体并没有真正从内存中释放掉,它仍然存在于内存中,除非关闭了主窗体。因为模式窗体于无模式窗体的不同,所以二者的释放处理也有不同。
ModalForm := TModalForm.Create(Application);//动态创建窗体
try
ModalForm.ShowModal;//显示模式窗体
finally
ModalForm.Free; //释放窗体实例
//ShowMessage(BoolToStr(ModalForm = nil));
ModalForm := nil; //把窗体变量设为nil
//ShowMessage(BoolToStr(ModalForm = nil));
end;
end;
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变量设为nil
end;
模式窗体的创建与释放
因为模式窗体可以判断什么时候关闭窗体,可以用一下代码来创建和释放窗体。beginModalForm := 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变量设为nil
end;
相关文章推荐
- delphi学习点滴——窗体创建和释放
- Delphi窗体创建释放过程及单元文件小结
- Delphi窗体创建释放过程及单元文件小结(转)
- Delphi 窗体的创建 和 释放
- delphi 窗体的创建和释放
- delphi 窗体的创建和释放
- delphi 窗体的创建和释放
- delphi 窗体的创建和释放
- Delphi 对象的创建(create)与释放(free/destory)
- delphi 创建无窗体应用程序
- Delphi下创建异形窗体
- Delphi 创建封装窗体的 DLL 实例
- Dll学习一_Dll 创建并动态引用窗体且释放窗体Demo
- delphi开发日志——基窗体,使用面向对象编程的编程思想创建基类
- Delphi动态创建组件,并释放内存
- MFC使用Create创建创建窗体后释放内存的方法
- delphi释放窗体后如何再次载入窗体
- Dll学习一_Dll 创建并动态引用窗体且释放窗体Demo
- DELPHI 动态 创建和释放 多个 EDIT 控件
- delphi开发日志——基窗体,使用面向对象编程的编程思想创建基类