Multiplicação indo e voltando

22/04/2020

0

Boa noite.

Tenho três DBEdit's

DBEditQt_min
DBEditQt_max
DBEditTotal

No evento Onexit do DBEditQt_min digitei o código:
procedure TfrmPedidos.DBEditQt_minExit(Sender: TObject);
//multiplicar
var v1, v2, resultadoTOTAL: Real;
begin
  v1:=StrToFloat(DBEditQt_min.Text);
  v2:=StrToFloat(DBEditQt_max.Text);
  resultadoTOTAL:= v2*v1;
  DBEditTOTAL.Text:=FloatToStr(resultadoTOTAL);
end;


O mesmo código coloquei no evento OnExite do DBEditQt_max
procedure TfrmPedidos.DBEditQt_maxExit(Sender: TObject);
//multiplicar
var v1, v2, resultadoTOTAL: Real;
begin
  v1:=StrToFloat(DBEditQt_min.Text);
  v2:=StrToFloat(DBEditQt_max.Text);
  resultadoTOTAL:= v2*v1;
  DBEditTOTAL.Text:=FloatToStr(resultadoTOTAL);
end;


Seu eu não digitar nada no DBEditQt_min e clicar na tecla [Enter] me retorna o seguinte erro:
"is not a valid floating point value".
E vai pro próximo DBEditQt_max. Se eu clicar nas teclas [Alt+Tab] da a mesma mensagem.

E se eu digito algum numero no DBEditQt_min e clico na tecla [Enter] para ir pro próximo DBEditQt_max da a mesma mensagem. Mais se eu preencho o campo DBEditQt_max, para de dar o erro mesmo eu indo pra frente e pra traz nesses dois campos clicando repetidamente as teclas [Enter] [Alt+Tab] [Enter] [Alt+Tab] [Enter] [Alt+Tab]

Gostaria da vossa ajuda para não ficar aparecendo essa mensagem.
Rubens Pena

Rubens Pena

Responder

Post mais votado

22/04/2020

use a função StrToFloatDef() que, caso não consiga converter o texto em valor, utiliza do segundo parâmetro como o valor default.
procedure TfrmPedidos.DBEditQt_maxExit(Sender: TObject);
//multiplicar
var v1, v2, resultadoTOTAL: Real;
begin
  v1 := StrToFloatDef(DBEditQt_min.Text,0);
  v2 := StrToFloatDef(DBEditQt_max.Text,0);
  resultadoTOTAL:= v2*v1;
  DBEditTOTAL.Text:=FloatToStr(resultadoTOTAL);
end;

e, no lugar de ter duas procedures iguais, aponte o OnExit dos dois componentes para uma mesma procedure.

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

23/04/2020

Rubens Pena

use a função StrToFloatDef() que, caso não consiga converter o texto em valor, utiliza do segundo parâmetro como o valor default.
procedure TfrmPedidos.DBEditQt_maxExit(Sender: TObject);
//multiplicar
var v1, v2, resultadoTOTAL: Real;
begin
  v1 := StrToFloatDef(DBEditQt_min.Text,0);
  v2 := StrToFloatDef(DBEditQt_max.Text,0);
  resultadoTOTAL:= v2*v1;
  DBEditTOTAL.Text:=FloatToStr(resultadoTOTAL);
end;

e, no lugar de ter duas procedures iguais, aponte o OnExit dos dois componentes para uma mesma procedure.

Boa tarde.

Maravilha deu certo. Obrigado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar