Fórum Mostrar descrição do produto a medida que digita #328388
01/09/2006
0
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
Curtir tópico
+ 0Posts
01/09/2006
Cpd_arim
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
01/09/2006
Vania
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
01/09/2006
Cpd_arim
Gostei + 0
01/09/2006
Daniel_mc
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
06/09/2006
Vania
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
06/09/2006
Marco Salles
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
Clique aqui para fazer login e interagir na Comunidade :)