Trabalhando com a classe TObjectList
A classe TObjectList possibilita o armazenamento de qualquer tipo de objeto em memória.
Existem casos onde há a necessidade da instanciação de vários objetos de uma ou várias classes. A TObjectList é uma classe que possibilita o armazenamento e recuperação de objetos de qualquer tipo de classe especializada pois qualquer classe automaticamente herda os atributos e métodos da classe Tobject. A sintaxe de utilização da TobjectList é a seguinte:
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, UFuncionario, StdCtrls,
Contnrs; // <- é necessário declarar a classe Contnrs
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Funcionario: TFuncionario;// <- Classe Funcionario criada para exemplificar
FuncionarioDaLista: TFuncionario;// <- Usaremos esta variável para exemplificar
//como se recupera um objeto da lista
ListaFuncionarios: TObjectList;// <- Lista de Objetos (TObjectList)
implementation
uses UPessoa;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ListaFuncionarios := TObjectList.Create;// <- Cria lista de Funcionarios
Funcionario := TFuncionario.Create;// <- Cria Funcionario em memória
with Funcionario do
begin
Nome := Danilo Dadonas;
DataNascto := 01/01/1800;
Sexo := M;
TipoSalario := Horista;
ValorHoraMes := 20.00;
end;
ListaFuncionarios.Add(Funcionario); // <- Armazena Funcionario na lista
FuncionarioDaLista := TFuncionario.Create;
FuncionarioDaLista := TFuncionario(ListaFuncionarios.Items[0]);// <- É necessário fazer um cast
//no objeto pois se colocar diretamente ListaFuncionarios.Items[0] o compilador não entende que
//o objeto da lista é da classe TFuncionario. A primeira posição da lista é 0
end;
end.
Desconhecido Da Silva
Danilo Dadonas(dadonas@democrata.com.br) é graduado em Sistemas de Informação. Atua como desenvolvedor Senior para uma indústria calçadista.
O que você achou deste post?
4 COMENTÁRIOS
Villatore Informática Ltda
Como é destruido os objetos e a lista de objetos?
o Objeto FuncionarioDaLista é a referênncia em memória, porém ele foi criado (construtor Create). O que aconteceu quando A memória do objeto Funcionario, que também alocou memória, foi passado por referência para o objeto FuncionarioDalista?
Ou seja, no final posso Dar free em todos ou só no funcionarioDaLista?
neste exemplo, não fica memória sem desalocar?
Obrigado.
o Objeto FuncionarioDaLista é a referênncia em memória, porém ele foi criado (construtor Create). O que aconteceu quando A memória do objeto Funcionario, que também alocou memória, foi passado por referência para o objeto FuncionarioDalista?
Ou seja, no final posso Dar free em todos ou só no funcionarioDaLista?
neste exemplo, não fica memória sem desalocar?
Obrigado.
[há +1 ano] -
Responder
Anizair Lopes
Olá Respondendo a pergunta do colega,
A Classe TObjectLIst é criada com a OnwsObject setada para true ou seja, ao liberar a lista de funcionário automaticamente todos os objetos a ela vinculada são liberadas também
www.anizairlopes.com
A Classe TObjectLIst é criada com a OnwsObject setada para true ou seja, ao liberar a lista de funcionário automaticamente todos os objetos a ela vinculada são liberadas também
www.anizairlopes.com
[há +1 ano] -
Responder
Wanderson Soffe
Olá. Estou programando em Delphi7 e estou criando um demo baseado em Delphi 2007. O tutorial que estou montando esse demo utiliza o TobjctList mas minha versão do Delphi não esta reconhecendo essa classe existe classe similar para isso? Desde já agradeço pela ajuda.
[há +1 mês] -
Responder
Wesley Yamazack
Olá amigo, bom funciona sim, pois isso existe desde não sei quando no Delphi. O que pode está acontecendo é você não ter declarado na uses a classe - Contnrs
[CODE]
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Contnrs;
type
[/CODE]
Experimente colocar esta classe na uses e veja se irá resolver.
Um abraço
[CODE]
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Contnrs;
type
[/CODE]
Experimente colocar esta classe na uses e veja se irá resolver.
Um abraço
[há +1 mês] -
Responder
Cursos relacionados
Publicidade



