Usando Tela de Pesquisa Padrão : Delphi e DataSource - Parte 3
Veja nesta Quick irei mostra 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
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
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo