Manipular varios componentes por indice ou algo parecido?
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
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
Curtidas 0
Respostas
Lipe_sp
17/04/2008
Bom dia amigo.
Veja se isso resolve seu problema
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