哦,你是不是在FORM2。FREE以后,又在FORM1中FORM2。SHOW啊?
加入一个判断:
if assign(form2) then
form2.show
else
begin
form2:=tform2.create(self);
form2.show;
end;
加入一个判断:
if assign(form2) then
form2.show
else
begin
form2:=tform2.create(self);
form2.show;
end;
解决方案 »
- 装载了多个bpl, 关闭程序时, 过一会程序在进程列表才消失, 如何快速关闭程序呢?
- 使用access数据库,查询时间的时候出错,急!!!!请各位大侠多多帮忙,不胜感谢!!!
- 如何更新日期
- delphi在家里能运行,到了学校机房就不能运行(学校机房语言是德语)
- delete from aaa.dbf 后,如何彻底清空记录?
- 怎样把某些端口屏蔽掉??
- 控件可以显示Tiff格式的图片??????急
- 请问在delphi 中用对access数据库操作,怎样新建一个表??谢谢了
- 關於時間運算:Time 加上一分鐘怎麼寫呢?Time+60,好象不對。
- FastReport问题
- 急!!!!!!在给等
- 这个sql语句怎么写,多谢了
执行,按form1的按钮,弹出form2,再按form2的按钮,这时form2没有了,form1也死掉了!
if assigned(form2) then
form2.show
else
begin
form2:=tform2.create(self);
form2.show;
用SHOW就没有问题,
或者使用SHOWMODAL时,在FORM2的ONCLOSE中写入ACTION:=CAFREE;
也可以FREE掉FORM2。不会出问题
不过要重新打开时,需要重新创建Form2。这样才能打开。
最好的做法是删除Unit2中的变量form2。
然后在打开Form2中,申明TForm2的局部变量。而不是全局变量Form2
代码如下:
var
frmNew: TForm2;
begin
frmNew := TFrom2.Create(nil);
try
frmNew.ShowModal;
finally
frmNew.Free;
end;
end;