У меня есть приложение MDI, и я использую TActionManager для управления действиями в моем приложении, что также означает, что он содержит действия для моих форм MDIChild.TActionManager в приложении MDI. Пропущенные действия
Вот простой Exemple воссоздать мою проблему:
Создать новый VCL Forms приложений с помощью 2-х формах. Form1 & Form2 Опустите TButton и TActionManager над Form1. Создайте 2 TActions, используя редактор PopUp TActionManager. Set FormStyle: = fsMDIForm для Form1. Set FormStyle: = fsMDIChild для формы2.
Добавьте этот код в correspondant событий:
// 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. Drop Action1 и Action2 над этим TActionToolBar, используя редактор Popup. Сохранить & Запустить. Нажмите кнопку на Form1, чтобы показать Form2. Все работает так, как ожидалось. Теперь закройте Form2 и откройте его. Действия отсутствуют ...
Есть ли способ избежать потери моих действий, зная, что мне действительно нужно использовать TActionManager?
Ну, моя проблема больше, чем это, потому что мне нужен TActionManager на каждой Форме, чтобы позволить настраивать панели инструментов, и это не будет возможно с помощью этих компонентов. Я сделаю это с помощью компонентов TMS. – CharleyXIV