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

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 :

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

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