3

Delphiでフォームを作成しました。ラベルForm付き(キーボード ショートカットとして A に下線を引く) とspeedbutton(読み取り専用状態) (または のような他のコントロール) があるとします。"&Add"dbgridTButton

次に、フォーカスをDbgrid(フォーカスをdbgrid取得) (または )に変更しましたTButton

aのキーを押すたびdbgridに、onClickメソッドがspeedbuttonトリガーされます。

何らかの理由でしばらく無効にする必要があり、その後再び有効にします。speedbuttonショートカットを無効にするには?そして、それを再び有効にする方法は?

4

2 に答える 2

4

Aボタンがそのキーに関心を示しており、フォーム上の他の何もキーストロークを受け入れていないため、フォームはボタンを押したときにボタンを押しています。フォームに編集ボックスがあり、入力フォーカスがある場合、ボタンはトリガーされません。

コントロールにフォーカスがあるときにキーストロークを受け取りたいことを示すことができますが、これは通常、カスタムコントロールを作成するときに発生します。この場合、新しいコントロールクラスがキーボード入力を受け取ったときに何をすべきかがわかります。

ボタンをトリガーしたくない場合は、無効にすることができます。もう1つのオプションは、通常のクリック処理コードを実行する前に、OnClickイベントハンドラーを変更して他の条件(グリッドにフォーカスがあるかどうかなど)を確認することです。

于 2013-02-05T04:36:10.660 に答える
0

速度ボタンのラベルを から&Addに変更することで、ショートカットを無効にすることができますAdd。ショートカットを再度有効にする必要がある場合は、元に戻してください。

このようにアクセラレーター文字を指定すると、 2 つのショートカットが有効になることに注意してください。したがって、あなたの場合、それらはand +になります。同様に、アクセラレータを削除すると、両方のショートカットが無効になります。したがって、ショートカットを無効にするこの方法では、 +を使用してもボタンを使用してもボタンをトリガーできないことに注意してください。&AltAAltAAAltA

于 2014-04-23T18:37:40.463 に答える