AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Form.keypreview - Taste an Edit weiterreichen?
Thema durchsuchen
Ansicht
Themen-Optionen

Form.keypreview - Taste an Edit weiterreichen?

Ein Thema von SearchBot · begonnen am 26. Aug 2022 · letzter Beitrag vom 31. Aug 2022
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 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.
Ein Therapeut entspricht 1024 Gigapeut.

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

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz