Olá galera, nesta Quick Tips, irei mostrar como podemos adicionar em um StringGrid objetos inteiros, assim como podemos fazer em Combobox, ListBox, por exemplo. Ao contrário do que muitos pensam StringGrid, não serve apenas para armazenar texto, mas também objetos, que é o foco do nosso exemplo. Vamos então a construção do exemplo.

 

            Vamos criar uma unit uCliente.pas, e salvar ela. Veja seu código completo.

 

unit uCliente;

interface

   Type

   TCliente = class

   private

      FCodigo: String;

      FSexo: String;

      FNome: String;

      procedure SetCodigo(const Value: String);

      procedure SetNome(const Value: String);

      procedure SetSexo(const Value: String);

    { private declarations }

   protected

   { protected declarations }

   public

   { public declarations }

      property Codigo: String read FCodigo write SetCodigo;

      property Nome: String read FNome write SetNome;

      property Sexo: String read FSexo write SetSexo;

   published

   { published declarations }

end;

 

implementation

 

{ TCliente }

 

procedure TCliente.SetCodigo(const Value: String);

begin

   FCodigo := Value;

end;

 

procedure TCliente.SetNome(const Value: String);

begin

   FNome := Value;

end;

 

procedure TCliente.SetSexo(const Value: String);

begin

   FSexo := Value;

end;

 

end.

 

            Agora vamos criar um form, e salvar o mesmo como uFrmPrincipal, vamos adicionar 1 StringGrid, e 2 BitBtn(BtnGravar, BtnCarregar), suas implementações são bem simples, mas antes disso precisamos dar uses em uCliente.pas.

 { Registrando no StringGrid 2 Objetos }

procedure TFrmPrincipal.BtnGravarClick(Sender: TObject);

Var

   C : TCliente;

Begin

{ Criamos aqui um primeiro objeto e armazenamos na posição 1,1 }

   C := TCliente.Create;

   C.Codigo := '1';

   C.Nome := 'Wesley Y';

   C.Sexo := 'M';

   StringGrid1.Objects[1,1] := C;

   StringGrid1.Cells[1,1] := C.Nome;

  

{ Criamos aqui um segundo objeto e armazenamos na posição 1,2 }

   C := TCliente.Create;

   C.Codigo := '2';

   C.Nome := 'Waleska';

   C.Sexo := 'F';

   StringGrid1.Objects[1,2] := C;

   StringGrid1.Cells[1,2] := C.Nome;

end;

 

{ Recuperando no StringGrid o primeiro objeto }

 

procedure TFrmPrincipal.BtnRecuperarClick(Sender: TObject);

begin

    ShowMessage(TCliente(StringGrid1.Objects[1,1]).Codigo + #13+                                                         TCliente(StringGrid1.Objects[1,1]).Nome + #13 +                                                                                   TCliente(StringGrid1.Objects[1,1]).Sexo ) ;

end;           

            Podemos notar como é simples adicionar um objeto, porém é interessante como vocês podem ver, que temos de adicionar uma descrição pra célula que contém o objeto, ilustrando assim sua identificação

 

Fico por aqui até a próxima parte. 

Um abraço 

Wesley Y

wesley@lithic.com.br