Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Probleme mit CASE Anweisung
DelphiDelphin - So 17.04.05 12:46
Titel: Probleme mit CASE Anweisung
Hi wer weiss den Fehler ???
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
Tino: Topic aus Sonstiges verschoben am Mi 20.04.2005 um 08:02
Moderiert von
Tino: Titel geändert.
Muetze1 - 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 - 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 - So 17.04.05 14:24
Um eine Kombination zu erzuegn musst du folgendes machen :wink: :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm3.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key=65) and (key=66) then begin Showmessage('Sie haben a + b gedrückt') end end; |
delfiphan - So 17.04.05 14:29
@Heiko: Deine Variante macht etwa gleich wenig Sinn ;)
feivel3333 - 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:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| begin niKey2 := niKey1; niKey1 := key;
if ((niKey1 = 65) and (niKey2 = 66)) or ((niKey1 = 66) and (niKey2 = 65)) then begin 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
AXMD: Delphi-Tags hinzugefügt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!