gpt4 book ai didi

delphi - 如何在运行时分配 MDIChild 的 OnClose 事件?

转载 作者:行者123 更新时间:2023-12-02 10:50:37 25 4
gpt4 key购买 nike

这是主窗体中的代码:

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;

有没有办法分配子Form的OnClose事件?

最佳答案

您需要创建一个事件处理程序,并将其分配给表单的 OnClose 事件。

由于您还没有为 MDI 子窗体创建新类,因此您很可能将事件处理程序放在主窗体中。

procedure TForm1.ChildFormClose(Sender: TObject; 
var Action: TCloseAction);
begin
Action := caFree;
end;

像这样分配它:

OnClose := ChildFormClose;

在适当的时候,我希望您能为您的 MDI 子级派生类。您可以将事件移至这些新类(class)或公共(public)基地。也就是说,我可能不会这样做。这是一个非常适合主窗体的方法。

一些旁白。我认为您不应该为 MDI 子项指定 Parent 。我记得,框架会自动定位单个 MDI 窗口。我认为您的 Parent 设置被忽略,没有任何效果,因此应该删除。我也很好奇MDI child 边框样式的设置。有效果吗?

关于delphi - 如何在运行时分配 MDIChild 的 OnClose 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20014766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com