Autor Beitrag
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 30.12.02 12:16 
Hallo Leute,

wieder mal ein Prob. Ich habe eine Anwendung, die auf dir cursortasten reagieren soll. Ich verarbeite alle Tasten mit TForm.OnKeyDown. Um auch auf Cursortasten zu reagieren, fange ich Wm_KeyDown mit TApplicationEvents.OnMessage ab und leite sie an OnKeyDown weiter (damit alles zentral verarbeitet wird).

Aber: kann ich aus TMsg, was ja bei Wm_KeyDown gesendet wird, den Status von Shift un Ctrl herausfinden? Momentan verwende ich dazu GetKeyState(), aber geht das auch direkt?
Dev4u.ch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Mo 30.12.02 15:11 
Füg folgenden Code bei Form1.ONKeyDown ein

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key = VK_SHIFT then
showmessage('Shift');

if key = VK_CONTROL then
showmessage('Control');

end;


gruss

_________________
Jedes Programm wurde von einem Menschen gecodet - Menschen machen nun mal Fehler!!
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 30.12.02 16:37 
Sorry... das hatte ich nicht gemeint... :wink:

Was ich wollte war: wenn eine Taste gedrückt wird, wie finde ich dann mittels der von windows gesendeten Nachricht raus, ob gleichzeitig Shift und/oder Ctrl gedrückt wurde? Klar, mit GetKeyState geht das. Aber kann ich auch aus der TMsg-Struktur den Shift-/Ctrl-Status auslesen?
Dev4u.ch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 36



BeitragVerfasst: Mo 30.12.02 16:41 
ok..

ich versuchs nochmal..

Dies ist ein Beispielcode der erkannt ob Shift+A zu gleichen Zeit gedrückt werden..

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (Shift = [ssCtrl]) and (Key = 65) then
    ShowMessage('Strg + A gedrückt');

end;



vielleicht musst du von Form1 das Keypreview auf True setzten..

_________________
Jedes Programm wurde von einem Menschen gecodet - Menschen machen nun mal Fehler!!
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Mo 30.12.02 18:02 
Dev4u.ch hat folgendes geschrieben:
ich versuchs nochmal..

ich denke das wird Andreas auch nicht helfen.

Andreas Pfau hat folgendes geschrieben:
Aber kann ich auch aus der TMsg-Struktur den Shift-/Ctrl-Status auslesen?


Gruß
TINO