function RunShowModal(AForm:TForm;AFormClass: TFormClass;AFormCaption:String):Boolean; begin Result:=false; if not Assigned(AForm) then AForm:=nil; AForm:=AFormClass.Create(Application); try AForm.Caption:=AFormCaption; AForm.ShowModal; finally AForm.Free; AForm:=nil; end; Result:=true; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin action:=cafree; form1:=nil; end;
procedure form1.onclose(sender:Tobject); var handle:Thandle; begin findhandle(handle,form2); if handle<>0 form2.free; 不是findhandle就应该是findwindows 自己试一试
try
form2:=Tform2.create(self);
form2.show;
finally
form2.free;
end;
写如下语句
action:=CaFree;
就会自动FREE它自己
begin
Result:=false;
if not Assigned(AForm) then AForm:=nil; AForm:=AFormClass.Create(Application);
try
AForm.Caption:=AFormCaption;
AForm.ShowModal;
finally
AForm.Free;
AForm:=nil;
end;
Result:=true;
end;
begin
action:=cafree;
form1:=nil;
end;
form2:=Tform2.create(self);
form2.show;
finally
form2.free;
end;
//这样会一闪而过,要用2楼的方法。如果是showmodal建议这种方法。
var
handle:Thandle;
begin
findhandle(handle,form2);
if handle<>0 form2.free; 不是findhandle就应该是findwindows 自己试一试