Hogyan kell kezelni az esemény rtcut

Hogyan kezeljük a TForm.OnShortCut esemény?

Üdvözöljük varázsló.
Tudom, hogy tudod használni Msg.CharCode változó, hogy melyik gombot nyomták. De nem tudok rájönni, hogyan kell meghatározni a megfelelő kombinációja néhány karakternél. például + vagy ++. Ha tud - írjon egy konkrét példát.

Senki szembe?

Az MSG paraméter képviseli Windows gombnyomás üzenetet. A virtuális gombot kódot kap az CharCode területen, valamint a KEYDATA mező egy sor zászlók jelzik, hogy az ismétlési szám, szkennelés kód, kiterjesztett kulcs zászló, összefüggésben kódot, korábbi kulcs állami zászló és átmeneti állapot zászló. Lásd a Windows dokumentációt a részleteket ezeken a területeken.


eljárás TForm1.FormShortCut (var Msg: TWMKey; var Handled: logikai érték);
kezdődik
ha Msg.CharCode = Ord ( "K"), majd
if (GetKeyState (VK_MENU) <0)
és (GetKeyState (VK_SHIFT) <0) then
kezdődik
Kezelni: = true;
ShowMessage ( "Préselt Alt + Shift + K");
végén;
végén;

Nem, tudod. Ez a módszer nem működik. Megnéztem. Sőt, úgy tűnik, hogy segítsen TForm.OnShortCut eseményeket nem tud elkapni egy kombinációja több karakternél. Ha például nyomja meg és tartsa , majd nyomja meg a másik gombot OnShortCut esemény nem hívják.

Aztán egy másik kérdés: hogyan lehet elkapni egy bizonyos formában (dialógus, modális) kombinációja megnyomja a forró kulcsot?


> Nem, tudom. Ez a módszer nem működik. Megnéztem.

Hasonlóképpen ellenőrzik? Gondolod, nem ellenőrizte, mielőtt publikoavniem? Minden működik. Igen, valóban, OnShortCut kap csak egy olyan billentyűt, hogy a Ctrl, Shift, vagy bármilyen A. De itt mi határozza meg, hogy több olyan gomb megnyomása:
GetKeyState (VK_MENU) kap info, hogy az Alt billentyű lenyomásakor, GetKeyState (VK_SHIFT) - Shift nyomva.
Annak érdekében, hogy minden rendben van.


> Ha például nyomja meg és tartsa , ha megnyomja
> OnShortCut másik kulcsfontosságú esemény nem hívják.

Hogyan lehet ellenőrizni? Én minden hívott.

Sajnálom. Az ilyen típusú például úgy működik, mint a karikacsapás. Én most néztem egy billentyűkombináció + .
Úgy látszik, a Tab billentyű feldolgozott valahol a penész és kezelni utal True. Miután Tab - használják mozgatni ellenőrzések között.
Szeretnék egy gyorsbillentyűvel + kapcsolja oldalak formájában. Listája oldalak TListView

Itt van az én például nem működik:
ha Msg.CharCode = VK_TAB majd
if (GetKeyState (VK_CONTROL) <0) then
kezdődik
Kezelni: = true;
ShowMessage ( "Préselt Ctrl + Tab");
végén;

Memória: 0,73 MB
Idő: 0.045 c

Kapcsolódó cikkek