关于窗口的手动创建(50分)

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

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何非自动创建FORM呢??又如何把非自动创建的FORM从内存在完全移除呢??
比如我有一个FORM3,我现在要非自动创建它,所以我在程序里这样写

var
form3:Tform3
begin
form3:=Tform3.create(self);
form3.show;
end;

我在释放它的时候,这样写 free;问题就在于,我在释放FORM3的时候老出错,我用CLOSE,就没有出错,但这样达不到我要
的效果我想用FORM的时候就创建它,不用它的时候就从内存中移除它,不知道我用的方法对不对
 
var
form3:Tform3
begin
form3:=Tform3.create(self);
Try
form3.showmodal;
finally
form3.free;
end;


这个是模态窗口的做法。如果是非模态的话,应该在关闭后再FREE。
 
我在FORM3的一个BUTTON的CLICK事件里加入COLSE,第一次显示窗口和关闭没有问题,,
但第二次就出错了!!我把close换成hide,这就没有问题了,可是我又不
能肯定FORM3是否真的释放掉了!!
 
如果你非要用show的话,请在Form3的OnClose事件中写:
procedure TForm3.FormClose(Sender: TObject
var Action: TCloseAction);
begin
Action:=caFree;
end;

 
倒不是非要用show,我只是在用了楼上的那位老兄的代码,并不能解决问题

我还想知道FORM是否真的移出了内存了
 
你在什么地方关闭窗体啊?,是在它自身的窗体上还是在其它窗体上?
如果是在Form3自己上是不能直接调用Form3.Free的。只能用Close!!!
关于是否完全从内存中移出与你的Form3变量申明的位置有关,
其中的原理你可以找本书来看看

>>我还想知道FORM是否真的移出了内存了,
用其它程序查看一下不就行了,如:win98的资源
监视器
 
sorry,new version
你在什么地方关闭窗体啊?,是在它自身的窗体上还是在其它窗体上?
如果是在Form3自己上是不能直接调用Form3.Free的。只能用Close!!!
其中的原理你可以找本书来看看

>>我还想知道FORM是否真的移出了内存了,
用其它程序查看一下不就行了,如:win98的资源
监视器
 
用CREATE创建一个窗口,用SHOW方法显示他,然在窗口里关闭时加放release,我不知道这样做能否正确释放我所
创建的窗口。

我用2K的资源管理器看,显示一个窗口就升级一点内存,关闭后内存并没有降下来,如果我显示一个窗口,内存只会
保留在同一水平上,除非我显示的是别的窗口内存才有变化
 
多人接受答案了。
 
后退
顶部