读书人

unit中调用form,怎么在unit中判断form

发布时间: 2012-02-26 20:19:44 作者: rapoo

unit中调用form,如何在unit中判断form是否被关闭?
procedure TInfomitionShow.MapMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
if not Assigned(frmMapInfoShow) then
frmMapInfoShow:=TfrmMapInfoShow.Create(nil);
frmMapInfoShow.InfoList:=InfoList;
frmMapInfoShow.EditMemo;
frmMapInfoShow.Show;
end;
另一种写法:
procedure TInfomitionShow.MapMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
begin
if frmMapInfoShow=nil then
frmMapInfoShow:=TfrmMapInfoShow.Create(nil);
frmMapInfoShow.InfoList:=InfoList;
frmMapInfoShow.EditMemo;
frmMapInfoShow.Show;
end;

两种办法都无法判断弹出的非模态窗口是否已经手动关闭.请问,如何在unit中判断非模态窗口已经关闭?


[解决办法]
或者给窗体类加个属性,show的时候为0 ,onclose里面为1,根据属性来(show窗体前看属性)
[解决办法]
那你Free掉的同时有没有 = nil啊
你用FreeAndNil
这个时候你就可以用not Assigned()判断了!
[解决办法]
用api吧,findwindow或者findwindowex,看能否找到该窗体
[解决办法]
你在close事件里释放Action := cafree;
可以用not Assigned()判断了!
[解决办法]
可以使用FindWindow函数来查找窗口
也可以使用Screen.FormCount来进行遍历窗体,看看是否可以找到你的那个窗体

读书人网 >.NET

热点推荐