各位老大,请问一个在FORM。ONCREATE事件中的数据初始化问题(33分)

  • 主题发起人 主题发起人 ldwolf
  • 开始时间 开始时间
L

ldwolf

Unregistered / Unconfirmed
GUEST, unregistred user!
这个事件只有在第一次FORM。SHOW的时候才有用啊,如果我CLOSE了这个窗体后
再使用SHOW来显示窗体,ONCREATE就不执行了呀,如果我要在FORMX。SHOW的时候初始化一些数据,该怎么办?
另:窗体FREE后,要重新显示这个窗体,比如要重新显示的窗体为FORM3,
用TFORM3。CREATE(SELF)行不行?
 
在Form1.FormClose 事件中
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=cafree;
end;
可彻底释放FORM

但要想再次显示FORM 应加入
Application.CreateForm(TForm1, Form1);
就可以触发ONCREATE事件。
 
//再使用SHOW来显示窗体,ONCREATE就不执行了呀
Form对象没有创建如何能显得?!
 
form 有一个onshow事件,可以在那里写初始化的代码啊

如果form3已经free
可以用你的方法,但最好在前面加一个form3是否为nil的判断
 
TO jams:
我只是CLOSE而已,并没有FREE
 
有意思,你要FORM SHOW的时候做初始化为什么要在FORM CREATE 的时候处理呢?
为什么不用ONFORMSHOW呢?
 
>另:窗体FREE后,要重新显示这个窗体,比如要重新显示的窗体为FORM3,
>用TFORM3。CREATE(SELF)行不行?
??
FORM的CAPTION在生成的时候可以改的。但FORM3.CREATE(SELF)只能产生一个你在编程的时候
定义的FORM3。
 
这个问题菜的够可以,你真应该好好看看书。
ONCREATE是你生成FORM时才会激发的事件,它是为TFORM创建实例,分配内存地址等等,
如果你只是CLOSE掉FORM,而没有FREE掉,那么FORM实例并没有释放,SHOW只不过是把
这个实例再次SHOW出来而已,并不是又CREATE一遍。
 
多人接受答案了。
 
后退
顶部