Fórum ComboBox #225493

12/04/2004

0

:?: Tenho um edit e um ComboBox. Meu problema é que quero digitar no editbox e ele ir autocompletando. O que dificulta ainda mais é que os dados que autocompletarão o edit estarão no combobox e não em uma tabela. Preciso mesmo desta solução. Obrigado.


Emir Neto

Emir Neto

Responder

Posts

12/04/2004

Lucas Silva

Muda o Style do combobox pra csSimple. Ai ele vai ficar igualzinho um edit.

Se não der certo me dá o toque.
Lucas!


Responder

Gostei + 0

13/04/2004

Emir Neto

Visto que no mesmo combo coloco o código e descrição, quando tento pesquisar por descrição, ele não funciona, visto que o primeiro item é o código.


Responder

Gostei + 0

13/04/2004

Lucas Silva

Tenho um código aqui para autocompletar em combobox,
Dê uma olhada ai.


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:


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

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;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar