我正在努力尝试在TActionMainMenuBar中显示提示。 Delphi 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。
我已经发布了我的菜单程序(Delphi XE2)的完整源代码,这是我在公共DropBox中尽可能缩小的一个小例子,如果有人想看这个程序的话。
答案 0 :(得分:0)
这完全符合您的要求:www.delphi.about.com/od/vclusing/a/menuitemhints.htm
它处理WM_MENUSELECT消息并在其自己的窗口中显示提示(TMenuItemHint = class(THintWindow))。