自定义绘制TATION下拉菜单

时间:2012-02-24 03:30:09

标签: delphi delphi-xe 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 个答案:

答案 0 :(得分:0)

自定义绘图事件处理程序始终附加到UI组件,而不是操作。因此,对于简单的VCL,你不能按照你的要求去做。

导出自己添加了OnDraw事件的动作类非常简单。您还必须派生自己的下拉菜单类以提供连接的另一端。