Olá galera, nesta Quick Tips, irei continuar mostrando como podemos criar uma tela de pesquisa padrão usando DataSource, para que possamos aproveitar a mesma para qualquer tipo de DataSet, ou seja ClientDataSet, DataSets do BDE, DataSets do IB, DataSets do DBExpress, entre outros.

 

Vamos à implementação do exemplo completo na tela de Pesquisa:

 

Selecione o BtnPesquisa, e no evento onClick vamos implementar :

procedure TFrmPesquisa.BtnPesquisaClick(Sender: TObject);

begin

  { Observe que este código esta comentado, pois caso você queria pesquisar com o Tipo TPString, e localizar todos os itens, você não precisa informar o nenhum valor, e vão ser carregados todos os dados desejados;

  if EdtConteudo.Text = '' then

  begin

    ShowMessage('Preenchimento do campo obrigatório!');

    Abort;

  end; }

 

  With TClientDataSet(DSPesquisa.DataSet) do

  begin

    Filtered := False;

    case TipoPesquisa of

      TPString:  Filter := UpperCase(xCampoPesquisa + ' Like ' + QuotedStr

                                 ('%' + EdtConteudo.Text + '%'));

      TPNumero: Filter := xCampoPesquisa + ' = ' + EdtConteudo.Text;

      TPData: Filter := xCampoPesquisa + ' = ' + EdtConteudo.Text;

    end;

    Filtered := True;

    Open;

    if IsEmpty then

      ShowMessage('Nenhum registro encontrado !!!');

    GridPesquisa.SetFocus;

  end;

end;

 

Selecione o EdtConteudo, e no evento onKeyPress vamos implementar :

procedure TFrmPesquisa.EdtConteudoKeyPress(Sender: TObject; var Key: Char);

begin

  if key = #13 then

    BtnPesquisa.Click;

end;

 

Selecione o FrmPesquisa, e no evento onShow vamos implementar :

procedure TFrmPesquisa.FormShow(Sender: TObject);

begin

  With TClientDataSet(DSPesquisa.DataSet) do

  begin

    Filtered := False;

    Close;

  end;

end;

 

Selecione o GridPesquisa, e no evento onDblClick vamos implementar :

procedure TFrmPesquisa.GridPesquisaDblClick(Sender: TObject);

begin

  Close;

  if DSPesquisa.DataSet.IsEmpty then

    ModalResult := mrCancel

  else

    ModalResult := mrOk;

end;

 

 

procedure TFrmPesquisa.GridPesquisaKeyPress(Sender: TObject; var Key: Char);

begin

  if Key = #13 then

  begin

    Close;

    if DSPesquisa.DataSet.IsEmpty then

      ModalResult := mrCancel

    else

    ModalResult := mrOk;

end;

 

Veja na próxima parte como usar este exemplo completo, vamos criar uma tela de cadastro usando XML, e ClientDataSet.

 

Fico por aqui ate à próxima Quick Tips. Baixe o exemplo completo neste post.

 

Um abraço

 

 

Wesley Y

wyamazack@lithic.com.br

http://www.lithic.com.br