这是主表单中的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
AForm : array [1..5] of TForm;
i : Integer;
begin
For i:= 1 to 5 do begin
AForm[i]:= TForm.Create(nil);
With AForm[i] do begin
Parent := Self;
BorderStyle:= bsSizeToolWin;
OnClose <<< Here i would like change Action to caFree
FormStyle:=fsMDIChild;
Show;
Caption:=IntToStr(i);
end;
if i mod 2 = 0 Then AForm[i].Color:=clRed else AForm[i].Color:=clBlue;
end;
end;
有没有办法分配子表单的OnClose事件?
答案 0 :(得分:4)
您需要创建一个事件处理程序,并将其分配给表单的OnClose事件。
由于您还没有为MDI子窗体创建新类,因此很可能将事件处理程序放在主窗体中。
procedure TForm1.ChildFormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
像这样分配:
OnClose := ChildFormClose;
在适当的时候,我希望你能为你的MDI孩子们上课。您可以将事件移动到这些新类或公共基础。那就是说,我可能不会这样做。这是一种非常适合主要形式的方法。
一些旁白。我不相信你应该为MDI孩子指定Parent。我记得,框架自动定位单个MDI窗口。我认为你的Parent设置被忽略,没有效果,所以应该删除。我也很好奇MDI儿童边框风格的设置。那会有什么影响吗?