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 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:
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.
Nenhum comentário:
Postar um comentário