Custom Draw TAction Выпадающее меню

Я создаю выпадающее меню для TActionClientItem со списком TAction. Я хотел бы знать, как я могу подключить событие рисования для меню или каждого TAction внутри, чтобы по-разному отображать заголовок этих TAction!? Что-то вроде TAction.OnDrawItem или TActionClientItem .OnDrawItem ...

procedure xxxxx.BuildActionMenu;
var
  iLoop : Integer;
  oItem : TAction;
  oClientItem : TActionClientItem;
begin
  if Assigned(oClientItem) then
    for iLoop := oClientItem.Items.Count - 1 downto 0 do
      oClientItem.Items.Delete(iLoop);

  for iLoop := 0 to List.Count - 1 do
  begin
    oItem := TAction.Create(actionList);
    oItem.Caption := List[iLoop].Name;
    oItem.Tag := iLoop;
    oItem.OnExecute := HandleOnExecuteMenuItem;
    **oItem.OnDraw = WhateverFunction**
    oClientItem .Items.Add.Action := oItem;
  end;

  if Assigned(oClientItem) then
  begin
    if oClientItem.CommandProperties is TButtonProperties then
      TButtonProperties(oClientItem.CommandProperties).ButtonType := btSplit;
    TAction(oClientItem.Action).OnExecute := HandleOnExecuteParentItem;
    **oClientItem.OnDraw = WhateverFunction**        
  end;
end;

Приветствия.

1 ответ

Пользовательские обработчики событий рисования всегда присоединяются к компонентам пользовательского интерфейса, а не к действиям. Таким образом, с простым VCL вы не можете делать то, что просите.

Было бы достаточно просто получить собственный класс действий, в который добавлено событие OnDraw. Вы также должны были бы получить свой собственный класс выпадающего меню, чтобы обеспечить другой конец соединения.

Другие вопросы по тегам