Lista de Objetos em Delphi
Veja neste artigo como podemos criar uma lista de objetos para armazenar as informações de vários objetos criados de uma determinada classe.
Olá pessoal, venho neste artigo mostrar um pouco mais sobre o nosso Delphi. Desta vez veremos como fazer uma lista de objetos usando o TList e uma classe criada. No nosso exemplo vamos criar inicialmente a classe TCliente. Para isso, vamos precisar de uma nova unit: salve-a com o nome de Cliente.pas. Em seguida criaremos apenas os métodos básicos de uma lista, como Count, Add e Remove. Vemos a sua implementação no código da Listagem 1.
Criando listas de objetos em Delphi
Listagem 1. Código da unit Cliente ao ser criada
unit Cliente;
interface
implementation
end.
Agora vamos preparar a nossa classe. Observe que declarei a classe TCliente herdando de ? TObject.
Logo em seguida declarei as propriedades da classe: IDCliente, Nome e CNPJ, como mostra a Listagem 2. Neste momento pressionamos as teclas “CTRL+SHIF+C” para que o Delphi possa preparar os métodos gets e sets.
Listagem 2. Declaração das propertys da classe TCliente
unit Cliente;
interface
Type
TCliente = class
private
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
property IDCliente: Integer;
property Nome: String;
property CNPJ: String;
published
{ published declarations }
end;
implementation
end.
Como o objetivo do artigo não é mostrar a validação nos métodos, vou remover o “LIXO” gerado pelo Delphi, então nosso código ficará como o apresentado na Listagem 3.
Listagem 3. Implementando e Excluindo código desnecessário
unit Cliente;
interface
Type
TCliente = class
private
FCNPJ: String;
FIDCliente: Integer;
FNome: String;
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
property IDCliente: Integer read FIDCliente write FIDCliente;
property Nome : String read FNome write FNome;
property CNPJ : String read FCNPJ write FCNPJ;
published
{ published declarations }
end;
implementation
end.
Até aqui concluímos a criação da classe TCliente e de seus atributos.
Vamos ver agora a criação da nossa lista de Clientes, e para isso vamos criar outra unit e salvá-la como ListaCliente.pas, como mostra a Listagem 4.
Listagem 4. Código da unit ListaCliente ao ser criada
unit ListaCliente;
interface
implementation
end.
Com a nossa unit criada agora vamos poder declarar nossa classe e seus métodos. É muito importante lembrar de sempre declarar USES quando formos utilizar objetos/classes que estão em outras Units, como vemos na Listagem 5.
Listagem 5. Declarando Classe e Métodos
unit ListaCliente;
interface
uses Classes, Cliente, Dialogs; {Observe que aqui fizemos referencias
as duas classes necessárias para fazer o Exemplo }
Type
TListaCliente = class
private
{ private declarations }
FListaClientes : TList;
protected
{ protected declarations }
public
{ public declarations }
constructor Create;
procedure Adicionar(pCliente: TCliente);
procedure Remover(Index: Integer);
function Count: Integer;
published
{ published declarations }
end;
implementation
end.
Agora que já declaramos tudo, mas falta implementar método a método, certo? Então vamos começar pelo mais fácil: o nosso construtor, como mostram as Listagens 6 a 9.
Listagem 6. Implementando método Create
constructor TListaCliente.Create;
begin
inherited Create;
FListaClientes := TList.Create;
end;
Listagem 7. Implementando método Count
function TListaCliente.Count: Integer;
begin
Result := FListaClientes.Count;
end;
Listagem 8. Implementando método Adicionar
procedure TListaCliente.Adicionar(pCliente: TCliente);
begin
FListaClientes.Add(pCliente);
end;
Listagem 9. Implementando método Remover
procedure TListaCliente.Remover(Index: Integer);
begin
if Index < Count then
FListaClientes.Delete(Index)
else
ShowMessage("Item não encontrado!");
end;
Com isso nós já temos a lista pronta para ser utilizada. Agora vamos construir um pequeno exemplo e colocar o que foi visto no artigo em prática.
Não vamos perder tempo com Tela, por isso crie um formulário na nossa aplicação ou então aproveite o que o Delphi já cria automaticamente. Mude seu nome para FrmCliente e salve o mesmo como uFrmCliente.pas. Monte uma tela com a seguinte interface da Figura 1. Veja que o nome dos componentes estão visíveis.
O primeiro passo depois do layout pronto é incluir no FrmCliente as uses em Cliente e ListaCliente, como mostra a Listagem 10.
Listagem 10. Uses nas classes criadas
unit uFrmCliente;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Cliente, ListaCliente;
Na Listagem 11 declaramos uma variável do tipo TListaCliente para poder guardar os clientes cadastrados na nossa lista.
Listagem 11. Criando variável para armazenar os Objetos
type
TFrmCliente = class(TForm)
BtnAdicionar: TButton;
BtnRemover: TButton;
BtnContar: TButton;
EdtIDCliente: TLabeledEdit;
EdtNome: TLabeledEdit;
EdtCNPJ: TLabeledEdit;
private
{ Private declarations }
tempListaCliente : TListaCliente; // Variável para armazenar a Lista
public
{ Public declarations }
end;
Logo em seguida precisamos instanciar nossa lista e, para isso, vou usar o próprio evento onCreate do formulário para facilitar a implementação, como mostra a Listagem 12.
Listagem 12. Instanciado a Lista de Clientes
procedure TFrmCliente.FormCreate(Sender: TObject);
begin
tempListaCliente := TListaCliente.Create;
end;
Neste momento já estamos aptos a manusear a nossa lista, incluindo, removendo e até contando. Porém, não temos itens dentro da lista, então vamos começar pelo Adicionar, como mostra a Listagem 13.
Listagem 13. Evento onClick do BtnAdicionar.
procedure TFrmCliente.BtnAdicionarClick(Sender: TObject);
Var
tempCliente : TCliente;
begin
tempCliente := TCliente.Create;
with tempCliente do
begin
IDCliente := StrToInt(EdtIDCliente.Text); {Usamos StrToInt para poder
converter o conteúdo de String para Inteiro}
Nome := EdtNome.Text;
CNPJ := EdtCNPJ.Text;
end;
tempListaCliente.Adicionar(tempCliente);
end;
Agora vamos utilizar o botão para remover. Note que estou usando um InputQuery apenas para selecionar o Item a ser removido, como mostra a Listagem 14.
Listagem 14. Evento onClick do BtnRemover.
procedure TFrmCliente.BtnRemoverClick(Sender: TObject);
Var
tempID: String;
begin
if InputQuery("Remover Cliente","Digite o item a ser removido",tempID) then
begin
tempListaCliente.Remover(StrToInt(tempID));
end;
end;
E por último, mas não menos importante, tem o Count, que contará quantos itens temos na nossa lista, como mostra a Listagem 15.
Listagem 15. Evento onClick do BtnContar.
procedure TFrmCliente.BtnContarClick(Sender: TObject);
begin
ShowMessage("Total de Registro da Lista: " + IntToStr(tempListaCliente.Count));
end;
Concluindo nosso artigo, este exemplo mostrou de forma básica como podemos trabalhar com uma lista de objetos dentro do Delphi, funcionando em qualquer uma das versões do Delphi.
Links Úteis
- Guia de Referência Delphi:
Neste Guia de Referência você encontrará o conteúdo que precisa para iniciar seus estudos em Delphi, uma plataforma para desenvolvimento de aplicativos completa, principalmente para soluções desktop e mobile.
Saiba mais sobre Delphi ;)
- Curso: O que é Delphi?:
Este curso tem como objetivo apresentar uma tecnologia que está sempre se renovando para acompanhar as necessidades e tendências do mercado de desenvolvimento de software: o Delphi. - Curso: Criando minha primeira aplicação em Delphi:
Neste curso você aprenderá os primeiros passos para criar uma aplicação em Delphi.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo