Autor Beitrag
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Mo 14.10.02 14:57 
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

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 19.10.02 20:08 
ausblenden 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".