Registriert seit: 13. Dez 2018
Ort: Marburg
21 Beiträge
Delphi XE2 Professional
|
Von „TCustomControl“ abgleitete visuelle Komponente erhält nicht den Tastaturfokus.
30. Dez 2018, 23:36
Beschreibung des Symptoms
Wenn man von „TCustomControl“ eine visuelle Komponente ableitet, dann liefert die Funktion „Focused“ in der „Paint“-Methode nicht das erwartete Ergebnis „true“, obwohl das Steuerelement den Fokus haben müsste. Dadurch, dass das Ergebnis von „Focused“ in der „Paint“-Methode nicht abgefragt werden kann, entfällt die Visualisierung des Fokus mit dem Aufruf von „DrawFocusRect“.
Behebung des Fehlers
Durch die Einführung einer Feldvariablen „fFocused“, der Eigenschaft „Focused“, der Überlagerung der virtuellen Methode „setFocus“ und die Umleitung einer Reihe von Windows-Botschaften kann die erwartete Funktionalität hergestellt werden. Siehe Demonstrationsprogramm.
Demonstrationsprogramm
Das Demonstrationsprogramm zeigt zwei übereinander angeordnete Panele. Oben befindet sich ein Instanz vom Typ „TBorderIcon“, die auf den Fokus und die Tastatur erwartungsgemäß reagiert. Unten befindet befindet sich eine Instanz von Typ „TBoderIcon2“, die auf naheliegende Weise von „TCustomControl“ abgeleitet wurde aber nicht die Funktionalität hat. Des weiteren befindet sich für Testzwecke unten rechts noch eine Standardschaltfläche „Button1“. Bei wiederholten Betätigen der Tabulatortaste wechselt der Fokus zwischen „BorderIcon1“, „Button1“ und verschwindet dann. Beim nächsten Druck erscheint er wieder auf „BorderIcon1“.
Wolfgang Sauer
|