Delphi: отключить 1 действие из списка действий - PullRequest
4 голосов
/ 19 июля 2011

Смешно :) но как сделать что-то вроде ActionList1.MyAction.Enable:=false?

Список действий имеет действия для кнопок, если кнопка невидима, мне нужно отключить ее действие (если этого не сделать и нажать ярлык, то процедура будет выполнена).

Может быть, я что-то не так делаю, но я не назначил действия кнопкам. У меня есть только список действий с действиями. Каждое действие имеет ярлык. При нажатии этого ярлыка выполняется действие и выполняется процедура. Если нажать на кнопку -> будет выполнена та же процедура.

State:=asSuspended для всего списка действий.

Спасибо !!!

Ответы [ 2 ]

6 голосов
/ 19 июля 2011

Вам следует присвоить свойству кнопки Action и управлять всем с помощью действия.Установите действие, чтобы быть отключенным, невидимым и т. Д., И кнопка следует за костюмом.

Не устанавливайте обработчик события OnClick кнопки, вместо этого используйте соответствующее событие действия.Используйте событие OnUpdate действия, чтобы установить свойства, такие как Visible, Enabled и т. Д., В основном все, что изменяется во время выполнения.

1 голос
/ 19 июля 2011

TActionList - это список, содержащий один или несколько TAction.

TAction имеет следующие свойства:
AutoCheck
Заголовок
Проверено
Включено
GroupIndex
HelpContext
HelpKeyword
HelpType
Подсказка
ImageIndex
SecondaryShortCuts
ShortCut
Visible

Включено должно работатьпросто отлично, если вы следуете совету Дэвида и делаете все, используя TActionList.

В качестве альтернативы, если taction.enabled не работает для вас, вы всегда можете проверить, работает ли настройка actionxxxx.shortcut := '';.
Если нет, то другие сочетания клавиш перехватывают нажатие клавиши.

См .:
http://docwiki.embarcadero.com/VCL/XE/en/ActnList.TAction
http://docwiki.embarcadero.com/VCL/en/ActnList.TActionList

...