Mostrar descrição do produto a medida que digita
Pessoal,
Tenho um grid de pedidos que possui os campos código e descrição do produto. Gostaria q ao digitar a descrição fosse aparecendo os produtos disponíveis e ao selecioná-lo, já preenchesse o código...como no lookupcombobox...pesquisei no fórum, mas não encontrei nada...
Alguém conhece algum componente ou sabe como se faz isso??
Grata,
Vânia
Tenho um grid de pedidos que possui os campos código e descrição do produto. Gostaria q ao digitar a descrição fosse aparecendo os produtos disponíveis e ao selecioná-lo, já preenchesse o código...como no lookupcombobox...pesquisei no fórum, mas não encontrei nada...
Alguém conhece algum componente ou sabe como se faz isso??
Grata,
Vânia
Vania
Curtidas 0
Respostas
Cpd_arim
01/09/2006
query1.close;
query1.sql.clear;
query1.sql.add(´select * from produtos´);
query1.SQL.Add(´Where descricao Like ´ + CHR(39) + ´¬´ + Edit1.Text + ´¬´ + CHR(39));
query1.open;
dbedit1.text := query1codigo.asstring;
qq dúvida cpd_arim@hotmail.com
query1.sql.clear;
query1.sql.add(´select * from produtos´);
query1.SQL.Add(´Where descricao Like ´ + CHR(39) + ´¬´ + Edit1.Text + ´¬´ + CHR(39));
query1.open;
dbedit1.text := query1codigo.asstring;
qq dúvida cpd_arim@hotmail.com
GOSTEI 0
Vania
01/09/2006
mas eu queria dessa forma:
tenho 2 colunas no dbgrid: cod. e descr do prod....se eu for digitando a descrição...por ex. digito a letra C...ele abre uma lista (na coluna do grid mesmo, como se fosse o picklist) com todos os produtos com q letra C...se eu continuar digitando e digitoa a letra a...ele vai filtrando e mostra todos os produtos com Ca....e assim por diante...se eu selecionar um dos produtos dessa lista...
tenho 2 colunas no dbgrid: cod. e descr do prod....se eu for digitando a descrição...por ex. digito a letra C...ele abre uma lista (na coluna do grid mesmo, como se fosse o picklist) com todos os produtos com q letra C...se eu continuar digitando e digitoa a letra a...ele vai filtrando e mostra todos os produtos com Ca....e assim por diante...se eu selecionar um dos produtos dessa lista...
GOSTEI 0
Cpd_arim
01/09/2006
é exatamente o que fiz.
GOSTEI 0
Daniel_mc
01/09/2006
Va no evento OnChange do componente onde será digitado, vamos usar um edit por exemplo:
e faça conforme o colega [b:63abd32b99]cpd_arim[/b:63abd32b99] informou. Mas isto supondo que esteja usando query´s, se o DBGrid estiver linkado a query1, o que vc esta querendo irá acontecer
e faça conforme o colega [b:63abd32b99]cpd_arim[/b:63abd32b99] informou. Mas isto supondo que esteja usando query´s, se o DBGrid estiver linkado a query1, o que vc esta querendo irá acontecer
GOSTEI 0
Vania
01/09/2006
mas eu não queria q o resultado da query ficasse no DBGrid...e sim q abrisse uma lista na coluna descrição do produto no DBGrid (como se fosse uma picklist)...Por ex...eu tenho lá um grid de pedidos, onde vou cadastrando os produtos, quantidades, valor, etc q eu quero inserir nos pedidos....
oq q eu quero é q qnd eu estiver na coluna da descrição do produto NO DBGrid do pedido e ao começar a digitar, ele abrisse uma lista com os produtos pra selecionar.... eu não usaria nenhum outro componente (edit, etc...)...e as colunas do DBGrid não possuem o evento OnChange...Não sei se consegui ser mais clara agora...
oq q eu quero é q qnd eu estiver na coluna da descrição do produto NO DBGrid do pedido e ao começar a digitar, ele abrisse uma lista com os produtos pra selecionar.... eu não usaria nenhum outro componente (edit, etc...)...e as colunas do DBGrid não possuem o evento OnChange...Não sei se consegui ser mais clara agora...
GOSTEI 0
Marco Salles
01/09/2006
oq q eu quero é q qnd eu estiver na coluna da descrição do produto NO DBGrid do pedido e ao começar a digitar, ele abrisse uma lista com os produtos pra selecionar.... eu não usaria nenhum outro componente (edit, etc...)...e as colunas do DBGrid não possuem o evento OnChange...Não sei se consegui ser mais clara agora...
acho que voce pode fazer isto <salvo tenha isto em algum componente pronto> desenhando um combobox na celula da grid
exemplo:
var texto:string
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin combobox1.Visible := (dbgrid1.SelectedField = CmpoDoSeuDataSet); if combobox1.Visible Then if gdfocused in state then begin combobox1.SetFocus; combobox1.SetBounds(rect.Left+19, rect.Top+17, rect.Right - Rect.Left, rect.Bottom - Rect.Top); end; end;
os items desse combobox deverão ser alimentados com uma query
if combobox1.Text = ´´ then begin texto:=Texto+Key; query1.close; query1.sql.clear; query1.sql.add(´select Descricao_Produto from produtos´); query1.SQL.Add(´Where Upper(descricao_produto) Like :Descricao´); query1.ParamByName(´Descricao´).AsString:=AnsiUpperCase(texto)+´¬´; query1.Prepare; query1.open; combobox1.Clear; Query1.First; while not query1.Eof do begin combobox1.Items.Add(Query1Descricao_Produto.AsString); Query1.Next; end; ComboBox1.DroppedDown := True; end; end;
procedure TForm1.SeuDataSetBeforeScroll(DataSet: TDataSet); begin combobox1.Clear; end;
procedure TForm1.SeuDataSetAfterScroll(DataSet: TDataSet); begin combobox1.Items.Add(cds1Nome_Cliente.AsString); combobox1.ItemIndex:=0; end;
procedure TForm1.ComboBox1Click(Sender: TObject); begin SeuDataSet.Edit; SeuDataSetCampo.AsString:=combobox1.Items.Strings[combobox1.ItemIndex]; end;
procedure TForm1.ComboBox1Change(Sender: TObject); begin if combobox1.Text = ´´ Then texto:=´´; end;
[b:8565494531]Voce pode usar essa idéia e obter resultados melhores...[/b:8565494531]
quero deixar claro que é so uma idéia...
GOSTEI 0