为什么关闭子窗体时发生错误?以下是相关代码:
////建立窗体/////////////////////////////////////////////////////////
begin
if not assigned(frmAFMDay) then
begin
frmAFMDay:=TFrmAFMDay.Create(Application);
end;
frmAFMDay.Show; end;////关闭窗体/////////////////////////////////////////////////////////
procedure TfrmAFMDay.BitBtn1Click(Sender: TObject);
begin
frmAFMDay.Close;end;////关闭事件/////////////////////////////////////////////////////////
procedure TfrmAFMDay.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;end;end.
////建立窗体/////////////////////////////////////////////////////////
begin
if not assigned(frmAFMDay) then
begin
frmAFMDay:=TFrmAFMDay.Create(Application);
end;
frmAFMDay.Show; end;////关闭窗体/////////////////////////////////////////////////////////
procedure TfrmAFMDay.BitBtn1Click(Sender: TObject);
begin
frmAFMDay.Close;end;////关闭事件/////////////////////////////////////////////////////////
procedure TfrmAFMDay.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;end;end.
frmAFMDay := nil;
Application.CreateForm(TForm2,Form1) ;
Form2.Show ;---------------Action := CaFree ;没有错误
用TfrmADMDay.Create(Application)
TfrmADMDay.Create(frmMain) 都不行!
Form2 : MDIChild ;----------------------
不行 ?
procedure TfrmAFMDay.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
frmAFMDay:=nil;
end;
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms[i].ClassType=FormClass then
begin
Child:=Screen.Forms[i];
if Child.WindowState=wsMinimized then
ShowWindow(Child.handle,SW_SHOWNORMAL)
else
ShowWindow(Child.handle,SW_SHOWNA);
if (not Child.Visible) then Child.Visible:=True;
Child.BringToFront;
Child.Setfocus;
TForm(fm):=Child;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
end;这样你每次调用即可:如: OpenForm(TfrmChild1,frmChild1, self);别忘了在close的时候: Action:=caFree;