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.
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

O ClientDataSet1 deverá ter os seguintes campos:
- CHECK :Booleano
- NOME :String[80]
- SEXO :String[10]
- TIPO :String[20]
- OBSERVACAO :Memo
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

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.
Outros componentes podem ser utilizados na TJVDBGrid desde que sejam componentes data aware.
Abaixo está uma imagem de como ficará aplicação final

No próximo artigo aprederemos como estilizar nossa TJvDBGrid.
Baixe os fontes do artigo no GitHub