我为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;
干杯。
答案 0 :(得分:0)
自定义绘图事件处理程序始终附加到UI组件,而不是操作。因此,对于简单的VCL,你不能按照你的要求去做。
导出自己添加了OnDraw事件的动作类非常简单。您还必须派生自己的下拉菜单类以提供连接的另一端。