我有一个 MDI 应用程序,我正在使用 TActionManager 来管理我的应用程序中的操作,这也意味着它包含我的 MDIChild 表单的操作。
这是一个重新创建我的问题的简单示例:
使用 2 个表单创建一个新的 VCL Forms 应用程序。Form1 & Form2 在 Form1 上放置一个 TButton 和一个 TActionManager。使用 TActionManager 的弹出编辑器创建 2 个 TAction。为 Form1 设置 FormStyle := fsMDIForm。为 Form2 设置 FormStyle := fsMDIChild。
将此代码添加到相应的事件:
// Form1
procedure TForm1.Action1Execute(Sender: TObject);
begin
ShowMessage('Action1');
end;
procedure TForm1.Action2Execute(Sender: TObject);
begin
ShowMessage('Action2');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
oForm2: TForm2;
begin
oForm2 := TForm2.Create(Application);
end;
// Form 2
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
将 TActionToolBar 拖放到 Form2 上。使用 TActionManager 弹出编辑器将 Action1 和 Action2 放在此 TActionToolBar 上。保存并运行。单击 Form1 上的按钮以显示 Form2。一切都按预期工作。现在关闭 Form2 并重新打开它。缺少动作...
知道我真的需要使用 TActionManager,有没有办法避免丢失我的操作?