anabon Postado Fevereiro 6, 2012 Denunciar Share Postado Fevereiro 6, 2012 olá pessoal bom dia.... Mais uma x peço a ajuda de vocês... È o seguinte tenho um form com StringGrid, quero incluir dados com valores moentario nele e depois somar uma coluna .... Nada que achei até agora deu certo... o codigo que estou usando é :procedure TFormDisk_Entregas.cmdokClick(Sender: TObject);varValorTotal:Real;soma : integer;i: integer;beginIf (cont = 0) Thencont :=1elsecont:=cont+ 1;Grid_Entrega.RowCount:=cont+1;Grid_Entrega.cells[1,cont]:=txtdescricao.Text;Grid_Entrega.cells[2,cont]:=txtquant.Text;Grid_Entrega.cells[3,cont]:=txtvalor_un.Text;Grid_Entrega.cells[4,cont]:=txtvalor_tot.Text;for i:=1 to Grid_Entrega.RowCount -1 doValorTotal:= ValorTotal + strtofloat(Grid_Entrega.Cells[4,i]); txttotal.Text:=floattostr(ValorTotal);txtquant.Text := '';txtdescricao.Text := ''; //DBEditCod_Produto2.Text := '';end;Desde já agradeço que puder me ajudar!!!!! Forte Abraço!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 6, 2012 Denunciar Share Postado Fevereiro 6, 2012 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; BitBtn1: TBitBtn; txtdescricao: TEdit; txtquant: TEdit; txtvalor_un: TEdit; txtvalor_tot: TEdit; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; cont : integer = 0; implementation {$R *.dfm} procedure TForm1.BitBtn1Click(Sender: TObject); var ValorTotal, SomaTotal: Real; i: integer; begin cont:=cont+ 1; StringGrid1.RowCount:=cont+1; StringGrid1.cells[1,cont]:= txtdescricao.Text; StringGrid1.cells[2,cont]:= txtquant.Text; StringGrid1.cells[3,cont]:= txtvalor_un.Text; ValorTotal := strtofloat(txtquant.Text) * strtofloat(txtvalor_un.Text); txtvalor_tot.Text:=floattostr(ValorTotal); StringGrid1.cells[4,cont]:= txtvalor_tot.Text; for i:=1 to StringGrid1.RowCount -1 do Somatotal:= Somatotal + strtofloat(StringGrid1.Cells[4,i]); StringGrid1.cells[5,cont]:= Formatfloat(',0.00',Somatotal); txtquant.Text := ''; txtdescricao.Text := ''; txtvalor_un.Text := ''; end; end.abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 anabon Postado Fevereiro 7, 2012 Autor Denunciar Share Postado Fevereiro 7, 2012 (editado) Obrigada amigo pela ajuda ....mas continua dando erro....Convert error with message "R$10,00" Is not a valid floating point value.Process stoped use stepConverter de erro com a mensagem "R $ 10,00" não é um ponto flutuante válido value.Process parado passo utilização Editado Fevereiro 7, 2012 por anabon Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 anabon Postado Fevereiro 7, 2012 Autor Denunciar Share Postado Fevereiro 7, 2012 analizei o codigo e fui por etapas e percebi que o erro não ta ao inserir os dados e sim ao somar quantidade * valor unitarios = total. tirei essa linha do codigo e ele funcionou; ValorTotal := strtofloat(txtquant.Text) * strtofloat(txtvalor_un.Text); Só que na 4 coluna onde era para aparecer o total aparece 0.00, logo não tem como somar o total geral... eu estou somando também esses valor no evento OnCalfields da tabela com o codigo: Table_Pedidovalor_tot.Value:=Table_Pedidoquantidade.Value*Table_Pedidovalor_un.Value; tentei tirar essa linha mas ai não funciona nem uma e nem outra.... Desde já agradeço quem puder me ajudar.... abraço.... segue abaixo como ficou meu codigo com a ajuda do amigo Jhonas procedure TFormDisk_Entregas.cmdokClick(Sender: TObject); var ValorTotal, SomaTotal: Real; i: integer; begin cont:=cont+ 1; Grid_Entrega.RowCount:=cont+1; Grid_Entrega.cells[1,cont]:= txtdescricao.Text; Grid_Entrega.cells[2,cont]:= txtquant.Text; Grid_Entrega.cells[3,cont]:= txtvalor_un.Text; Grid_Entrega.cells[4,cont]:= txtvalor_tot.Text; ValorTotal := strtofloat(txtquant.Text) * strtofloat(txtvalor_un.Text); txtvalor_tot.Text:=floattostr(ValorTotal); Grid_Entrega.cells[4,cont]:= txtvalor_tot.Text; for i:=1 to Grid_Entrega.RowCount -1 do Somatotal:= Somatotal + strtofloat(Grid_Entrega.Cells[4,i]); Grid_Entrega.cells[4,cont]:= Formatfloat(',0.00',Somatotal); txtquant.Text := ''; txtdescricao.Text := ''; txtvalor_un.Text := ''; end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 7, 2012 Denunciar Share Postado Fevereiro 7, 2012 Se voce entendeu o código, vai ver que voce deve digitar somente a descrição , quantidade e preço unitario e clicar no botãoo valor total aparece na coluna 4 e a somatoria de tudo na coluna 5 ... aqui não dá erro nenhumConvert error with message "R$10,00" Is not a valid floating point value.Process stoped use stepse voce estiver trazendo os dados de uma tabela e no campo voce guardou o valor como R$ 10,00, ocorera um erro: R$ 10,00 não é um ponto flutuante valido .... justamente por causa do "R$" onde deveria estar somente "10,00"observe que no código estamos usando apenas edits, então na hora de digitar os valores numericos, não pode ser digitado o R$abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 anabon Postado Fevereiro 7, 2012 Autor Denunciar Share Postado Fevereiro 7, 2012 Se voce entendeu o código, vai ver que voce deve digitar somente a descrição , quantidade e preço unitario e clicar no botãoo valor total aparece na coluna 4 e a somatoria de tudo na coluna 5 ... aqui não dá erro nenhumConvert error with message "R$10,00" Is not a valid floating point value.Process stoped use stepse voce estiver trazendo os dados de uma tabela e no campo voce guardou o valor como R$ 10,00, ocorera um erro: R$ 10,00 não é um ponto flutuante valido .... justamente por causa do "R$" onde deveria estar somente "10,00"observe que no código estamos usando apenas edits, então na hora de digitar os valores numericos, não pode ser digitado o R$abraço Obrigada pela resposnta!!!! Entendi.... só que esse valor onde ta dando erro estou puxando da tabela e o campo ta em currency, na verdade é um lookup onde eu digito o codigo ele me responde descrição e valor unitario, o valor total é um campo calculado então também aparece R$..... Abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 7, 2012 Denunciar Share Postado Fevereiro 7, 2012 na pratica, eu prefiro guardar o valor numerico e mostrar no grid o valor currency, ou seja, guardo na tabela o valor 10,00 e mostra no grid R$ 10,00 ... evita muitos problemas como esse.entretanto voce já sabe onde se encontra o erro .... outra forma de contornar isso seria, transformar currency em string e depois em floatprocedure TForm1.Button1Click(Sender: TObject); var valor : real; begin Edit1.Text := 'R$ 10,00'; Edit1.text := StringReplace(Edit1.text, 'R$','', [rfReplaceAll]); valor := strtofloat(trim(Edit1.Text)); showmessage(floattostr(valor)); end;veja tambem esse posthttps://www.scriptbrasil.com.br/forum/lofiv...hp/t126119.htmlabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 anabon Postado Fevereiro 8, 2012 Autor Denunciar Share Postado Fevereiro 8, 2012 Mais uma vez muito obrigada..... deu certo..... a quem possa ajudar segue abaixo o codigo que deu certo pra mim.... procedure TFormDisk_Entregas.cmdokClick(Sender: TObject); varTexto: String; ValorTotal, SomaTotal: Real; i: integer; begin cont:=cont+ 1; Grid_Entrega.RowCount:=cont+1; Grid_Entrega.cells[1,cont]:= txtdescricao.Text; Grid_Entrega.cells[2,cont]:= txtquant.Text; Grid_Entrega.cells[3,cont]:= txtvalor_un.Text; Grid_Entrega.cells[4,cont]:= txtvalor_tot.Text; Valortotal := strtofloat(txtquant.Text) * strtofloat(txtvalor_un.Text); txtvalor_tot.Text:=floattostr(ValorTotal); Grid_Entrega.cells[4,cont]:= txtvalor_tot.Text; for i:=1 to Grid_Entrega.RowCount -1 do SomaTotal:= SomaTotal + strtofloat(Grid_Entrega.Cells[4,i]); txttotal.Text:= Formatfloat(',0.00',SomaTotal); txtproduto.Text := ''; txtquant.Text := ''; txtvalor_un.Text := ''; txtvalor_tot.Text := '';end; em algumas dbedit tive que fazer assim:procedure TFormDisk_Entregas.txtvalor_unChange(Sender: TObject);begintxtvalor_un.Text := FormatFloat( '#,##0.00' , Table_Pedidovalor_un.Value)end;procedure TFormDisk_Entregas.txtvalor_totChange(Sender: TObject);begintxtvalor_tot.Text:= Formatfloat(',0.00',Table_Pedidovalor_tot.Value);end;obs: Amigo Jhonas agradeço pela sua paciencia e ajuda.... Se alguém tiver algum link ou uma dica que possa me ajudar de como salvar tudo isso agora eu agradeço abraço... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Fevereiro 8, 2012 Denunciar Share Postado Fevereiro 8, 2012 leia essas apostilashttp://mreis.info/FIJ/download/delphi5.pdfhttp://www.micropic.com.br/paginadecliente...de%20delphi.pdfabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
anabon
olá pessoal bom dia....
Mais uma x peço a ajuda de vocês...
È o seguinte tenho um form com StringGrid, quero incluir dados com valores moentario nele e depois somar uma coluna .... Nada que achei até agora deu certo... o codigo que estou usando é :
Desde já agradeço que puder me ajudar!!!!!
Forte Abraço!!!
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.