Função de Autocompletar

Delphi

29/10/2003

Boa tarde, alguém tem uma função de autocompletar para ser utilizada fazendo pesquisa em uma query?
Por exemplo: O usuário começa a digitação no edit e, se houver coincidência no banco, o edit é preenchido com o valor do campo.

grato

Outl@w


Outl@w

Outl@w

Curtidas 0

Respostas

Luineumann

Luineumann

29/10/2003

já usei um componente de nome historyedit que faz mais ou menos isso pesquise nos sites de delphi e tente usá-lo


GOSTEI 0
Outl@w

Outl@w

29/10/2003

Não tem como criar uma função? Eu preciso usar componentes de terceiros mesmo? Se não tiver jeito mesmo onde encontro o componente?

Outl@w


GOSTEI 0
Outl@w

Outl@w

29/10/2003

soooooooooobeeeee!!!!!!!


GOSTEI 0
Sistemald

Sistemald

29/10/2003

Autopreencher ao digitar para ComboBox, parecido com o IE e Netscape

Resumo:
À medida que o usuário digita algo numa combo, procura por um item e mostra o que falta ser digitado, como na combo endereço do IE ou Netscape. Opcionalmente, se o usuário digitar , pula para o próximo componente, como se tivesse teclado .

Texto:
Este recurso permite preencher automaticamente um combobox com um item sem que o usuário precise digitar tudo.
Semelhante ao que existe na combo ´endereço´ do IE ou do Netscape.
O usuário vê em azul ( selecionado ) o que falta ser preenchido. Se o usuário teclar o autopreencher para.
Outro recurso ( que pode ser retirado ) permite que ao se teclar pule-se para o próximo componente, como se tivesse sido teclado .
Tendo o seguinte formulário:

Form1 = class(Tform1)
Combobox1 : Tcombobox;
private
Autopreencher : boolean;

Precisamos definir os métodos OnChange, OnKeyPress e OnEnter, como segue:

procedure Tform1.Combobox1Enter(Sender: TObject);
begin
autopreencher := true;

end;

procedure Tform1.Combobox1Change(Sender: TObject);
var
tam,cont : integer;
begin

if autopreencher then with (sender as Tcombobox) do
begin
tam := length(text);
for cont := 0 to items.Count - 1 do
if 0=ansicomparetext(text,copy(items.Strings[cont],1,tam)) then
begin
text := items.strings[cont];
selstart := tam;
sellength := length(text);
break;
end;
end;

end;

procedure Tform1.Combobox1KeyPress(Sender: TObject; var Key: Char);
var
prox : boolean;
begin
with (sender as tcombobox) do
begin
Autopreencher := true;
prox := false;
case ord(key) of
vk_return : begin
selstart := length(text);
sellength := 0;
key := #0;
DroppedDown := false;
Prox := true;
end;
vk_back : Autopreencher := false;
end;
if (not Autopreencher) and (SelText <> ´´) then
begin
text := copy(text,1,selstart);
selstart := length(text);
sellength := 0;
key := 0;
end;
end;
if prox then findnextcontrol(sender as tcombobox,true,true,false).SetFocus;

end;


GOSTEI 0
Outl@w

Outl@w

29/10/2003

Obrigado pela resposta amigo, estou buscando a funcionalidade que vc mencionou, porém estou usando um [b:90f0f3bd4d]Tedit[/b:90f0f3bd4d] que deve buscar valores de campos em uma [b:90f0f3bd4d]query[/b:90f0f3bd4d]...

Se alguém puder me ajudar...


GOSTEI 0
Outl@w

Outl@w

29/10/2003

sobe


GOSTEI 0
Outl@w

Outl@w

29/10/2003

É algo mais ou menos como o findnearest do TTable pessoal, mas usando query....


sobe


GOSTEI 0
Jc

Jc

29/10/2003

[quote:40cb72036a=´outl@w´]É algo mais ou menos como o findnearest do TTable pessoal, mas usando query....

sobe[/quote:40cb72036a]

Tente algo parecido com isso...

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(´Select * From Clientes Where Nome = ´Maria´ ´);
Query1.Close;

Este exemplo seleciona o campo Nome que contém o valor Maria na tabela Clientes.
Vc pode adicionar isso no OnChange do seu Edit1.
No OnChange cada vez que vc digitar uma tecla ele ira buscar na Tabela.
Troque no código ´Maria´ por Edit1.text, acho que resolve seu problema


GOSTEI 0
Japa

Japa

29/10/2003

amigo voce que autocompretar em um edit???


GOSTEI 0
Outl@w

Outl@w

29/10/2003

Tente algo parecido com isso... Query1.Close; Query1.SQL.Clear; Query1.SQL.Add(´Select * From Clientes Where Nome = ´Maria´ ´); Query1.Close; Este exemplo seleciona o campo Nome que contém o valor Maria na tabela Clientes. Vc pode adicionar isso no OnChange do seu Edit1. No OnChange cada vez que vc digitar uma tecla ele ira buscar na Tabela. Troque no código ´Maria´ por Edit1.text, acho que resolve seu problema

Obrigado pela resposta amigo, mas eu preciso de algo que autocomplete o edit...

amigo voce que autocompretar em um edit???


Sim, eu quero ´autocompretar´ em um edit



GOSTEI 0
Japa

Japa

29/10/2003

amigo uma vez fiz uma coisa assim:
Tirei quase todas as coisinhas do combobox e deixei quase igual como um edit (quer dizer ficou igual):
coloque um ComboBox e mude o Style dele para csSimple, ai ja vai parecer um edit...

de um

Query1.Close; Query1.SQL.Clear; Query1.SQL.Add(´Select Campo_Nome From Clientes´); Query1.Close;


depois
Query1.first; while not Query1.EOF do begin ComboBox.Items.Add(VarToStr(Query1.Fields[0].value)); Query1.Next; end;


Bom agora vou explicar um pouquinho....
O fields[0] é porque eu peguei o primeiro campo da query...
exemplo:
se eu fazer um: ´Select * From Clientes´ eu pego todos os campos da tabela Cliente.... bom se essa tabelas tiver 5 campos então o fields[0] vai ser o primeiro campo, fields[1] vai ser o segundo campo e assim por diante.....

Bom agora codigo eu selecionei todos os nomes da tabela e joguei para o ComboBox assim quando a pessoa digitar ela vai autocompletar....

Bom achu que é so isso... boa sorte amigo.... :wink:


GOSTEI 0
Outl@w

Outl@w

29/10/2003

Que criatividade!

Valeu Japa, funcionou direitinho!


Outl@w


GOSTEI 0
POSTAR