3

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 が呼び出されることはありません。

私のメニュー プログラム (Delphi XE2) の完全なソースを投稿しました。小さな例をできる限り絞り込みました。プログラムを見たい人がいる場合は、公開の DropBox に投稿しました。

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 に答える