Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FMX und ActiveControl/Focus

  Alt 30. Mai 2015, 18:48
Ich mache es mir gerade mal einfach und kopiere aus meinem XE7-FMX-Buch das Rezept 14:

"R14 ... ActiveControl verwenden

Wenn Sie in einer Form verschiedene Controls platziert haben und eine Abfrage auf die
Variable "ActiveControl" machen, ist diese - anders als unter der VCL - immer NIL. Ob das
gewollt oder ein Bug ist, ist mir nicht klar. Jedenfalls macht es im Programmablauf an
vielen Stellen Sinn, das gerade aktive Control (also das, welches den Focus hat)
abzufragen.

Sie können hier direkt die allgemeine Eigenschaft des Formulars "Focused" verwenden.
Dies gibt nämlich das Steuererlement an, welches den Fokus hat.

Wollen Sie also die Variable ActiveControl belegen, können Sie im Ereignis
"OnFocusChanged" des Formulars so machen:

Delphi-Quellcode:
procedure TForm9.FormFocusChanged(Sender: TObject);
begin
ActiveControl := TControl (Focused .GetObject);
//if ActiveControl <> NIL then begin
// Label1.Text := 'Aktives Control: ' + ActiveControl.ClassName + ' (' +
ActiveControl.Name + ')';
//end;
end;
Sie können ja mal die deaktivierten Source-Zeilen aktiv schalten und sehen, was
angezeigt wird, wenn Sie den Fokus für einzelne Controls ändern (und z.B. in einem Grid
mit F2 in den Edit-Modus schalten)."
Miniaturansicht angehängter Grafiken
activecontrol-demo.jpg  
  Mit Zitat antworten Zitat