Fazer uma Busca Inteligente - preciso da ajuda de vocês.

Delphi

15/08/2003

Tenho um executavel de visualização de notas, onde o aluno só pode ver e não pode editar.
Os nomes são mostrados em um dbgrid em ordem alfabetica, a busca que quero fazer é a seguinte:

O aluno deverá digitar a 1º letra do seu nome, no dbgrid mesmo sem ter que abrir qualquer tela, e o sistema deve iniciar a procura o seja.

o aluno digita ´P´
e o sistema mostra os nomes iniciados com a letra ´P´
então ela digita ´a´
e o sistema mostra os nomes Iniciados com ´P´ e na seguencia ´a´
e assim por diante.

Fico muito grato a agueles que responderem ao topico.


Machado

Machado

Curtidas 0

Respostas

Pardal2003

Pardal2003

15/08/2003

Olá amigo,

Eu fiz uma vez algo parecido da seguinte maneira:

Crie um novo form (frmProcura) com um campo Edit para a consulta (vc pode adicionar também um campo combo com os campos a serem pesquisados). No form principal (do DBGrid) crie uma variável global (FindWord: String) e passe a propriedade KeyPreview para True. No evento OnKeyPress deste form adicione algo assim:

If Key in [´a´..´z´, ´A´..´Z´, ´0´..´9´] Then
Begin
FindWord:=Key;
frmProcura.ShowModal;
end;

No formProcura capture a variável global quando o mesmo for aberto (OnShow) e adicione no campo Edit (edtFind), assim:

edtFind.SetFocus;
If Trim(FindWord)<>´´ Then
Begin
edtFind.Text:=FindWord;
Keybd_Event(VK_END, 0, 0, 0);
edtFind.OnChange(Sender);
end;

No evento OnChange do campo Edit coloque assim:

If edtFind.Text<>´´ Then dmDados.qryClientes.Locate(FindItem, edtFind.Text, [loPartialKey, loCaseInsensitive]);


Espero ter ajudado,

[]´s

Pardal2003


GOSTEI 0
Machado

Machado

15/08/2003

Resolvi o problema, fiz desta maneira:

coloquei um edit sobre o dbgrid e
no envento onchange coloquei a sequinte linha
tb_alunos.FindNearest([edit1.text]);
e funciona perfeitamente.


GOSTEI 0
POSTAR