AutoCompletar com DBgrid
E aí Galera...
Tenho uma tabela de preços em um DBGrid com 3 colunas: Código, produto e preço.
Quero colocar um Edit para o usuário procurar pelo nomr do produto desejado. Aí que entra o auto completar. No onchange do edit quero que ele localize no DBGrid.
Valeu Galera...
Tenho uma tabela de preços em um DBGrid com 3 colunas: Código, produto e preço.
Quero colocar um Edit para o usuário procurar pelo nomr do produto desejado. Aí que entra o auto completar. No onchange do edit quero que ele localize no DBGrid.
Valeu Galera...
Tcharlos
Curtidas 0
Respostas
Lucas Silva
30/06/2004
Dê uma olhada no texto.
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
Tnaires
30/06/2004
Olá
SQL do Query do DBGrid:
Edit:
Abraços
SQL do Query do DBGrid:
SELECT Codigo, Produto, Preco FROM Produtos WHERE Produto LIKE :Produto
Edit:
TForm1.Edit1OnChange(Sender: TObject) begin with Query1 do begin Close; ParamByName(´Produto´).AsString := Edit1.Text + ´¬´; Open; end; end;
Abraços
GOSTEI 0