Fórum Pesquisa inteligente #357581
24/04/2008
0
Quero fazer uma pesquisa inteligente no meu form de pesquisa.
Como?
Eu digito a primeira letra, e no change deste campo ele já faz a busca, me retornando o registro mais próximo no PRÓPRIO campo, com o restaante dos caracteres selecionados... (eu sei que existe, mas nao sei onde encontro algum exemplo)
O que vai acontecer:
Digito ´S´ no campo de pesquisa,
aí ele encontra o registro SABONETE, e coloca no campo que estou escrevendo com o S e mais o ´ABONETE´ em seleção, para eu continuar preenchendo.
e neste campo, se eu apertar para cima ou para baixo, quero poder navegar entre as linhas do Grid, sempre retornando o registro para o campo de pesquisa.
entenderam??
Se alguem puder ajudar,
qualquer coisa meu e-mail:murillo.cg@gmail.com
Valeu
Murillo.cg
Curtir tópico
+ 0Posts
24/04/2008
Martins
Seguinte, acho q vc poderá fazer isso no Onchange do componente q estiver usando para digitar esses caracteres usando Locate.
Gostei + 0
25/04/2008
Parosan
procedure TForm1.Edit1Change(Sender: TObject);
Var
Palavra: string;
Tamanho: integer;
begin
// palavra deve ser a palavra total, o resultado da busca
// usei uma palavra fixa para demonstração, coloque o conteudo
// igual está aqui e digite ´Selecionado´
Palavra := ´Selecionado´;
//tamanho atual do campo, como o texto estara selecionado sempre que // vc digita o texto selecionado é substituido resultando na palavra a ser //buscada
Tamanho := Length(edit1.text);
//passa o valor resultado da busca para o campo
Edit1.Text := palavra;
//usa o tamanho do campo para iniciar a seleção após a parte digitada
edit1.SelStart := tamanho;
//usa o tamanho atual e o anterior para selecionar o resto
// pode usar um valor como 999, assim seleciona até o final
// a menos que a palavra seja maior que 999
edit1.SelLength := Length(edit1.Text) - tamanho;
end;
Qualquer dúvida coloque aqui.
Thiago PaRoSan
Gostei + 0
25/04/2008
Parosan
if key = VK_UP then
Begin
tabela.previous;
key := 0; //serve para evitar que o comando retire a seleção
End;
if key = VK_DOWN then
Begin
tabela.next;
key := 0;
End;
Gostei + 0
27/04/2008
Murillo.cg
mas, e para eu apagar o que já escrevi?
deste geito não deixa.
Gostei + 0
27/04/2008
Gil_araujo
BEGIN
DM2.ClientDataSet1.Close;
dm2.SQLDataSet1.close;
dm2.SQLDataSet1.CommandText:=
´SELECT * FROM AGENDA ORDER BY NOME ASC´;
dm2.SQLDataSet1.ExecSQL;
DM2.ClientDataSet1.Open;
END ELSE
BEGIN
DM2.ClientDataSet1.Close;
dm2.SQLDataSet1.close;
dm2.SQLDataSet1.CommandText:=
´SELECT * FROM AGENDA WHERE UPPER(NOME) LIKE ´+ UpperCase(quotedStr(´¬´+Edit1.text+´¬´)+´ORDER BY NOME ASC´);
dm2.SQLDataSet1.ExecSQL;
DM2.ClientDataSet1.Open;
END;
TENTA ISSO NO onCHANGE VLW
Gostei + 0
27/04/2008
Parosan
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)