3

我正在努力尝试在 TAc​​tionMainMenuBar 中显示提示。德尔福 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) 的完整源代码,如果有人想查看该程序,我会尽可能缩小范围。

https://dl.dropbox.com/u/58421925/Actions.zip

4

1 回答 1

0

这正是您想要的:www.delphi.about.com/od/vclusing/a/menuitemhints.htm

它处理 WM_MENUSELECT 消息并在自己的窗口中显示提示( TMenuItemHint = class(THintWindow) )。

于 2015-04-29T06:25:21.023 回答