Acceder a componentes mediante un bucle  

Enviado Por: Q3 Team
Web : http://www.q3.nu
Email: dlib@q3.nu
Fecha: 22/12/99

Truco accedido 100 veces

 


A veces nos interesaría acceder a los componentes a través de un bucle For...Next. Por ejemplo, Button[i].caption:='hola'. Hay quien prefiere hacerlo creando array de controles. Esta bien, pero te obliga a programarlo todo. En este ejemplo, cambiaremos los captions de 5 botones con un bucle.

Pon 5 TButtons en tu form, Button1...Button5
Pon este código en el OnCLick del Button1:


 procedure TForm1.Button1Click(Sender: TObject);
 var
    i:integer;
 begin
   for i:=1 to 5 do
     TButton( FindComponent('Button'+IntToStr(i)) ).Caption:='Hola';
 end;




Otra manera:


 procedure TForm1.Button1Click(Sender: TObject);
 var
    i:integer;
 begin
   for i:=1 to 5 do
     (FindComponent('Button'+IntToStr(i)) as TButton).Caption:='Hola';
 end;



Si los componentes estuvieran en otra form, por ejemplo en la form2:


 procedure TForm1.Button1Click(Sender: TObject);
 var
    i:integer;
 begin
   for i:=1 to 5 do
     (Form2.FindComponent('Button'+IntToStr(i)) as TButton).Caption:='Hola';
 end;