Social Icons

terça-feira, 13 de novembro de 2012

Usando TJvDBGrid – Parte 2

Nesse artigo iremos continuar a aprender os recursos avançados da TJvDBGrid. Aprenderemos hoje a como utilizar componentes Data Aware dentro das células da TJvDBGrid. Esse recurso é muito interessante, porque nos ajuda a editar registros direto pela DBGrid usando os eventos desses componentes.
Informação
Recomendamos a leitura do artigo Usando TJvDBGrid – Parte 1.
Vamos criar a aplicação exemplo então. Crie uma nova aplicação no delphi e adicione os seguintes componentes ao formulário.
  • 1 TJvDBgrid
  • 1 TDBNavigator
  • 2 TClientDataSet
  • 2 TDataSource
  • 1 TDBEdit
  • 1 TDBComboBox
  • 1 TDBLookupComboBox
imagem1
O ClientDataSet1 deverá ter os seguintes campos:
  • CHECK :Booleano
  • NOME :String[80]
  • SEXO :String[10]
  • TIPO :String[20]
  • OBSERVACAO :Memo
O ClientDataSet2 deverá ter somente um campo chamado DESCRICAO
As seguintes ligações deverão ser feitas:
  • JvDBGrid1.DataSource := DataSource1
  • DBNavigator1.DataSource := DataSource 1
  • DataSource1.DataSet := ClientDataSet 1
  • DataSource2.DataSet := ClientDataSet 2
  • DBEdit1.DataSource := DataSource1
  • DBEdit1.DataField := ‘NOME’
  • DBComboBox.DataSource := DataSource1;
  • DBComboBox.DataField := ‘SEXO’
  • DBLookupComboBox1.DataSource := DataSouce1
  • DBLookupComboBox1.DataField := ‘TIPO’
  • DBLookupComboBox1.ListSource := DataSource2’
  • DBLookupComboBox1.ListField := ‘DESCRICAO’
  • DBLookupComboBox1.KeyField := ‘DESCRICAO’
Agora vamos fazer a mágica, vamos alterar a propriedade EditControls da JVDBGrid1. Então selecione os campos NOME, SEXO, OBSERVACAO, TIPO. Depois de selecionados, para cada campo seré atribuido um Edit Control.
  • NOME: DBEdit1
  • SEXO: DBComboBox1
  • OBSERVACAO: DBMemo1 (Mudar a propriedade Rentime Size para Cell Size)
  • TIPO: DBLookupComboBox1
imagem2
Vamos implementar os seguintes códigos:

procedure TForm1.FormCreate(Sender: TObject);
begin
   ClientDataSet1.CreateDataSet;
   ClientDataSet2.CreateDataSet;

   ClientDataSet2.Append;
   ClientDataSet2DESCRICAO.AsString := 'Cliente';
   ClientDataSet2.Post;

   ClientDataSet2.Append;
   ClientDataSet2DESCRICAO.AsString := 'Fornecedor';
   ClientDataSet2.Post;

   ClientDataSet2.Append;
   ClientDataSet2DESCRICAO.AsString := 'Transportadora';
   ClientDataSet2.Post;

   ClientDataSet2.Append;
   ClientDataSet2DESCRICAO.AsString := 'Funcionario';
   ClientDataSet2.Post;

   ClientDataSet2.Append;
   ClientDataSet2DESCRICAO.AsString := 'Outros';
   ClientDataSet2.Post;

   DBComboBox1.Items.Add('Feminino');
   DBComboBox1.Items.Add('Masculino');
end;


procedure TForm1.JvDBGrid1ColumnResized(Grid: TJvDBGrid; ACol,
  NewWidth: Integer);
begin
   if JvDBGrid1.Columns[Acol].FieldName = 'OBSERVACAO' then
      DBMemo1.Width := NewWidth;
end;

Pronto! Se tudo ocorrer bem você já terá uma aplicação de exemplo que utiliza os componentes data aware direto na edição da JvDBGrid.


Dica
Outros componentes podem ser utilizados na TJVDBGrid desde que sejam componentes data aware. 

Abaixo está uma imagem de como ficará aplicação final

imagem3

No próximo artigo aprederemos como estilizar nossa TJvDBGrid.

Baixe os fontes do artigo no GitHub

Um comentário:

Diga-nos, o que achou deste artigo?