关于动态创建窗体的疑问

NetworkConfigurer 2011-02-15 04:54:31
在网上查看了一些资料,说动态创建窗体可以节省资源
我有些疑惑
例如 我在程序中新建了几个窗体 Form1 Form2等,然后在这两个窗体上摆好各种控件,写好各种控件的事件
然后我在Form1中的Button1点击事件中动态创建窗体Form2
使用下列的语句
procedure Tform1.Button1Click(Sender: TObject);
begin
inherited;
Form2:=TForm2.Create(Self);
Form2.ShowModal;
Form2.Free;
end;

当关闭Forn2时,在Form2的返回或关闭事件中写
ModalResult:=mrOK;或者ModalResult := mrCancel;


这样算不算动态创建窗体呢?
如果算,那我关闭Form2时,该如何彻底释放Form2所占的资源呢?在Form2的返回按钮事件或者关闭事件里应该怎么写呢?

另:如果一个程序中使用过多的窗体和控件,会不会对程序的性能有影响呢?例如有一个窗体上放置了很多的DB控件,例如
DBEdit DBCheckBox 和GroupBox,会不会很占资源?

各位高手有没有相关的窗体动态生成和关闭的代码例子?先谢过了!
...全文
101 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyounihao 2011-02-23
  • 打赏
  • 举报
回复
Frm_PassChange:=TFrm_PassChange.create(self);
try
Frm_PassChange.ShowModal;
finally
if Frm_PassChange<>nil then
begin
Frm_PassChange.free;
Frm_PassChange:=nil;
end;
end;
newfang 2011-02-23
  • 打赏
  • 举报
回复
俺平时的使用方式:

function Form2Show: Integer;
begin
with TForm2.Create(nil) do
begin
try
ShowModal;
finally
Result := ModalResult;
Free;
end;
end;
end;

调用时候:Form2Show;
MaoMaoDelphi 2011-02-19
  • 打赏
  • 举报
回复
下载东东分数不够,要分来了
luo000102 2011-02-19
  • 打赏
  • 举报
回复
楼主的代码应该算是动态创建窗体,在调用之前应该在Project-options-from 中将窗体设置为非自动创建
,不用窗体的时候Free就可以了,控件使用多了对程序的运行肯定是会有影响的,尤其是创建的许多对象而没有释放,那么程序就会相当的慢~
NetworkConfigurer 2011-02-18
  • 打赏
  • 举报
回复
怎么没人了呢,是现在Delphi用的少吗
zkroy36 2011-02-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zzn007 的回复:]
首先,这就是动态创建窗体。就是在需要使用的时候才创建窗体,不用就释放。
其次,释放窗体的资源,可以在关闭窗体的close和destroy事件中写。
最后,如果控件使用过多,当然占用系统资源了,
建议尽量减少使用控件
[/Quote]
UP+1
NetworkConfigurer 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]

算,但不要用Form2,用frm: TForm2
释放:FreeAndNil(form2)
[/Quote]

谢谢啦,能不能给的代码例子详细多一点点,呵呵
zzn007 2011-02-15
  • 打赏
  • 举报
回复
首先,这就是动态创建窗体。就是在需要使用的时候才创建窗体,不用就释放。
其次,释放窗体的资源,可以在关闭窗体的close和destroy事件中写。
最后,如果控件使用过多,当然占用系统资源了,
建议尽量减少使用控件
bdmh 2011-02-15
  • 打赏
  • 举报
回复
算,但不要用Form2,用frm: TForm2
释放:FreeAndNil(form2)

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧