Autor |
Beitrag |
mk2
      
Beiträge: 72
WIN 2000
D4 Prof
|
Verfasst: Di 01.10.02 11:28
Hallo allerseits,
Ich wuerde gerne die Curcortasten in meinem Programm abfragen.
1.Problem:
die Betätigung der Cursortasten löst weder ein KeyDown noch ein Keypress Ereignis aus. Das konnte ich noch lösen indem ich mittels timer alle 100 ms oder so die funktion GetAsyncKeyState aufrufe, allerdings gibts da vielleicht ne elegantere loesung.
2. und viel ärgerlicheres Problem:
Wie kann ich verhindern, dass die Cursortasten von delphi zur Steuerung der Komponenten, die auf meinem formular sind (buttons etc.) verwendet werden? Z.B. wird durch drücken der CursorDown Taste der itemindex der Radiogroupbox verändert.
Wäre nett, wenn mir jemand helfen kann
mfg micha
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 01.10.02 11:34
Im OnKeyDown-Ereigniss solltest du eigentlich an die Cursortasten mittels der virtuellen Tastaturcodes drankommen (VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN).
|
|
mk2 
      
Beiträge: 72
WIN 2000
D4 Prof
|
Verfasst: Di 01.10.02 11:46
das dachte ich eigentlich auch, aber das problem ist, dass das ereignis durch drücken der cursortasten überhaupt nicht ausgelöst wird.
kann man ausprobieren indem man einfach mal ne form erstellt und beim keydown immer ne message ausgibt. die message erscheint beim drücken fast jeder taste aber nicht bei den cursortasten.
mfg micha
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 01.10.02 11:50
Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = VK_LEFT then Messagebox(0, '', '', 0); end; |
Geht!
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Di 01.10.02 11:50
Hi mk2,
Luckie hat vollkommen recht und selbst bei mir funtzt des.
Versuchs mal mit folgendem Code:
Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_Down then ShowMessage('Nach unten ;-)'); end; |
_________________ Viele Grüße
Jakob
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 01.10.02 11:54
DeCodeGuru hat folgendes geschrieben: |
Luckie hat vollkommen recht
|
Hast du was anderes erwartet?
Zitat: |
und selbst bei mir funtzt des.
|
Wunder der Technik. 
|
|
DeCodeGuru
      
Beiträge: 1333
Erhaltene Danke: 1
Arch Linux
Eclipse
|
Verfasst: Di 01.10.02 11:58
Zitat: | Hast du was anderes erwartet? |
Natürlich nicht
Zitat: | Wunder der Technik. |

_________________ Viele Grüße
Jakob
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Di 01.10.02 12:02
Luckie hat folgendes geschrieben: |
Wunder der Technik.  |
Ja, aber nur wenn er KeyPreview auf seinem Formular aktiviert hat. Er hat ja Komponenten drauf. :mgreen:
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
mk2 
      
Beiträge: 72
WIN 2000
D4 Prof
|
Verfasst: Di 01.10.02 13:04
besten dank für die hilfe
ihr habt recht es funktioniert - allerdings nur solange meine form keine komponenten wie buttons etc. hat. sobald da ein paar buttons sind kommen die cursor tasten nicht mehr an. Daran ändert leider auch keypreview nichts.
soweit ich das feststellen konnte gilt das nur für die cursor-tasten und tab -wahrscheinlich weil das die Tasten sind die von windows für die navigation innerhalb von einem fenster gebraucht werden. das wuerd ich gerne ausstellen
na ja, vielleicht hat ja jemand noch ne idee
mfg micha
|
|
LCS
      
Beiträge: 1305
Erhaltene Danke: 1
WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
|
Verfasst: Di 01.10.02 13:13
Hi
ich habs gerade nochmal ausprobiert. Es funktioniert definitiv in OnKeyUp. Jede Menge Komponenten auf dem Formular, KeyPreview := True. Liefert sowohl Cursor als auch Tab-Taste
Gruss Lothar
_________________ Der BH ist für die Brust, der Plan ist für'n Ar...
|
|
mk2 
      
Beiträge: 72
WIN 2000
D4 Prof
|
Verfasst: Mi 02.10.02 08:54
hey danke, mit onkeyup gehts wirklich, aber komisch dass onkeydown nicht funktioniert. kann mir noch jemand bei der 2. frage weiterhelfen ?
|
|