Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.203 Beiträge
 
Delphi 12 Athens
 
#2

AW: Form.keypreview - Taste an Edit weiterreichen?

  Alt 26. Aug 2022, 13:57
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (26. Aug 2022 um 14:16 Uhr)
  Mit Zitat antworten Zitat