Ja klar, weil OnKeyPress nicht Alles ist,
denn OnKeyDown und OnKeyUp (Manches wird eigentlich dort und Anderes da behandelt)
z.B. Buttons werden beim Loslassen (Up) der Maustaste geklick
aber dagegen beim Niederdrücken (Down) der Leertaste geklick. (OnKeyPress ist hier also zu spät)
Auch Buchstaben in einem Edit kommen beim Drücken (Down) dort rein.
Warum Application.MainForm?
Stattdessen nehmen man eher "Self".
Und was wäre, wenn deine Form1 nicht die MainForm ist?
Wenn doch, dann maximal noch Screen.ActiveControl, aber die Form selber wäre eigentlich die "richtigere" Lösung.
Und
Zitat:
edit2KeyPress(edit2,key);
gibt das Ereignich
NUR an deine Methode weiter.
Das Edit selber bekommt davon garnicht mit, also kann es den Buchstaben auch ganricht übernehmen.
Also SendMessage oder hier besser PostMessage, bzw. eventuell auch Perform
an das Edit.
(Tastatur- und Mausereignisse gehen normalerweise über die MessageQueue, also PostMessage)
Zitat:
ist das sinnvoll oder nötig?
Natürlich Ja.
Wenn du Etwas damit gemacht hast, wäre es doch blöd, wenn am Ende doch noch jemand Anderes auch nochmal was damit macht.
(quasi du drückst einmal und es ist wie Zweimal)
So wie z.B. bei deinem Memo1 ... da hast du nur (noch) Glück gehabt, dass OnKeyPress nur einen Teil behandelt.
Die beste Lösung wäre aber
nicht nachträglich den Fokus umbiegen, sondern das sofort zu machen, damit anschließend irgendwann die Eingaben direkt dort landen, wo sie sollen.
* Alle anderen Komponenten bekommen TabStop False
* bzw. landet der Focus innerhalb der Form nicht da, wo er soll (auf einem NichtEingabe-Control), dann wird er dort hingesetzt.