Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Soma em StringGrid


Eder Pardeiro

Pergunta

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

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0
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

Boa 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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0
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

Valeu Douglas,

Deu certo aqui, desculpe pela demora...

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...