2011-01-10 11 views
1

ポップアップメニューでサブメニューの最初の項目を実行することは可能ですか? マウスオーバーでサブメニューが表示されます。ポップアップをクリックすると、最初のサブメニュー項目のクリックを実行できますか?これは、ユーザーがサブメニューに移動して最初の項目を選択する必要がないためです。この場合、最初に使用されたオプションが最も多く使用されます。 Delphi 2009を使用しています。Delphiポップアップメニューでサブメニューを開き、アイテムをクリックすると、サブメニューの最初のアイテムが実行されますか?

+2

これは潜在的に非常に* *、*非常に*危険です。 –

+0

ラリー・ウォールが質問しています。覚えておいて、それを行う方法は複数あります。 –

+1

あなた自身は、そのような振る舞いを持つ唯一のプログラムです。このような行動は、事故によってのみ発見される可能性があります。なぜなら、メニューを経験したことのある人は誰でも、どのように動作するのか分からないからです。そして、それを発見した人からのバグ報告を期待するかもしれません。このような基本的なUIの振る舞いを変更することは、決して良い考えではありません。 –

答えて

4

これは、標準的なウィンドウメニューでは不可能であり、ユーザーの操作がユーザーの行動と矛盾するため、ユーザーを混乱させる可能性があります。

0

あなたはこれらを使用することができます。

Windows.HiliteMenuItem(Handle, TMessage(Msg).WParam, 0, MF_BYPOSITION or MF_HILITE); 
Windows.PostMessage(Handle, WM_KEYDOWN, VK_DOWN, 0); 

はその後、別のメッセージを投稿し、選択した項目をクリックします。

2

TMenuItem.Defaultを見てください。 親アイテムをダブルクリックすると、デフォルトのサブメニューアイテムが実行されます。 おそらく十分ではありませんが、期待される動作をメニューから壊すことはありません。

TMenuItem.Default

関連する問題