Yo en lo personal utilizo otro metodo. Si tengo por ejemplo 20 EDIT dentro de una form a todos ellos les pongo numeros consecutivos de esta forma :
Edit1
Edit2
Edit3
.
.
.
Edit20
Cuando necesito recorrerlos para saber sus valores o para realizar cualquier otra operación lo hago de la siguiente forma :
Código:
For i:=1 To 20 Do
With TEdit (FindComponent ('Edit'+IntToStr(i)) Do
Begin
// Aqui hago lo que tenga que hacer con su valor
End;
¿Sirve?
Una forma similar con los botones, Le asignos diferentes numero en la propiedad TAG del boton para diferenciarlos, pero le asigno el mismo evento CLIC a todos y dentro del procedimiento del evento clic utilizo la clausula CASE para identificar donde hizo clic el user
Código:
Case (Sender as TComponent).Tag of
1 : ; //
2 : ; //
.
.
End;
Saludos