Eder Pardeiro Postado Maio 5, 2010 Denunciar Share Postado Maio 5, 2010 Boa noite Senhores,Não conhecia o componente StringGrid. Por curiosidade estou tentando usá-lo e surgiu uma dúvida...Os dados são organizados da seguinte forma:Tenho quatro colunas: Produto, Valor_Unit, QTD e Valor_Total.Ao preencher a quantidade, gostaria que o sistema calculasse automaticamente exibindo o resultado na coluna Valor_Total.Como calcular eu já sei, porém não consegui ainda colocar o código no lugar certo, ou seja, ao sair da coluna quantidade... Esse evento não existe!!!Fico no aguardo, Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Maio 5, 2010 Denunciar Share Postado Maio 5, 2010 Fiz um teste no form create, adicionei valores no string grid e já somei... faça o teste:procedure TForm1.FormCreate(Sender: TObject); var valor : real; qtd : integer; begin StringGrid1.Cols[1].Text := 'Produto'; StringGrid1.Cols[2].Text := 'Valor Unitário'; StringGrid1.Cols[3].Text := 'Quantidade'; StringGrid1.Cols[4].Text := 'Valor Total'; StringGrid1.Cells[1, 1] := 'Sabão'; StringGrid1.Cells[2, 1] := '0,30'; StringGrid1.Cells[3, 1] := '50'; valor := StrToFloat(StringGrid1.Cells[2, 1]); qtd := StrToInt(StringGrid1.Cells[3, 1]); StringGrid1.Cells[4, 1] := FormatFloat('#,###.00', valor * qtd);; end;Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Pardeiro Postado Maio 6, 2010 Autor Denunciar Share Postado Maio 6, 2010 Fiz um teste no form create, adicionei valores no string grid e já somei... faça o teste:procedure TForm1.FormCreate(Sender: TObject); var valor : real; qtd : integer; begin StringGrid1.Cols[1].Text := 'Produto'; StringGrid1.Cols[2].Text := 'Valor Unitário'; StringGrid1.Cols[3].Text := 'Quantidade'; StringGrid1.Cols[4].Text := 'Valor Total'; StringGrid1.Cells[1, 1] := 'Sabão'; StringGrid1.Cells[2, 1] := '0,30'; StringGrid1.Cells[3, 1] := '50'; valor := StrToFloat(StringGrid1.Cells[2, 1]); qtd := StrToInt(StringGrid1.Cells[3, 1]); StringGrid1.Cells[4, 1] := FormatFloat('#,###.00', valor * qtd);; end;AbraçosBoa noite,Na verdade, somar eu já consegui.... coloquei um botão que faz isso.Mas eu quero que o cálculo seja executado quando eu colocar a quantidade... os campos QTD e Valor_Total ficam em branco!De qualquer forma, obrigado e espero respostas...Eder Pardeiro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Douglas Soares Postado Maio 6, 2010 Denunciar Share Postado Maio 6, 2010 Fiz como você disse, não adicionei a quantidade e depois somei num evento:procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.Cols[1].Text := 'Produto'; StringGrid1.Cols[2].Text := 'Valor Unitário'; StringGrid1.Cols[3].Text := 'Quantidade'; StringGrid1.Cols[4].Text := 'Valor Total'; StringGrid1.Cells[1, 1] := 'Sabão'; StringGrid1.Cells[2, 1] := '0,30'; end; Evento OnSetEditText do StringGrid procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); var valor : Real; qtd : integer; begin if (ACol = 3) then begin if Value <> '' then begin valor := StrToFloat(StringGrid1.Cells[2, ARow]); qtd := StrToInt(StringGrid1.Cells[3, ARow]); valor := valor * qtd; StringGrid1.Cells[4, ARow] := FormatFloat('##,###,##0.00', valor); end else StringGrid1.Cells[4, ARow] := ''; end; end;Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eder Pardeiro Postado Maio 11, 2010 Autor Denunciar Share Postado Maio 11, 2010 Fiz como você disse, não adicionei a quantidade e depois somei num evento:procedure TForm1.FormCreate(Sender: TObject); begin StringGrid1.Cols[1].Text := 'Produto'; StringGrid1.Cols[2].Text := 'Valor Unitário'; StringGrid1.Cols[3].Text := 'Quantidade'; StringGrid1.Cols[4].Text := 'Valor Total'; StringGrid1.Cells[1, 1] := 'Sabão'; StringGrid1.Cells[2, 1] := '0,30'; end; Evento OnSetEditText do StringGrid procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); var valor : Real; qtd : integer; begin if (ACol = 3) then begin if Value <> '' then begin valor := StrToFloat(StringGrid1.Cells[2, ARow]); qtd := StrToInt(StringGrid1.Cells[3, ARow]); valor := valor * qtd; StringGrid1.Cells[4, ARow] := FormatFloat('##,###,##0.00', valor); end else StringGrid1.Cells[4, ARow] := ''; end; end;AbraçosValeu Douglas,Deu certo aqui, desculpe pela demora... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Eder Pardeiro
Boa noite Senhores,
Não conhecia o componente StringGrid. Por curiosidade estou tentando usá-lo e surgiu uma dúvida...
Os dados são organizados da seguinte forma:
Tenho quatro colunas: Produto, Valor_Unit, QTD e Valor_Total.
Ao preencher a quantidade, gostaria que o sistema calculasse automaticamente exibindo o resultado na coluna Valor_Total.
Como calcular eu já sei, porém não consegui ainda colocar o código no lugar certo, ou seja, ao sair da coluna quantidade... Esse evento não existe!!!
Fico no aguardo,
Link para o comentário
Compartilhar em outros sites
4 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.