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 de como usar a nossa tela de Pesquisa:

Iremos adicionar um Form, e salvar o mesmo como uFrmPrincipal.pas, e logo em seguida mudar seu nome para FrmPrincipal, e agora vamos construir um XML.

 

Construindo o XML :

Adicione ao Form :

1 ClientDataSet ( CDSCliente )

1 DataSource ( DSCliente )

1 DBGrid ( DBGrid1 )

1 DBNavigator (DBNavigator1 )

1 TButton( BtnPesquisa )

1 PopMenu (PopMenu1)

 

Vamos criar 3 campos no nosso CDSCliente, e no campo FileName vamos colocar DB.XML

 pesquisa


 

Após adicionar os campos clique com o Botão direito sobre o CDSCliente, e execute o item CreateDataSet(isso fará com que seja criada a estrutura do DataSet ), logo em seguida arraste os campos para o Form, veja como exemplo esta ficando :

 

 pesquisa



Agora vamos adicionar itens no PopMenu1, veja como deverá ficar :

 pesquisa


 

Selecione o BtnPesquisa e altere a propriedade DropDownMenu para PopMenu1, e também a propriedade Style para bsSplitButton( Observação estas propriedades só te no Delphi 2010, em diante ), para quem não usar esta versão, basta implementar separadamente os eventos de pesquisa.

 

Selecione o PopMenu1 e o item Nome, e no evento vamos implementar :

 

procedure TFrmPrincipal.Nome1Click (Sender: TObject);

begin

   Try

      FrmPesquisa := TFrmPesquisa.Create(Self);

      With FrmPesquisa do

      begin

         DSPesquisa.DataSet := DSCliente.DataSet;

         GridPesquisa.Columns[0].FieldName := 'IDCliente';

         GridPesquisa.Columns[1].FieldName := 'NomeCliente';

         TipoPesquisa := TPString;

         xCampoPesquisa := 'NomeCliente';

         PnlPesquisa.Caption := 'Pesquisar de Cliente - Nome';

         FrmPesquisa.ShowModal;

         if FrmPesquisa.ModalResult = mrOk then

         begin

            ShowMessage('Caso você queira implementar algum código se o registro

            for localizado');

            DSCliente.Edit;

         end;

      end;

   Finally

      FreeAndNil(FrmPesquisa);

   End;

end;

 

Selecione o PopMenu1 e o item Codigo, e no evento vamos implementar :

 

procedure TFrmPrincipal.Codigo1Click(Sender: TObject);

begin

   Try

      FrmPesquisa := TFrmPesquisa.Create(Self);

      With FrmPesquisa do

      begin

         DSPesquisa.DataSet := DSCliente.DataSet;

         GridPesquisa.Columns[0].FieldName := 'IDCliente';

         GridPesquisa.Columns[1].FieldName := 'NomeCliente';

         TipoPesquisa := TPNumero;

         xCampoPesquisa := 'IDCliente';

         PnlPesquisa.Caption := 'Pesquisar de Cliente – Código ';

         FrmPesquisa.ShowModal;

         if FrmPesquisa.ModalResult = mrOk then

         begin

            ShowMessage('Caso você queira implementar algum código se o registro       

            for localizado');

         DSCliente.Edit;

         end;

      end;

   Finally

      FreeAndNil(FrmPesquisa);

   End;

end;

 

Selecione o PopMenu1 e o item Sexo Masculino, e no evento vamos implementar:

procedure TFrmPrincipal.Sexo1Click(Sender: TObject);

begin

   Try

      FrmPesquisa := TFrmPesquisa.Create(Self);

      With FrmPesquisa do

      begin

         DSPesquisa.DataSet := DSCliente.DataSet;

         GridPesquisa.Columns[0].FieldName := 'IDCliente';

         GridPesquisa.Columns[1].FieldName := 'NomeCliente';

         TipoPesquisa := TPString;

         xCampoPesquisa := 'Sexo';

         PnlPesquisa.Caption := 'Pesquisar de Sexo - Masculino';

         EdtConteudo.Text := 'M';

         FrmPesquisa.ShowModal;

         if FrmPesquisa.ModalResult = mrOk then

         begin

            ShowMessage('Caso você queira implementar algum código se o registro       

                  for localizado');

            DSCliente.Edit;

         end;

      end;

   Finally

      FreeAndNil(FrmPesquisa);

   End;

end;

 

Selecione o PopMenu1 e o item Sexo Femino, e no evento vamos implementar:

 

procedure TFrmPrincipal.Sexo2Click(Sender: TObject);

begin

   Try

      FrmPesquisa := TFrmPesquisa.Create(Self);

      With FrmPesquisa do

      begin

         DSPesquisa.DataSet := DSCliente.DataSet;

         GridPesquisa.Columns[0].FieldName := 'IDCliente';

         GridPesquisa.Columns[1].FieldName := 'NomeCliente';

         TipoPesquisa := TPString;

         xCampoPesquisa := 'Sexo';

         PnlPesquisa.Caption := 'Pesquisar de Sexo - Feminino';

         EdtConteudo.Text := 'F';

         FrmPesquisa.ShowModal;

         if FrmPesquisa.ModalResult = mrOk then

         begin

            ShowMessage('Caso você queira implementar algum código se o registro

            for localizado');

            DSCliente.Edit;

         end;

      end;

   Finally

      FreeAndNil(FrmPesquisa);

   End;

end;

 

 

Agora nosso exemplo esta completo, vou apenas mostrar agora como adicionar uma determina coluna caso vocês precisem, ou queiram informar mais colunas na hora de pesquisar.

 

 

procedure TFrmPrincipal.Sexo2Click(Sender: TObject);

begin

   Try

      FrmPesquisa := TFrmPesquisa.Create(Self);

      With FrmPesquisa do

      begin

         DSPesquisa.DataSet := DSCliente.DataSet;

         GridPesquisa.Columns[0].FieldName := 'IDCliente';

         GridPesquisa.Columns[1].FieldName := 'NomeCliente';

         GridPesquisa.Columns.Add.FieldName := 'Sexo';

         GridPesquisa.Columns[2].Width := 30;

         GridPesquisa.Columns.Add.FieldName := 'IDCliente';

         GridPesquisa.Columns[3].Width := 50;

         TipoPesquisa := TPString;

         xCampoPesquisa := 'Sexo';

         PnlPesquisa.Caption := 'Pesquisar de Sexo - Feminino';

         EdtConteudo.Text := 'F';

         FrmPesquisa.ShowModal;

         if FrmPesquisa.ModalResult = mrOk then

         begin

            ShowMessage('Caso você queira implementar algum código se o registro

            for localizado');

            DSCliente.Edit;

         end;

      end;

   Finally

      FreeAndNil(FrmPesquisa);

   End;

end;

 

 

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

 

Um abraço

 

 

Wesley Y