アイテム(ホットキー)を含むコンボボックスがあります。それぞれをWin32ホットキー(F2からVK_F2など)に関連付けてから、RegisterHotkeyで呼び出します。これを行うための最良の方法は何ですか?私はものを調べました、そしておそらく16進値が役立つかもしれません、しかしそれはそれらを使う方法を言いません。ありがとう。
申し訳ありませんが、これ以上の情報を提供できませんでしたが、他に何を含めるべきかわかりません:/
アイテム(ホットキー)を含むコンボボックスがあります。それぞれをWin32ホットキー(F2からVK_F2など)に関連付けてから、RegisterHotkeyで呼び出します。これを行うための最良の方法は何ですか?私はものを調べました、そしておそらく16進値が役立つかもしれません、しかしそれはそれらを使う方法を言いません。ありがとう。
申し訳ありませんが、これ以上の情報を提供できませんでしたが、他に何を含めるべきかわかりません:/
を使用して、返された値を次の必要な値にTextToShortCut
デコードできます。TShortCut
RegisterHotKey
var
Shortcut: TShortCut;
Flags: Cardinal;
Key : Word;
Shift : TShiftState;
begin
ShortCut := TextToShortCut(ComboBox1.Items[ComboBox1.ItemIndex]);
Flags := 0;
Key := 0;
Shift := [];
ShortCutToKey(Shortcut, Key, Shift);
if ssCtrl in Shift then
Flags := Flags or MOD_CONTROL;
if ssShift in Shift then
Flags := Flags or MOD_SHIFT;
if ssAlt in Shift then
Flags := Flags or MOD_ALT;
// You should check the return value of RegisterHotKey - it returns
// a BOOL indicating success or failure. Omitted because your
// question isn't about using RegisterHotKey.
RegisterHotKey(Application.Handle, YourHotKeyID, Flags, Key );
end;
TextToShortCut
とShortCutToKey
は両方ともユニットで定義されていMenus
ます。
YourHotKeyID
は、メッセージwParam
を受信したときにアプリに渡される、定義した$ 0000〜$BFFFの値です。WM_HOTKEY
以上のことをすべて踏まえて、UIコントロールの選択を再検討する必要があります。を使用する場合THotKey
、ユーザーは(リストをスクロールする代わりに)使用したいキーの組み合わせを押すだけです。THotKey.HotKey
次に、サンプルコードの変数の代わりにinを使用できShortCut
ます(変数をに直接渡し、変数を完全にShortCutToKey
削除できます)。ShortCut
ShortCutToKey(HotKey1.HotKey, Key, Shift);
// ... remainder of code
そして、あなたのすぐに来るコメントを見越して:)、WM_HOTKEY
メッセージをキャッチして処理する方法と、登録した複数のホットキーを処理する方法は、新しい質問になるはずです。これは特にコンボボックスとホットキーに関するものでした。押されているホットキーの処理方法はまったく異なります。