在MDI中主窗体为Form0,
子窗体分别为Form1,Form2我用Form1动态调用Form2没问题,
procedure Tform1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
form1:=NIL;
end;
procedure Tform2.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
form2:=NIL;
end;
第一种情形:如果当Form1动态调用Form2后,先关闭Form2,然后再关闭Form1,这时候如果继续用Form1动态调用Form2也没问题
第二种情形:如果当Form1动态调用Form2后关闭Form1,那么Form2就自动也关闭,这时如果继续用Form1动态调用Form2就出错,是什么原因呢?
子窗体分别为Form1,Form2我用Form1动态调用Form2没问题,
procedure Tform1.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
form1:=NIL;
end;
procedure Tform2.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
form2:=NIL;
end;
第一种情形:如果当Form1动态调用Form2后,先关闭Form2,然后再关闭Form1,这时候如果继续用Form1动态调用Form2也没问题
第二种情形:如果当Form1动态调用Form2后关闭Form1,那么Form2就自动也关闭,这时如果继续用Form1动态调用Form2就出错,是什么原因呢?
procedure Tgcwhf.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;procedure Tgcwhf.FormDestroy(Sender: TObject);
begin
gcwhf :=nil;
end;MDI主窗体上这么写
procedure TFrmMain.N27Click(Sender: TObject);
begin
if not assigned(子窗体) then
begin
子窗体 := T子窗体.Create(Application);
子窗体.show;
end;
end;