Uma situação bastante comum é precisar percorrer todos os componentes, de uma ou mais classes, contidos em um formulário ou container qualquer, para usar um método ou atributo dos mesmos.
Exemplo:
- Fechar todas as conexões de queries;
- Limpar todos os campos da tela;
- Desativar todos os botões da tela.
Um detalhe importante, é que cada componente inserido, será referenciado em um vetor da classe TComponent. Esse vetor é o atributo Components de cada formulário ou container.
procedure TfrmExemplo.percorrerComponentes;
var
i: Integer;
begin
{ Percorre por todos os componentes que têm frmExemplo como parent. }
for i := 0 to frmExemplo.ComponentCount - 1 do
begin
{ Verifica se o componente de índice i é da classe TEdit }
if frmExemplo.Components[i] is TEdit then
{ Usando um casting, o componente de índice i será convertido em TEdit, }
{ possibilitando que qualquer método ou atributo do mesmo possa ser usado. }
TEdit(frmExemplo.Components[i]).Clear;
end;
end;
2 comentários:
E se eu quiser percorrer todos os componentes mas pra cada tipo localizado fazer uma coisa diferente??
tipo:
se Componente[i] is ComboBox
faça alguma coisa
se Componentes[i] is CheckBox
faça outra coisa
como fazer isso???
Mike, ali no exemplo tem a seguinte linha:
if frmExemplo.Components[i] is TEdit then
Esse IF está verificando se o component é um Edit, vc pode trocar fazer esses teste para qualquer tipo: TComboBox, TLabel, e etc.
Postar um comentário