Manipular varios componentes por indice ou algo parecido?

Delphi

17/04/2008

Bom dia amigos,

Há tempos que venho tentado fazer isso mas não sei como. É o seguinte:

No meu form tem uma ´lista´ de 10 pessoas, cada pessoa é representada por um label... seria assim mais ou menos:

1 Nome1
2 Nome2
3 Nome3
4 Nome4

(até o 10)

Bom, tem um botão em que eu incluo a pessoa nessa lista, então eu coloco o nome da pessoa num edit mesmo, seleciono num combobox em que posição da lista essa pessoa vai ficar e clico em incluir para que ela seja incluida naquela posição.

Esse foi um exemplo pra ilustrar a minha duvida, que é: quando eu vou codificar a inclusão, eu vejo em qual número o combo esta, e com um case eu coloco:

case nro of
1: Nome1.caption:=edit.text;
2: Nome2.caption:=edit.text;
end;

só que é muito trabalhoso colocar instruções para cada componente. No meu caso real, eu tenho cerca de 200 labels formando essa lista, e para cada bloco do case eu tenho cerca de 10 linhas de instrução, todas identicas, só mudando o componente:

Nome1.caption:=´xxx´;
Nome1.font:=xxx;
Nome1.tag:=0;
Nome2.caption:=´xxx´;
Nome2.font:=xxx;
Nome2.tag:=0;

algo assim.

Então, tem algum jeito de fazer isso num bloco só, com algum identificador ou algum índice, como em um vetor por exemplo.
Já tentei por todos os componentes em um vetor e manipular atraves do indice do vetor, mas alem de gastar mta memoria, foi a mesma quantia de linhas de codigo.

Alguem sabe se tem alguma forma de controlar todos os labels da tela por indices ou algo parecido.


Bom, agradeço muito a todos pela atenção,
Sérgio Gobbo


Sérgio Gobbo

Sérgio Gobbo

Curtidas 0

Respostas

Lipe_sp

Lipe_sp

17/04/2008

Bom dia amigo.

Veja se isso resolve seu problema

procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
begin
  for i := 0 to ComponentCount - 1 do
  Begin
    if components[i] is TLabel then
      If (Components[i] as TLabel).Caption = edit1.Text then
        Showmessage(´É igual´);
  End;
end;



GOSTEI 0
POSTAR