Entwickler-Ecke
Sonstiges (Delphi) - Geschichten rund um Shift-Stati...
tommie-lie - Mo 14.10.02 14:57
Titel: Geschichten rund um Shift-Stati...
Hallo Leute,
Es gibt unter Delphi die OnKey-Events. Damit konnte ich bereits die Strg-, Alt- und Shift-Stati rausbekommen. Wie kann ich jedoch zwischen den rechten und den linken Tasten unterscheiden? In der Hilfe steht etwas von Virtual-Keys, aber mit der beschriebenen API-Funktion "GetKeyState" funktioniert es nicht so wie ich will (kurz gesagt: es funzt gar nicht...). Gibt es eine andere Möglichkeit rauszufinden, ob die rechte oder linke Strg-, Alt- oder Shift-Taste gedrückt wurde, oder kann mir jemand die richtige Benutzung von GetKeyState beibringen? Wo wir grad dabei sind: Die rechte Alt-Taste ist ja Alt GR. Wie kann ich diese als einzelne Taste bewerten und nicht als Strg-Alt?
Außerdem konnte ich im OnKey-Event die Maustasten nicht abfragen. Also ob die rechte, die mittlere oder die linke Maustaste gedrückt wurde, als die Taste (auf der Tastatur) gedrückt wurde. Zumindest geht es nicht mit den in der Hilfe beschriebenen ssRight, ssLeft und ssMiddle Konstanten die eigentlich zur TShiftState gehören. Liegt das daran, daß ich das OnKey-Event abfrage und dort die Maus unterbunden wird, oder gibt's da einen anderen Trick?
Tschüß
Thomas
Andreas Pfau - Sa 19.10.02 20:08
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| function KeyIsPressed(VirtualKey: Integer): Boolean; begin Result := GetKeyState(VirtualKey) And 128 <> 0; end;
function KeyIsToggled(VirtualKey: Integer): Boolean; begin Result := GetAsyncKeyState(VirtualKey) And 1 <> 0; end; |
Erklärung: Bei getKeyState ist das höchste Bit (128) 1, wenn die Taste grdeückt ist. Bei GetAsyncKeystate ist das niedrigste Bit (1) 1, wenn die Taste seit der letzten abfrage gedrückt wurde.
In der Online-Hilfe steht, das mit Rechts/Links funzt nur unter NT. Lies mal nach suchbegriff "GetKeyState".
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!