Desenvolvimento - Delphi

Criando dinamicamente campos em um componente clientDataSet

O objetivo deste artigo é mostrar todo o dinamismo presente no componente ClientDataSet.

por Vilson Moro



O objetivo deste artigo é mostrar todo o dinamismo presente no componente ClientDataSet. Para ilustrar nosso exemplo usaremos dois componentes TEdit , um botão, um componente Dbgrid, um compente ClientDataSet e um componente DataSource.Monte um formulário como o ilustrado abaixo:

O próximo passo é ligar os componentes:

  • Na propriedade DataSource do Dbgrid associe Datasource1;
  • Na propriedade DataSet do DataSource1 associe ClientDataSet1;

Agora no evento onclick do botão digite o seguinte código:

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  //verificamos se não tem nenhum field no ClientDataSet
  if ClientDataSet1.FieldCount = 0 then
  begin
    ClientDataSet1.FieldDefs.Clear;//Limpamos campos
    ClientDataSet1.FieldDefs.Add("Codigo",ftInteger);//adicionamos campos
    ClientDataSet1.FieldDefs.Add("Endereco",ftString,40,false);
    ClientDataSet1.CreateDataSet;
  end;
  ClientDataSet1.Append;//e inserimos dados
  ClientDataSet1.Fieldbyname("Codigo").AsInteger := StrToIntDef(EdtCodigo.text,0);
  ClientDataSet1.Fieldbyname("Endereco").AsString := EdtNome.text;
  ClientDataSet1.Post;
  EdtCodigo.Clear;
  EdtNome.Clear;
  EdtCodigo.SetFocus;
end;

Os dados informados nos componentes Tedit irão alimentar os campos do ClientDataSet e como os componentes estão associados irá espelhar no Dbgrid os dados.Esses dados não refletem consulta de banco de dados, pois não foram armazenados em nenhum banco. Como então esses dados são armazenados? Estão armazenados em cache de dados local do ClientDataSet.

Espero que possa ter contribuído com alguma coisa, nos próximos artigos veremos mais alguma coisa sobre a funcionalidade deste poderoso componente.

Vilson Moro

Vilson Moro