Array
(
)

Manipulando componentes

Fmd
   - 05 set 2004

Estou criando componentes, enquanto o programa está rodando, com o seguinte código:

#Código


procedure TfrmMain.btCriarClick(Sender: TObject);
var
gBox: TGroupBox;
lAb: TLabel;
iMage: TImage;
i: Integer;
begin
for i := 1 to 5 do
begin
//Cria GroupBox
gBox := TGroupBox.Create(frmMain);
gBox.Caption := ´Teste´ + InttoStr(i);
gBox.Name := ´Afet´ + IntToStr(i);
gBox.Height := 113;
gBox.Width := 145;
gBox.Left := 30 * i;
gBox.Top := 50 * i;
frmMain.InsertControl(gBox);

//Cria Label no Group Box
lAb := TLabel.Create(frmMain);
lAb.Caption := ´Felipe ´ + InttoStr(i);
lAb.Name := ´lbl´ + InttoStr(i);
lAb.Left := 10;
lAb.Top := 50;
gBox.InsertControl(lAb);

//Cria Imagem no Group Box
iMage := TImage.Create(frmMain);
iMage.AutoSize := True;
iMage.Left := 30;
iMage.Top := 20;
iMage.Picture.LoadFromFile(´D:\Imagens\ICO\48x48\48_(5).ico´);
gBox.InsertControl(iMage);
end;
end;


Até aí, tudo bem.

Mas como faço para mudar, por exemplo, o Caption de um desses labels criados em tempo de execução?


Vinicius2k
   - 05 set 2004

Vc quer dizer de um outro local que não seja esta procedure, correto?

Vc tem duas opções...
1. Declarar as variáveis TLabel na seção public do form se quiser que possam ser manipuladas outro form ou função...
2. Declarar as variáveis TLabel na seção private do form se elas só puderem ser manipuladas pelo próprio form a que pertencem...

T+


Fmd
   - 06 set 2004

Eu não consegui me explicar direito:

Por exemplo, com aquela rotina, vou criar um Label com o Name de [u:49d79cba89]lbl5[/u:49d79cba89].

Como posso fazer para depois trocar, por exemplo, o Caption do [u:49d79cba89]lbl5[/u:49d79cba89], se ele não existe quando compilo o programa?


Nildo
   - 06 set 2004

TLabel( FindComponent( ´lbl5´ ) ).caption := ´teste´;


Fmd
   - 06 set 2004

Valeu Nildo. Era isso mesmo que eu estava precisando.