FMX.Controls.TControl.EnumControls

Aus Appmethod Libraries
Wechseln zu: Navigation, Suche

Object Pascal

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 */;

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 Object Pascal:

 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);

Siehe auch