Fórum ComboBox #225493
12/04/2004
0
Emir Neto
Curtir tópico
+ 0Posts
12/04/2004
Lucas Silva
Se não der certo me dá o toque.
Lucas!
Gostei + 0
13/04/2004
Emir Neto
Gostei + 0
13/04/2004
Lucas Silva
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;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)