如何判断一个窗口已经存在..在打开时关闭存在的..打开新的窗口! ( 积分: 50 )

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

Jj1985

Unregistered / Unconfirmed
GUEST, unregistred user!
if (IsWindow(CheckRecordForm.Handle)) then
begin
showmessage('dd');
CheckRecordForm.Close;
CheckRecordForm.free;
CheckRecordForm:=nil;
end;
CheckRecordForm := TCheckRecordForm.Create(Application);
CheckRecordForm.Show; 不行..

if assigned(CheckRecordForm) then
begin
showmessage('dd');
CheckRecordForm.free;
CheckRecordForm:=nil;
end;
CheckRecordForm := TCheckRecordForm.Create(Application);
CheckRecordForm.Show; 也不行..
 
如果CheckRecordForm是ShowModal出来的,不能用CheckRecordForm.Close去关闭.
 
对于非模式窗口
在调用时
if not Assigned(aform) then
aform:=taform.create(nil);
try
aform.show;
except
//
end;

在aform窗口中
onclose里设 Action:cafree;
ondestroy里设 aform:=nil;
 
while i<application.ComponentCount do
if (application.Components is Tform) and Tform(application.Components).Visible then
begin
if (application.Components=self) then
inc(i)
else begin
if Tform(application.Components).name='你的窗口名称' then
Tform(application.Components).Close;
inc(i);
end;
end else inc(i);
 
你不要用FREE来关闭窗口就解决了哈,改成
if assigned(CheckRecordForm) then
begin
showmessage('dd');
CheckRecordForm.CLOSE;
end;
application.Createform(TCheckRecordForm,CheckRecordForm);
CheckRecordForm.Show;
这样就行了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部