Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Whookie,
27. Jan 2019
Grundsätzlich sind Windows-Controls auch nur (spezialisierte) Fenster, erhalten also direkt alle Botschaften vom System (Windows). Ein Tastendruck gehört da auch dazu und im Normalfall wird er auch vom Control direkt verarbeitet.
Damit das OnKeyPreview-Event überhaupt funktionieren kann, benachrichtigt also das Control (in deinem Fall die ComboBox) das Formular über das empfangene Zeichen....
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Whookie,
26. Jan 2019
Im konkreten Fall kommt es darauf an, aus welchem Kontext der Tastendruck erfolgt.
Ist das ComboBox-Edit-Control aktiv (z.B.: Style := cdDropDown), wird der Tastendruck über TCustomCombo.ComboWndProc (WM_CHAR) empfangen. An dieser Stelle wird die DoKeyPress-Methode aufgerufen und darüber das OnKeyPress-Ereignis ausgelöst. Am Ende dieser Fensterprozedur (ComboWndProc) wird die Verarbeitung...
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by Whookie,
26. Jan 2019
Das FormKeyPress-Ereignis wird niemals "doppelt" aufgerufen, damit es überhaupt aufgerufen wird muss Form.KeyPreview := TRUE gesetzt werden (im Objektinspektor, oder per Code).
Nur in diesem Fall bekommt man in FormKeyPress vor der ComboBox die Gelegenheit zu entscheiden, ob eine eigene Verarbeitung in Frage kommt bzw. eine spezielle Reaktion auf die Taste erwünscht ist. Auch kann man hier...