короткий ответ:
Вы ожидаете, что TActionClientItem
будет отображаться как ActionComponent
из TAction
.Этого не произойдет, поскольку TActionClientItem
не происходит от TComponent
.
более длинный ответ:
Я полагаю, вы добавляете свой элемент в строку меню,Кажется, по замыслу TAction
, связанный с элементом меню, не будет поддерживать ActionComponent
.Элементы строки меню имеют тип TActionClientItem
.Это «элемент коллекции», а не «компонент».Следовательно, меню не может заполнить параметр ActionComponent
элементом меню при вызове метода Execute
ссылки действия выбранного элемента.Если это звучит странно, я думаю, что приведенные ниже цитаты из источника VCL прояснят:
TBasicActionLink.Execute
метод:
function Execute(AComponent: TComponent = nil): Boolean; virtual;
Переданный компонент назначается FAction.ActionComponent
перед
Как это вызывается из TCustomActionMenuBar.ExecAction
:
FSelectedItem.ActionLink.Execute;
Что касается вопроса в заголовке, я не думаю, что вы делаете что-то не так, кроме установки Caption
и ImageIndex
для TActionClientItem
не нужны, так как будут отображаться заголовок и изображение TAction
.