动态窗体SHOW后如何在其他事件中关闭?(50分)

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

lyplay2

Unregistered / Unconfirmed
GUEST, unregistred user!
动态创建时:
if Form2=nil then Form2:=TForm2.Create(Self);
Form2.Show;

在另一个事件中,如果动态创建,
则关闭它
IF FORM2<>NIL THE FORM2.FREE;

IF FORM2<>NIL THE FORM2.FREE;
都会报错
如果真正关闭它?
 
试试:
Wnd: HWND;

Wnd := FindWindow('TForm2',nil);
if Wnd<>0 then PostMessage(Wnd, WM_CLOSE, 0, 1);
 
IF FORM2<>NIL THE
begin
FORM2.Close;
form2:=nil;
end;
 
if assigned(form2) then
begin
form2.free;
form2:=nil;
end;
 
应该是这样:
procedure TForm1.CloseForm2;
var
Handle: HWND;
begin
if Form2 <> nil then
begin
SendMessage(Form2.Handle, WM_CLOSE, 0, 0);
repeat
Handle := FindWindow('TForm2', Form2.Caption);
Application.ProcessMessages;
until Handle = 0;
FreeAndNil(Form2);
end;
end;
 
直接将其关闭。
if not assigned then fomr2:=tform2.create(self);
然后关闭
 
多人接受答案了。
 
后退
顶部