Autor Beitrag
DelphiDelphin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 181



BeitragVerfasst: So 17.04.05 12:46 
Hi wer weiss den Fehler ???
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
case key of
65 and 66:Showmessage('Sie haben a + b gedrückt');

end;
end;



Moderiert von user profile iconTino: Topic aus Sonstiges verschoben am Mi 20.04.2005 um 08:02
Moderiert von user profile iconTino: Titel geändert.
Muetze1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 346



BeitragVerfasst: So 17.04.05 12:54 
Moin!

Ja, ich - und du kannst ihn auch finden. Schau mal in die Hilfe zu Case Of und vor allem die Beispiele und dann sag uns mal, ob du einen Code findest der deinem auch nur irgendwie ähnlich ist - oder das gleiche macht...

MfG
Muetze1
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 17.04.05 14:21 
@DelphiDelphin:
Da hast du das Konzept etwas missverstanden:

1.) Key ist eine Zahl und nicht eine Menge von Zahlen.
2.) Case geht nur mit Zahlen und nicht mit Zahlenmengen. Deswegen gibt es im Case nur die Oder-Verknüpfung (",") und keine Und-Verknüpfung.
3.) Für jeden Tastendruck wird ein separates FormKeyDown gestartet.

Wenn du also A drückst, wird FormKeyDown gestartet, wenn du danach B drückst, wird wieder FormKeyDown gestartet. Wenn du dann A wieder loslässt, wird dann FormKeyUp gestartet, usw.
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 17.04.05 14:24 
Um eine Kombination zu erzuegn musst du folgendes machen :wink: :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if (key=65and (key=66then
  begin
   Showmessage('Sie haben a + b gedrückt')
  end
end;
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: So 17.04.05 14:29 
@Heiko: Deine Variante macht etwa gleich wenig Sinn ;)
feivel3333
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 190

W7
Delphi XE prof
BeitragVerfasst: Mo 18.04.05 21:39 
Titel: Keydown
Key ist eine Variable. Sie kann einen (und genau einen) Wert annehmen. Also funktioniert so was wie (key=65) and (key=66) ziemlich genau gar nicht.
Was hast du genau vor?
Ich vermute, du möchtest feststellen, ob zwei Tasten gedrückt sind. Richtig?

Prinzipiell ist das auf diese Weise nicht möglich. Aber ich habe da eine Idee. In dem Form würde ich eine private-Variable z.B. niKey1 : integer und niKey2 : integer anlegen. Im OnKeyDown-Event des Formulars würde ich eine futzelig kleine Routine schreiben, die
die letzten beiden Tasten auswertet:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
begin
   niKey2 := niKey1;
   niKey1 := key;

   if ((niKey1 = 65and (niKey2 = 66)) or ((niKey1 = 66and (niKey2 = 65)) then begin
      // Das was auszuführen ist, wenn Taste 65 und 66 nacheinander in beliebiger
      // Reihenfolge gedrückt wurden
      // ...
   end;
end;

Nun kannst du entweder die Taste 65 und dann 66 oder umgekehrt drücken. Die gedrückten Tasten werden permanent gepuffert.

Ich hoffe, dir damit geholfen zu haben.

Viele Grüße, André

Moderiert von user profile iconAXMD: Delphi-Tags hinzugefügt.