DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

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

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



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.
[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
[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
[há +1 mês] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03