Einzelnen Beitrag anzeigen

HintByError

Registriert seit: 13. Dez 2018
Ort: Marburg
20 Beiträge
 
Delphi XE2 Professional
 
#1

Von „TCustomControl“ abgleitete visuelle Komponente erhält nicht den Tastaturfokus.

  Alt 30. Dez 2018, 22: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“.
Miniaturansicht angehängter Grafiken
tcustomcontrol.png  
Angehängte Dateien
Dateityp: zip TCustomControl.zip (111,1 KB, 6x aufgerufen)
Wolfgang Sauer
  Mit Zitat antworten Zitat