FormKeyDown mit Pfeiltasten
-
Ach Ja...
Sobald ein Edit-Feld drauf ist bleibt dort der Fokus "hängen" und es bewegt sich dort der Cursor.

verstehe ich nicht...Es muss doch auch dann mein Event ausgelösst werden. Oder nicht ?
-
Setz mal für alle Komponenten auf dem Form testweise TabStop auf false.
-
Juhuuu.....

Thats it !!!!TabStop=False
Vieelen Dank....
Grüsse Walter.
-

Schade zu früh gefreut...
Wenn noch ein Element aktiv ist z.B. vom letzten Mausklick auf einen Button, Wndert der Fokus wieder weiter, obwohl alle TabStopps False sind.
-
Hallo,
Hast Du den anderen Objekten auch das "OnKeyDown" und "OnKeyUp" vom Formular zugewiesen ? Wenn nicht, mußt Du Dich nicht wundern, das es nicht geht.
Bei mir geht's, egal mit welchen Elementen...Bis dann denn,

Nash
-
Nash schrieb:
Hast Du den anderen Objekten auch das "OnKeyDown" und "OnKeyUp" vom Formular zugewiesen ? Nash
Vom Formular ?
Heißt das ich muss den gleichen Code der in "FormKeyDown/Up" auch in das "KeyUp/Down" Event von jedem Objekt schreiben ?
Bin gerade etwas verwirrt ...
-
Hallo,
Nicht reinschreiben, nur im Objektinspektor zuweisen.
Du kannst doch im "FormKeyDown/Up" alles reinschreiben, im Objektinspektor jedem gewünschten Objekt dieses Ereignis ("FormKeyDown/Up") zuweisen und dann im "FormKeyDown/Up" unterscheiden (mit Sender)... so hat man alles schön übersichtlich in einer Routine, was Tastendrücke angeht.
Bis dann denn,

Nash
-
Ok, Ich habe nun Im Objektinspektor jedem Objekt bei KeyUp/Down das "FormKeyUp/Down" zugewiesen.
Zeigt aber keine Wirkung.Das mit der Unterscheidung (Sender ) blick ich nicht bzw wieß nicht was damit gemeint ist .
Danke für deine schnelle Antwort.Gruß...
-
Hallo,
ich raff das nun immer noch nicht.
Selbst wenn ich jedem Objekt des FormKeyUp/Down zuweise ändert sich nichts.Mal langsam:
Der Tastendruck wird von Windows an das Objekt übergeben das gerade aktiv ist.
Aber durch KeyPreview wir dieses doch zuerst an die Form gegeben bevor es das Objekt erhält- Oder ? Und wenn ich jetzt bei den ganzen "KeyUp/Down" Events der Objekte auf die Form verweise... ...aber immernoch der Fokuss wandert....
Was bringt dann noch eine Auswahl mit *Sender ???Wenn ein Objekt aktiv ist dann reagiert es zuerst auf den Tastendruck bevor es auf das FormKey...-Ereignis reagiert.
Hilfeee...
-
Hallo,
Ich weiss nur, daß das "KeyPress"-Ereignis nur auf ASCII-Tasten reagiert. Ansonsten kann ich dir leider auch nicht helfen !!Viel Glück weiterhin....
Grüsse Bernd.
-
Ahaa..
Danke.
-
Weiß vielleicht sonst noch jemand wie ich das ändern kann.
Ich bin schon ganz verzweifelt.Ich habe schon alles versucht, ich komm einfach nicht darauf.
Bitte helft mir!!!
-
Hallo,
Hab mittlererweile eine Möglichkeit gefunden mittles einer eigenen Routine dieApplication->OnMessageabzufangen und auszuwerten.
Jedoch was bleibt ist das Problem daß immernoch der Fokus hin- und herwandert, was nicht gerade daß ist was sein soll!
Weiß vielleicht jemand wie ich das abstellen kann?
Ich bin für jeden Tipp dankbar.
Grüsse...
-
Hallo..... hört mich noch jemand ???????????
Kann mir irgendjemand Antworten ?????????? bitte !!!!!!!!!!!!
-
Hallo,
So...
Du kannst Probleme haben... 
Jetzt hab' ich erstmal Dein Problem erkannt...Also : Um ein Wechseln des Fokus zu verhindern, kannst Du zur Not jedes Element auf ein Panel legen (dann kann der Fokus nicht weiterspringen, jedenfalls nicht mit den Pfeiltasten). Oder Du nimmst "TSpeedButton", der kann keinen Fokus annehmen.
Zum Problem, daß kein Ereignis ausgelöst wird, bei "OnKeyDown"... da wird's glaube ich keine einfache Lösung geben, da die Pfeil-Tasten genau dafür gedacht sind. "OnKeyUp" funktioniert (siehe Code unten), nur "OnKeyDown" nicht (warum das so ist... frag mich nicht, das ist mir zu aufregend um mich weiter damit zu beschäftigen
).
Nimm einfach andere Tasten... :pvoid __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key == VK_UP) { Label1->Caption="Hallo KeyDown VK_UP"; Beep(1000, 50); } // if (Key == VK_UP) } //--------------------------------------------------------------------------- void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift) { if (Key == VK_UP) { Label1->Caption="Hallo KeyUp VK_UP"; Beep(4000, 50); } // if (Key == VK_UP) } //---------------------------------------------------------------------------Bis dann denn,

Nash
-

Dankeee !!!!!
Is ja easy ........
es scheint zu gehen !!!!!!!!!!!!!!!
Danke !!!
Grüsse
-
Ach ja und das mit dem KeyDown hab ich auch im Griff.
Nicht das Ereigniss onKeyDown benutzten sondern mit
Application->OnMassage=MeinHandlerdie Nachricht auf meine Methode leiten und dort mit If-Überprüfungen feststellen ob es eine der Taste ist die ich brauche.
OnKeyUp verwende ich wie bisher....
Servus....
-
Setz die Eigenschaft "Keypreview" des Hauptformulars auf true, damit werden alle Keyereignisse zuerst zum Hauptformular geleitet, bevor sie an die entsprechende Komponente weitergereicht wird.
So einfach ist das
-
Hallo,
...So einfach ist das
Naja...
ich würde sagen, probiers einfach mal aus, und dann würdest Du sehen, so einfach ist das nicht.Bis dann denn,

Nash