FMX.Controls.TControl.EnumControls
Delphi
procedure EnumControls(const Proc: TFunc<TControl, TEnumControlsResult>); overload;
function EnumControls(Proc: TEnumControlsRef; const VisibleOnly: Boolean = True): Boolean; overload;
C++
void __fastcall EnumControls(const System::DelphiInterface<System::Sysutils::TFunc__2<TControl*,Fmx::Types::TEnumProcResult> > Proc)/* overload */;
bool __fastcall EnumControls _DEPRECATED_ATTRIBUTE1("Use another version of EnumControls") (_di_TEnumControlsRef Proc, const bool VisibleOnly = true)/* overload */;
Inhaltsverzeichnis
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
procedure function |
public | FMX.Controls.pas FMX.Controls.hpp |
FMX.Controls | TControl |
Beschreibung
Durchläuft die Steuerelemente, die diesem Steuerelement untergeordnet sind, in einer Schleife und führt bei jedem Aufruf die angegebene Prozedur einmal pro Steuerelement mit einem anderen Steuerelement als ersten Parameter aus.
- Warnung: EnumControls ist als Funktion veraltet. Sie sollten EnumControls stattdessen als Prozedur verwenden. Auf dieser Seite wird die Syntax und die Verwendung der Prozedur EnumControls beschrieben.
EnumControls durchläuft nicht nur direkt untergeordnete Steuerelemente dieses Steuerelements, sondern anhand eines Algorithmus für die Tiefensuche auch deren untergeordnete Steuerelemente (Grand-Children) usw.
Bei jedem Steuerelement, auf das EnumControls bei der Suche trifft, wird die Prozedur Proc
ausgeführt. Diese Prozedur empfängt das jeweilige Steuerelement als Argument und gibt einen Wert mit dem Typ TEnumControlsResult zurück. Der Rückgabewert legt fest, was als Nächstes von EnumControls ausgeführt wird. Es kann einer der folgenden Werte zurückgegeben werden:
- Mit Continue wird das Durchsuchen der Steuerelemente von EnumControls wie üblich durchgeführt.
- Mit Discard werden die untergeordneten Steuerelemente des aktuellen Steuerelements (das Steuerelement im ersten Parameter) sowie deren untergeordnete Steuerelemente (Grand-Children) usw. übersprungen.
- Mit Stop wird die Suchschleife unterbrochen. Wenn EnumControls eine Schleife auf Sprachebene wäre, würde Stop dem Schlüsselwort Break entsprechen.
Beispiel
Mit dem folgenden Beispiel wird EnumControls aufgerufen, das die untergeordneten Steuerelemente eines Bereichs (Panel1
) durchläuft und eine Liste (ListOfVisibleControls
) mit allen sichtbaren Steuerelementen füllt:
In Delphi:
Panel1.EnumControls(function (Control: TControl): TEnumControlsResult
begin
if not Control.Visible then
Result := TEnumControlsResult.Discard
else
begin
ListOfVisibleControls.Add(Control);
Result := TEnumControlsResult.Continue;
end;
end);
In C++:
- 1. Definieren Sie eine Klasse, die das Interface TFunc__2 implementiert:
class TMethodReference : public TCppInterfacedObject<TFunc__2<TControl*,TEnumControlsResult> >
{
public:
TEnumControlsResult __fastcall Invoke(TControl* Control)
{
if (!Control->Visible)
return TEnumControlsResult::Discard;
else {
TForm2::ListOfVisibleControls->Add(Control);
return TEnumControlsResult::Continue;
}
}
};
- 2. Übergeben Sie dann eine Instanz dieser Klasse an EnumControls:
Panel1->EnumControls(new TMethodReference);