如何动态建立一个form?

sdyouyun 2003-08-22 09:33:36
在一个unit里建好一个form之后,俺想建一个类,把这个form作为这个类的一个成员

然后用这段代码显示这个窗体
Application.CreateForm(TForm1, Form1);
Form1:=TForm1.Create(nil);
Form1.show;
end;
编译没问题,窗体显示也很正确,可是关闭窗体出错了,关不了,提示00490c4e
哪儿做错了?或者该怎么做?
...全文
38 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ly_liuyang 2003-08-23
  • 打赏
  • 举报
回复
注意Memory Leak问题呀
tiexinliu 2003-08-23
  • 打赏
  • 举报
回复
这样更好一点,先检查是否存在,不存在则创建
if not Assigned(mainfrm) then mainfrm:=Tmainfrm.Create(application);
mainfrm.showmodal;
WBaby 2003-08-23
  • 打赏
  • 举报
回复
没有释放窗体资源,

try
Application.CreateForm(TForm1, Form1);
Form1:=TForm1.Create(nil);
Form1.show;
finally
Form1.free;
end;
ysycrazy 2003-08-23
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var form2:TForm1;
begin
try
form2:=TForm1.Create(Application);
form2.Caption:='This is second form!';
form2.ShowModal;
finally
form2.free;
end;
end;
kingofghost 2003-08-22
  • 打赏
  • 举报
回复
在关闭窗体的时候要把窗体占用的内存全部释放掉,delphi不能自动回收资源的,应该是这样,代码同楼上。
delphi0302 2003-08-22
  • 打赏
  • 举报
回复
var Form1:TForm1;
Form1:=TForm1.Create(application);
Form1.showModal;


在form1.onclose事件中写
begin
Form1:=nil;
Action:=caFree;
end;
wdong18 2003-08-22
  • 打赏
  • 举报
回复
动态建立form就是对话框啊。如果建立了,但是不收回空间会出问题吧。
var Form1:TForm1;
Form1:=TForm1.Create(nil);
if form1.showmodal=mrok then
begin

end;
form1.free;
catty1338 2003-08-22
  • 打赏
  • 举报
回复
你有没有在主程序里uses 那个新建程序
implementation
uses form2;

sdyouyun 2003-08-22
  • 打赏
  • 举报
回复
不行啊
还是出错
yousoft2013 2003-08-22
  • 打赏
  • 举报
回复
var Form1:TForm1;
Form1:=TForm1.Create(nil);
Form1.show;

安全点用这个:
Application.CreateForm(TForm1, Form1);
Form1.show;

5,388

社区成员

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

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