sábado, 15 de abril de 2017

Cadastro Cliente Servidor Parte II

Olá...
Continuando nosso cadastro cliente servidor, vamos implantar uma pequena rotina de pesquisar no cadastro.

- Abra o projeto que iniciamos no post anterior.
- Adicione um FDQuery ao Datamodule e altere a propriedadade name para qAgendaPesquisa e a propriedade Connection para o FDConnection1.
- No menu principal vamos em File/New/VCL Form Delphi.
- Altere as seguintes propriedades:
Caption para Pesquisar;
Name para fPesquisar;
Salve-o como uPesquisar.
Agora adicione os seguintes Componentes:
3 GroupBox.
1 ComboBox renomeie para cbCampos (onde colocaremos os nomes dos campos a serem pesquisados).
1 RadioGroup  renomeie para rgCriterios (servirá para definir os critérios da procura).
1 Edit renomeie para edtLocalizar (servirá para receber o texto a ser localizado).
1 DataSource DataSource1.
1 Dbgrid Dbgrid1.


Tecle Alt+F11 e adicione u unit do Dm à cláusula Use do Form de pesquisa.

Agora ligue a propriedade DataSet do DataSource1 à qAgendaPesquisa, veja abaixo:

Agora ligue a propriedade DataSet do DataSource1 à qAgendaPesquisa, veja abaixo:

Na propriedade Items do cbCampos Digite:
Nome
Telefone
E-Mail


Veja a Tela Pronta:




Agora no fPesquisar vamos criar uma função que dará ao form chamante qual foi a escolha do usuário.

Antes do Private da unit, vamo fazer a função.
type
  TfPesquisar = class(TForm)
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    rgCriterios: TRadioGroup;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    cbCampos: TComboBox;
    edtLocalizar: TEdit;
    function show():TModalResult;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Tecle Shift+Ctrl+C para criar a função:
function TfPesquisar.show: TModalResult;
begin

end;

vamos digitar o seguinte dentro da função: result:=inherited ShowModal;
Ficou Assim:
function TfPesquisar.show: TModalResult;
begin
  result:=inherited ShowModal;
end;

Agora vamos implementar as rotinas da pesquisa:

OnShow do Form.
procedure TfPesquisar.FormShow(Sender: TObject);
begin
   Dm.qAgendaPesquisa.Close;
   cbCampos.ItemIndex   := 0;
   rgCriterios.ItemIndex:=0;
   edtLocalizar.SetFocus;
end;


No Evento OnKeyDown do DbGrid digite:
procedure TfPesquisar.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=VK_RETURN then begin
    if Dm.qAgendaPesquisa.RecordCount>0 then begin
      ModalResult:=MrOk;
    end;
  end;
  if key=VK_ESCAPE then begin
     ModalResult:=mrCancel;
  end;
end;

No Evento OnKeyDown do edtLocalizar digite:
procedure TfPesquisar.edtLocalizarKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  txtSQL:String;
begin
  if key=VK_RETURN then begin
    if Length(edtLocalizar.Text)>0 then begin
      with Dm.qAgendaPesquisa do Begin
        Close;
        Sql.Clear;
        case cbCampos.ItemIndex of
          0:Sql.Add('SELECT ID, NOME, TELEFONE, EMAIL FROM VI_AGENDA WHERE NOME LIKE :LOCALIZAR');
          1:Sql.Add('SELECT ID, NOME, TELEFONE, EMAIL FROM VI_AGENDA WHERE TELEFONE LIKE :Localizar');
          2:Sql.Add('SELECT ID, NOME, TELEFONE, EMAIL FROM VI_AGENDA WHERE EMAIL LIKE :Localizar');
        end;
        case rgCriterios.ItemIndex of
          0:ParamByName('localizar').AsString :=edtLocalizar.Text+'%'; //Procura pelo inicio da string
          1:ParamByName('localizar').AsString :='%'+edtLocalizar.Text+'%'; //Procura em qualquer parte da string
        end;
        Open;
        if RecordCount>0 then
          DBGrid1.SetFocus;
      End;
    end;
  end;
end;

Ok, agora nosso form de pesquisa está pronto.

Vamos agora implementar o código para chamar o form de pesquisa.

No Form Principal (no meu caso Form1),  adicione a unit do fPesquisa com Alt+F11.

No Form Principal (no meu caso Form1), coloque um Button e no onclick dele coloque:
procedure TForm1.btPesquisarClick(Sender: TObject);
begin
   fPesquisar:=TfPesquisar.Create(Application);
   if fPesquisar.show()=MrOk then
     Banco_Tela(Dm.qAgendaPesquisa, Form1);
   fPesquisar.Free;
end;

Não esqueça de colocar o fPesquisa como Available Forms no menu Preject/option.


Pronto, está feita a nossa pesquisa, você pode melhorar e muuuito estas rotinas e layout.

Duvidas e sugestões, comente.


Nenhum comentário:

Postar um comentário