如何检测一个窗口已关闭,(包括MDI子窗口)(50分)

  • 主题发起人 主题发起人 ht_yx
  • 开始时间 开始时间
H

ht_yx

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,在主窗口中箱子窗口中的控件写东西常因为子窗口已关闭而出错,不知如何检测。还请达人指点。
 
if assigned(Tform1) then
showmessage('form1已经创建')
 
下面的代码可以供你参考:
procedure DeactiveForm(var theForm: TComponent; aContainer: TWinControl);
var
form: TForm;
begin
try
Form := nil;
if Assigned(aContainer) then
Form := Tform(GetParentForm(aContainer));
if Form <> nil then begin
Form.KeyPreview := false;
Form.OnKeyDown := nil;
end;
if Assigned(theForm) then
begin
if UpperCase(theForm.Name)='WBHELP' then exit;
if theForm is TMDIBaseForm then
begin
TMDIBaseForm(theForm).ReleaseForceClose;
TForm(theForm).Close;
end else if theForm is TForm then
begin
TForm(theForm).Close;
end;
theForm.Free;
end;
theForm := nil;
except
on e: Exception do
MessageBox(Application.Handle, Pchar('意外错误:' + e.message), '错误', MB_OK + MB_ICONWARNING);
end;
end;
 
如子窗体form2
form2的Close事件写 form2:=nil;
判断用 assigned(form2)
 
这个问题比较简单,你可以网上查一下,看看一些多文档窗口程序原码。主要就是检测以下打开窗口的数量,还可以检测具体的窗口。本来有原码,不过不在身边。如果有需要,下次贴给你。
 
好了我去试试
 
后退
顶部