Buscar

Usando listas - parte ii

nome

Alessandro De Oliveira Alves

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

Olá amigos, estamos aqui, para dar continuidade ao artigo “Usando Listas”.
Bem, no artigo anterior, aprendemos a criar e manipular listas, através da classe TList.
Hoje, para finalizar a classe TList, vamos ver como é possível alterar propriedades de objetos já contidos na lista e como encontrar um determinado objeto pelo seu nome.
Vamos continuar usando o mesmo formulário do artigo anterior, fazendo apenas algumas modificações.
Vamos adicionar os seguintes componentes:
01 Groupbox
Name = gbxManProps
Dentro do Groupbox:
03 Labels
Label 01
Name = lbClassName
Caption = Class Name
Label 02
Name = lbListIndex
Caption = List Index
Label 03
Name = lbCompName
Caption = Setar Name =
01 Combobox
Name = cbxClassName
02 Edit’s
Edit 01
Name = edtListIndex
Edit 02
Name = edtValor
01 Botão
Name = btnAplicar
Caption = Aplicar
02 Botões
Botão 01
Name = btnLerInformacoes
Caption = Ler Informações da Lista
Botão 02
Name = btnSearchComp
Caption = Localizar Componente pela Propriedade Name
01 Edit
Name = edtNamePesq
01 ListView
Name = lstInfoList
ViewStyle = vsReport
GridLines = True
Dê um duplo clique no ListView e adicione 2 ListColumns, no primeiro coloque o caption “Componente” no segundo o caption “Name”.
O Formulário terá agora, esta aparência:
Aparência do Formulário
No evento “OnClick” do botão “Aplicar”, insira o código:
procedure TfrmExemploTLista.btnAplicarClick(Sender: TObject);
var
pValor : String;
idxList : Integer;
begin
pValor := Trim(edtValor.Text);
idxList := StrToInt(edtListIndex.Text);
if MyList <> nil then
begin
if (UpperCase(TObject(MyList.Items[idxList]).ClassName) =
UpperCase(cbxClassName.Text)) then
begin
TComponent(MyList.Items[idxList]).Name := pValor;
end
Showmessage('Os índice informado não corresponde à classe informada!');
end;
end;
Neste código, verificamos se o objeto contido no índice informado é mesmo do tipo que informamos no combobox (cbxClassName). Feito isso fazemos o typecast para o tipo de objeto TComponent, já que, TComponent é uma classe herdada de TObject e implementa a propriedade “name”, então, definimos a propriedade “name” do objeto.
No evento “OnClick” do botão “Ler Informações da Lista”, insira o código:
procedure TfrmExemploTLista.btnLerInformacoesClick(Sender: TObject);
var
i : integer;
Item : TListItem;
begin
lstInfoList.Clear;
if MyList <> nil then
begin
for i := 0 to MyList.Count-1 do
begin
Item := lstInfoList.Items.Add;
Item.Caption := TObject(MyList.Items[i]).ClassName;
Item.SubItems.Add(TComponent(MyList.Items[i]).Name);
end;
end;
end;
Aqui, percorremos a lista e adicionamos as informações encontradas na ListView para visualizarmos as alterações que efetuamos.
Finalmente, vamos localizar um componente usando apenas seu nome.
No evento “OnClick” do botão “Localizar Componente pela propriedade Name” insira o código:
procedure TfrmExemploTLista.btnSearchCompClick(Sender: TObject);
var
i : integer;
begin
for i := 0 to MyList.Count-1 do
begin
if TComponent(MyList.Items[i]).Name = Trim(edtNamePesq.Text) then
begin
Showmessage('O objeto com este nome é um '+TObject(MyList.Items[i]).ClassName + ' E encontra-se no índice '+ Intostr(i)+ ' da lista');
end;
end;
end;
Aqui, percorremos a lista novamente, buscando um objeto que tenha o nome que desejamos localizar. Uma vez encontrado o objeto, retornamos, em uma mensagem, o nome da classe a que pertence o objeto e o índice da lista onde o mesmo se encontra.
Bem, é isso aí pessoal, com este simples exercício, podemos ver grandes possibilidades de aplicação para a classe TList.
Espero que assim possam fazer melhor uso desta poderosa classe.
No próximo artigo, veremos aplicações bastante úteis para a TStringList.

Para baixar os fontes deste artigo, clique aqui.
Um grande abraço,
Alessandro Alves
planetadelphi@oppus.eti.br
www.oppus.eti.br

Publicidade

Vote no artigo




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes do artigo

Categoria: Object pascal
Adicionado dia: 23/05/06
Por: Alessandro De Oliveira Alves
Visualizado: 16393 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009