Fórum Atualizar dados no String Grid #263880

31/12/2004

0

Estou usando o componente StringGrid para visualizar os dados de uma consulta na minha tela de pedidos. A tela funciona da seguinte forma: Quando escolho o pedido a ser vendido, automatricamente a StringGrid é preenchida com os descontos no preço do produto.
***O desconto depende do perfil que o cliente se encaixa.
Quando escolho o produto pela 1ª vez a StringGrid é preenchida normalmente. O problema é que ao escolher outro produto, ela continua com os mesmos valores do produto antigo.

Segue abaixo o código utilizado:



procedure TFrmVenda.SpdProdClick(Sender: TObject);
begin
FrmPrincipal.FormAcao := ´Ped_Cli´;
reserva := EdQtde.Text;
EdQtde.Text := ´´;
EdQtde.Text := reserva;
Application.CreateForm(TFrmLoc_Pro, FrmLoc_Pro);
FrmLoc_Pro.ShowModal;
end;




procedure TFrmVenda.PreencherProduto;
begin
EdCod_Pro.Text := DmDPL.TbProduto.FieldByName(´ID´).AsString;
LblNome_Pro.Caption := DmDPL.TbProduto.FieldByName(´NOME´).AsString;
LblUnit.Caption := DmDPL.TbProduto.FieldByName(´PRECO_PRAT´).AsString;
Calcular_DescModal;
LblDesc.Caption := FloatToStr(desconto);
DBTxtQtde_Etq.DataSource := DmDPL.DsProduto;
DBTxtQtde_Etq.DataField := ´ETQ_QTDE´;
EdQtde.Text := ´1´;

PreencherPreco;
end;



procedure TFrmVenda.PreencherPreco;
var
x : integer; //contador
produto, desconto, preco : real;
begin
//PREENCHER STRINGGRID COM PERFIL E SEUS PREÇOS
x := 0;
While not DmDPL.TbPerfil.Eof do
begin
produto := DmDPL.TbProduto.FieldByName(´PRECO_PRAT´).AsFloat;
desconto := DmDPL.TbPerfil.FieldByName(´DESCONTO´).AsFloat;
preco := (produto - ((produto * desconto) / 100));
StrGd.Cells[0,x] := DmDPL.TbPerfil.FieldByName(´NOME´).AsString;
StrGd.Cells[1,x] := FloatToStr(preco);
x := x + 1;
DmDPL.TbPerfil.Next;
end;
StrGd.
end;



Se puderem me ajudar ficarei muito agradecido....
Valew...... Feliz 2005 para todo o grupo!!!!!!!!!!!!!!!!!!!!
Rodrigo Freire..;.;


Rgfreire

Rgfreire

Responder

Posts

01/01/2005

Michael

Olá amigo Rodrigo!

Talvez não seria melhor você usar um ClientDataSet (ou SimpleDataSet), com campos calculados? Acho que seria melhor pois você não teria que escrever muito código.

Abraços!


Responder

Gostei + 0

03/01/2005

Vprates

Bom dia

não seria o caso de vc limpar os valores da stringgrid antes de receber novos valores???


Obs: Nunca usei o stringgrid.


Responder

Gostei + 0

03/01/2005

Fsflorencio

Amigo, vc deve fazer limpar as células para a nova pesquisa.
Ex.

For i := 0 to stringgrid.rowcount -1 do//linhas
for j := 0 to stringgrid.colcount -1 do//colunas
stringgrid.cells[j,i] := ´´;

isto deve limpar

depois que vc executar o procedimento de preencher onde ele deve dizer quantas linhas o stringgrid possui {stringgrid.rowcount := x}, para eliminar as linhas da pesquisa anterior ou alocar linhas para a nova pesquisa.

até.


Responder

Gostei + 0

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

Aceitar