Fórum Função de Autocompletar #191414
29/10/2003
0
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
Curtir tópico
+ 0Posts
29/10/2003
Luineumann
Gostei + 0
29/10/2003
Outl@w
Outl@w
Gostei + 0
29/10/2003
Outl@w
Gostei + 0
29/10/2003
Sistemald
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
29/10/2003
Outl@w
Se alguém puder me ajudar...
Gostei + 0
30/10/2003
Outl@w
Gostei + 0
30/10/2003
Outl@w
sobe
Gostei + 0
30/10/2003
Jc
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
30/10/2003
Japa
Gostei + 0
30/10/2003
Outl@w
Obrigado pela resposta amigo, mas eu preciso de algo que autocomplete o edit...
Sim, eu quero ´autocompretar´ em um edit
Gostei + 0
31/10/2003
Japa
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
depois
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
31/10/2003
Outl@w
Valeu Japa, funcionou direitinho!
Outl@w
Gostei + 0