Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Sumar y multiplicar varios edit automaticamente (https://www.clubdelphi.com/foros/showthread.php?t=92591)

ecfisa 18-12-2017 18:23:46

Hola.

Un modo es que crees código para el evento OnExit de un TEdit y luego se lo asignes a todos los Edits que esperen números decimales para redondear.

Ejemplo:
Código Delphi [-]
...

procedure TForm1.EditsExit(Sender: TObject);
var
  d : Double;
begin
  d := StrToFloatDef(TEdit(Sender).Text, 0);
  TEdit(Sender).Text := FormatFloat('0.00', Redondear(d, 1));
end;
De este modo, cuando el Edit activo pierda el foco, mostrará el redondeo que deseas. ( StrToFloatDef )

Saludos :)

Milworm99 18-12-2017 18:28:58

Cita:

Empezado por ecfisa (Mensaje 523567)
Hola.

Un modo es que crees código para el evento OnExit de un TEdit y luego se lo asignes a todos los Edits que esperen números decimales para redondear.

El problema es que cuando se multiplica 1 x 0.80 me arroja el valor 0.90

Milworm99 18-12-2017 18:40:53

Cita:

Empezado por ecfisa (Mensaje 523567)
Hola.

Un modo es que crees código para el evento OnExit de un TEdit y luego se lo asignes a todos los Edits que esperen números decimales para redondear.

Ya encontre el problema, para los que quieren que les multiplique un numero por un decimal ( ejemplo: 0.75 ) y el resultado les muestre redondeado utilizan esa función

Código:

function Redondear(const Numero: Double; const Digitos: Integer): Double;
var
  m: Double;
begin
  m:= Exp(Ln(10) * Digitos);
  Result:= Round(Numero * m + 5 / m) / m;
end;

Metodo de uso:

Código:

multiplicacion:Currency; 

multiplicacion := StrToFloatDef (edt1.Text, 0) * 0.75;
  Edt2.Text:= FormatFloat('0.00', Redondear(multiplicacion , 1));

Con esto logramos que al multiplicar 1 x 0.75 el valor nos muestre redondeado: 0.80

Y si quieren que multiplique un numero por un decimal ( ejemplo: 0.80) y el resultado les muestre redondeado, utilizamos:

Código:

Edt2.Text:= FormatFloat('0.00',multiplicacion);
Con esto logramos que al multiplicar 1 x 0.80 nos muestre el valor de : 0.80


La franja horaria es GMT +2. Ahora son las 21:47:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi