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)."