В процессе разработки VCL-приложений на Delphi возникает необходимость динамически создавать и управлять элементами меню. Одной из таких задач является добавление подменю "Недавние файлы" в выпадающий список. В данной статье мы рассмотрим, как это можно сделать, используя компоненты TActionManager и TActionMainMenuBar.
Проблема
Разработчик столкнулся с необходимостью добавить подменю "Недавние файлы" в главное меню своего VCL-приложения, используя компоненты TActionManager и TActionMainMenuBar. Ранее он создавал подобные меню с использованием TMenuItems в стандартном компоненте tMainMenu, однако не был уверен, как это сделать динамически с помощью компонентов Action и не нашел соответствующих примеров.
Решение
Для решения этой задачи можно использовать следующий подход:
Создание нового подменю - визуального элемента, который будет выступать в роли контейнера для подменю.
Добавление невидимого элемента в этом подменю, который будет служить основой для будущих операций с помощью менеджера действий.
Динамическое создание элементов подменю с помощью менеджера действий.
Пример кода
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
iChildMenu, iSubMenuItem: TActionClientItem;
iFileAction: TCustomAction;
begin
// Создание нового подменю для 'Файл' (File)
iChildMenu := ActionManager1.ActionBars.Add;
iActionClientItem := ActionManager1.FindItemByAction(FileMenu1); // Предполагаем, что FileMenu1 - это действие меню 'Файл'
iActionClientItem.ChildActionBar := iChildMenu.ActionBar;
// Добавление невидимого элемента, который будет использоваться для создания подменю
iSubMenuItem := iActionClientItem.Items.Add;
iSubMenuItem.Visible := FALSE;
// Создание первого элемента подменю
iFileAction := TCustomAction.Create(Self);
iFileAction.Caption := 'Файл 1';
// Дополнительные настройки...
ActionManager1.AddAction(iFileAction, iSubMenuItem);
// Повторяем процесс для добавления дополнительных элементов подменю
iFileAction := TCustomAction.Create(Self);
iFileAction.Caption := 'Файл 2';
// Дополнительные настройки...
ActionManager1.AddAction(iFileAction, iSubMenuItem);
// ...
end;
Подтвержденный ответ
Предоставленный выше код демонстрирует, как можно динамически добавить подменю "Недавние файлы" в выпадающий список меню. Обратите внимание, что для обработки событий и работы с недавними файлами потребуется дополнительно настроить каждый элемент подменю.
Заключение
Используя компоненты Action в Delphi, можно легко управлять меню и динамически создавать подменю, что значительно упрощает разработку и поддержку пользовательского интерфейса приложения.
Вопрос связан с разработкой VCL-приложений на Delphi и добавлением подменю 'Недавние файлы' в выпадающий список с использованием компонентов `TActionManager` и `TActionMainMenuBar`.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.