Entwickler-Ecke

Sonstiges (Delphi) - Tastenkombinatinen


Peter2002 - Di 22.10.02 08:20
Titel: Tastenkombinatinen
Wie kann ich abfragen, ob Shift + Funktionstaste gedrückt wurde?

Danke


AndyB - Di 22.10.02 08:44

In OnKeyDown/OnKeyUp/OnMouseDown/OnMouseMove/OnMouseUp kannst du mit
if ssShift in Shift then ...den prüfen, ob die Shift-Taste gedrückt wurde.

Ansonsten kann man mit dieser Anweisung zu jedem Zeitpunkt den Shift-Status abfragen.

Quelltext
1:
2:
3:
4:
function IsShiftPressed: Boolean;
begin
  Result := GetAsyncKeyState(VK_SHIFT) and $80 <> 0;
end;


Peter2002 - Di 22.10.02 08:58

Also, ich habs mal mit

Quelltext
1:
if (ssShift in Shift) and (key = vk_F8) then ShowMessage('F20');                    

versucht ... Die Meldung kommt nie
Wenn ich nur den Shift-Status abfrage, dann kommt die Meldung, nimm ich aber mein F8 dazu, gehts nimmer :?!?:


LCS - Di 22.10.02 09:35

Hi
also bei mir funktioniert das einwandfrei. Poste doch mal die ganze Prozedur.

Gruss Lothar


AndyB - Di 22.10.02 09:37

Also bei mit funktioniert der Code im OnKeyDown Ereignis des Formulars.


Peter2002 - Di 22.10.02 11:30

Bei mir funktioniert der von mir vhorhin gepostete Code nur im OnKeyUp.
Im OnKeyDown nicht. Warum?


mk2 - Di 22.10.02 12:35

@ peter 2002

ich glaub der grund warum das bei dir nicht funktioniert, ist das du komponenten, wie buttons oder so was auf deinem formular hast. Sobald die da sind, benötigt delphi bestimmte tasten (wie z.B. Tab, Cursor und wahrscheinlisch auch shift) um diese komponenten zu steuern (focus setzen etc) und löst für diese tasten kein onkeydown mehr aus.

Ich hab aber leider auch keine lösung dafür außer halt statt onkeydown onkeyup zu nehmen.

mfg mk2