我正在努力尝试在 TActionMainMenuBar 中显示提示。德尔福 XE2。
我在运行时创建菜单。我添加类别、子项、清除菜单,一切都很好。单击菜单项可以正常工作(现在它只是执行带有操作项标记的 ShowMessage ,但这很好)。
这是添加新菜单项的代码:
function TActionF.NewAction(AParent: TActionClientItem; Caption: String; aTag : integer; ExecuteAction: TNotifyEvent):TActionClientItem;
var
newActionClient : TActionClientItem;
AnewAction : TAction;
begin
newActionClient := TActionClientItem(AParent.Items.insert(AParent.Items.Count));
newActionClient.Caption := Caption; //??
newActionClient.UsageCount := -1; // turn of menu priority stuff for now
AnewAction := TAction.Create(Self);
AnewAction.Tag := aTag;
AnewAction.ImageIndex := -1;
AnewAction.Caption := Caption;
AnewAction.Hint := Caption + 'Action Tag = ' + IntToStr(aTag);
AnewAction.OnHint := acnDoHint; // fixed, could be parameter, but onHint is never called !!??
AnewAction.OnExecute := ExecuteAction; // passed as parameter
newActionClient.Action := AnewAction;
Result := newActionClient;
end;
我正在设置动作的“提示”。我也尝试过分配 OnHint,但从未调用过 OnHint。浏览菜单时我根本无法获得该提示。
我在所有可以看到的地方都将 ShowHint 设置为 True。
问题是无论我尝试什么都无法显示任何菜单提示。如果我能得到它,我可以自己展示它(如果程序不会)。OnHint 永远不会被调用。
我已经在我的公共 DropBox 中发布了我的菜单程序 (Delphi XE2) 的完整源代码,如果有人想查看该程序,我会尽可能缩小范围。