Muy bueno, me recuerda mucho a
esta pequeña joya creada por David Heffernan que utilizo para Vcl, y me permite escribir este tipo de codigo, utilizando genericos, predicados y acciones:
Código Delphi
[-]
procedure TForm1.btnCountAllClick(Sender: TObject);
begin
InfoMsgFmt('%d', [TControls.ChildCount< TWinControl >(Self)]);
end;
procedure TForm1.btnCountButtonsClick(Sender: TObject);
begin
InfoMsgFmt('%d', [TControls.ChildCount< TWinControl >(Self, function(AControl: TWinControl): Boolean
begin
Result := AControl is TButton
end)]);
end;
procedure TForm1.btnWalkControlsClick(Sender: TObject);
begin
TControls.WalkControls< TWinControl >(Self, procedure(AControl: TWinControl)
begin
InfoMsg(AControl.ClassName);
end);
end;
Saludos