没有实例化的问题,帮忙解决,谢谢(50分)

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

ganis

Unregistered / Unconfirmed
GUEST, unregistred user!
var
frmBlack :TfrmBlack;
begin
if not Assigned(frmBlack) then
begin
frmBlack:=TfrmBlack.Create(self);
frmBlack.Show;
end
else
begin
free;
end;
end;
为什么frmBlack就是创建不了?
我知道是没有实例化的问题,可是如果我在if之前加上frmBlack:=nil,那如果frmBlack
已经show了,就没法free了,帮帮我谢谢
 
var
frmBlack :TfrmBlack;
必须是在应用之前frmBlack:=Nil;
 
错的。
var
frmBlack :TfrmBlack;
begin
if not Assigned(frmBlack) then
begin
frmBlack:=TfrmBlack.Create(self);
frmBlack.Show;
end
else
begin
free;
frmBlack:=nil;
//[blue]加这句[/blue]
end;
end;
 
把frmBlack:=nil;
放在if前面根本没达到要求,如果form已经show出来了,我再点按钮
form应该free,如果吧frmBlack:=nil;
放在前面是在按button的时候告诉程序frmBlack已经为nil了,程序将再次create form而不是free
如果把frmBlack:=nil;
放在else
里面也不对,因为第一次运行都进不去,建立不了form
 
不要再进行变量frmBlack声明了!
uses ufrmBlack;//例如 frmBlack的Unit是uFrmBlack
....
begin
if not Assigned(frmBlack) then
begin
frmBlack:=TfrmBlack.Create(Application);
frmBlack.Show;
end
else
begin
frmBlack.free;
frmBlack:=nil;

end;
end;
 
如果把frmBlack:=nil;
放在else
里面也不对,因为第一次运行都进不去,建立不了form????
什么,目标初始化不是 nil?????,是什么?
那有可能你的Application已经帮你自动建立了,不要自动建立!
 
我没自动建立啊,所以我纳闷呢,我还反复看了一下是不是自动建立的form呢
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部