Hola:
Te comento que no es la única manera de hacerlo, pues Delphi guarda los componentes en una matriz interna (así como componentes contenedores), por ejemplo:
Código Delphi
[-]
Procedure TForm1.MiProcedimiento;
var
i: Integer;
begin
with Form1 do
begin
for i:= 0 to ComponentCount - 1 do
begin
if Components[i] is TEdit then
begin
end;
end;
end;
end;
Saludos y espero te sirva