Delphi: ActionList против ActionManager | Советы инженера
администратор
ActionList — более старый и простой контейнер действий.
Компонент ActionManager , изначально представленный в Delphi 6, имеет дополнительные параметры, позволяющие создавать и управлять пользовательским интерфейсом для действий. Помимо набора действий, у ActionManager есть набор панелей инструментов и привязанных к ним меню. Компоненты этой архитектуры включают в себя, помимо самого компонента ActionManager, 9Элемент управления 0009 ActionMainMenuBar , элемент управления ActionToolBar , компонент PopupActionBar и компонент CustomizeDlg , которые позволяют конечным пользователям настраивать пользовательский интерфейс.
Нравится:
Нравится Загрузка.
..
Vultr Cloud VPS и выделенные серверы
Высокопроизводительное хранилище SSDНачните бесплатно с кредитами в размере 100 долларов США
Если у вас есть вопросы, свяжитесь со мной!
- Бизнес (15)
- База данных (40)
- MySQL/MariaDB (26)
- NoSQL (1)
- Оракул (3)
- SQL (14)
- Электроника (106)
- ПЛИС (5)
- Машиностроение (16)
- Английский (44)
- Игры (12)
- Общий (1)
- Юмор (99)
- Сеть/Интернет (161)
- Операционные системы (222)
- Андроид (2)
- ДОС (5)
- GNU/Linux (104)
- Mac OS (10)
- Окна (121)
- Программирование (504)
- С/С++/С# (10)
- Дельфи/Паскаль (349)
- HTML и CSS (22)
- Javascript (20)
- МАТЛАБ (6)
- OpenGL (1)
- филиппинских песо (54)
- Питон (6)
- Visual Basic (3)
- Xкод (2)
- Научные материалы (23)
- Искусственный интеллект (8)
- Программное обеспечение (78)
- Фотошоп (14)
- Свяжитесь со мной
- Vultr Обзор
- Фатих Рамазан Чикан
- Код купона Namesilo
- NxNet2
- Тех433
(7) Август 2022 г. (13) Июль 2022 г. (12) Июнь 2022 г. (5) Май 2022 г. (12) Апрель 2022 г. (9) Март 2022 г. (4) Февраль 2022 г. (11) Январь 2022 г. (14) Декабрь 2021 г. (14) ) ноябрь 2021 (14) октябрь 2021 (17) сентябрь 2021 (17) август 2021 (24) июль 2021 (19) июнь 2021 (12) май 2021 (13) апрель 2021 (13) март 2021 (10) февраль 2021 (11) ) Январь 2021 г. (23) Декабрь 2020 г. (16) Ноябрь 2020 г. (9) Октябрь 2020 г. (22) Сентябрь 2020 г. (10) Август 2020 г. (8) Июль 2020 г. (24) Июнь 2020 г. (25) Май 2020 г. (17) Апрель 2020 г. (23) ) Март 2020 (13) Февраль 2020 (11) Январь 2020 (26) Декабрь 2019(29) ноябрь 2019 г. (16) октябрь 2019 г. (9) сентябрь 2019 г. (9) август 2019 г. (9) июль 2019 г. (18) июнь 2019 г. (4) май 2019 г. (16) апрель 2019 г. (8) март 2019 г. (12) февраль 2019 г. (9) январь 2019 г. (9) декабрь 2018 г. (14) ноябрь 2018 г. (4) октябрь 2018 г. (15) сентябрь 2018 г. (9) август 2018 г. (9) июль 2018 г. (11) июнь 2018 г. (13) май 2018 г. (10) апрель 2018 г. (16) март 2018 г.
(1) февраль 2013 г. (1) январь 2013 г. (3) ноябрь 2012 г. (1) ) Октябрь 2012 г. (1) Август 2012 г. (1) Март 2012 г. (2) Февраль 2012 г. (1) Январь 2012 г. (3) Октябрь 2011 г. (6) Сентябрь 2011 г. (8)Как программно добавить действия в диспетчер действий в Delphi 2010
спросил
Изменено 10 лет, 1 месяц назад
Просмотрено 3к раз
Я пытаюсь динамически добавлять элементы действий, я могу добавить элемент, и он работает, когда я делаю следующее:
HostActionItem := ActionManager.ActionBars[0].Items[0].Items[2]; НовыйЭлемент := HostAction.Items.Add; НовыйЭлемент.Действие := MyActionToPerform; NewItem.Caption := Описание; НовыйЭлемент.ИндексИзображения := 1; НовыйЭлемент.Тег := 13;
Однако, когда срабатывает метод Execute действия, я пытаюсь получить ActionComponent из объекта Sender следующим образом:
if (Sender is TAction) then тег := (Отправитель как TAction).ActionComponent.Tag;
Но ActionComponent всегда равен нулю. Почему ActionComponent не инициализируется?
- delphi
- delphi-2010
- taction
- tactionmanager
2
короткий ответ:
Вы ожидаете, что TActionClientItem будет отображаться как ActionComponent из TAction . Этого не произойдет, поскольку TActionClientItem не происходит от .
более длинный ответ:
Я полагаю, вы добавляете свой элемент в строку меню.
Кажется, так задумано, что TAction , связанный с пунктом меню, не будет поддерживать ActionComponent 9.0181 . Элементы строки меню имеют тип TActionClientItem . Это «предмет коллекции», а не «компонент». Следовательно, меню не может заполнить параметр ActionComponent пунктом меню при вызове метода Execute ссылки действия выбранного элемента. Если это звучит запутанно, я думаю, приведенные ниже цитаты из источника VCL прояснят ситуацию:
TBasicActionLink.Execute method:
function Execute(AComponent: TComponent = nil): Boolean; виртуальный;
Переданный компонент назначается FAction.ActionComponent перед его выполнением.
Как это вызывается из TCustomActionMenuBar.ExecAction :
FSelelectItem.ActionLink.Execute;
Что касается вопроса в заголовке, я не думаю, что вы делаете что-то неправильно, за исключением установки Caption и ImageIndex для TActionClientItem , поскольку это заголовок TAction и изображение, которое будет показано.
ActionBars[0].Items[0].Items[2];
НовыйЭлемент := HostAction.Items.Add;
НовыйЭлемент.Действие := MyActionToPerform;
NewItem.Caption := Описание;
НовыйЭлемент.ИндексИзображения := 1;
НовыйЭлемент.Тег := 13;