FMX.Controls.TControl.EnumControls

提供: Appmethod Libraries
移動先: 案内検索

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

プロパティ

種類 可視性 ソース ユニット
procedure
function
public
FMX.Controls.pas
FMX.Controls.hpp
FMX.Controls TControl

説明

このコントロールのであるコントロールについて反復処理を行い、指定された手続きをコントロールごとに 1 回実行します。その際、各呼び出しの第 1 パラメータには異なるコントロールが指定されます。


警告: 関数の EnumControls は非推奨です。手続きの方を使用してください。このページでは、EnumControls 手続きの構文と使い方を説明します。

EnumControls では、深さ優先探索アルゴリズムを使用して、このコントロールの直接の子だけでなく、それらの子(孫)などについても反復処理を行います。

EnumControls は、探索中にコントロールを発見するたびに <Proc> 手続きを実行します。この手続きは、発見されたコントロールを引数として受け取り、型が TEnumControlsResult の値を返します。この戻り値によって、EnumControls が次に何を行うかが決まります。次の値のいずれかを返すことができます。

以下の例では、EnumControls を呼び出してパネル(Panel1)の子に対して反復処理を行い、表示されるすべてのコントロールを含むリスト(ListOfVisibleControls)を作成しています。

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

C++ の場合:

1. TFunc__2 インターフェイスを実装するクラスを定義します。
 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. その後、このクラスのインスタンスを EnumControls に渡します。
 Panel1->EnumControls(new TMethodReference);

関連項目