Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   para control de dinero (https://www.clubdelphi.com/foros/showthread.php?t=82691)

sac 03-04-2013 19:10:03

para control de dinero
 
Hola amigos. Necesito hacer algo que en principio me parecio fácil.
Necesito un edit por cada billete y moneda que usamos (desde el billete de $100 hasta la moneda de $0,05)
En esos edit se tipea un entero que es la cantidad de ese tipo de billete o moneda.
Necesito que en otro edit o mask edit, automaticamente, cuando se tipee haga la multiplicación del tipo de billete/moneda por la respectiva cantidad y en un totalizador la suma de todos los resultados. Ahí empieza mi problema por usar float, real etc. Me podrían ayudar?

newtron 03-04-2013 19:23:19

Hola.

En principio no deberías de tener mucha complicación con eso. Yo pondría un edit para cada tipo de moneda en el que solo puedas introducir enteros y en el evento OnChange enviarlo a una función que haga los cálculos y te los ponga en Labels.

Saludos

luisgutierrezb 03-04-2013 19:54:26

podrias utilizar el tipo "currency", nunca eh tenido problemas con el, ademas se supone que es precisamente para manejo monetario...

sac 03-04-2013 20:38:03

Como?
 
Algun ejemplo?

ecfisa 03-04-2013 22:51:19

Hola sac.

Para el ejemplo: Agregá diez TEdit, de nombres "Edit1",..., "Edit10" para ingresar la cantidad de unidades, y diez TLabel de nombres "Label1",..., "Label10" para mostrar el resultado del producto de la cantidad por la moneda.

Luego:
Código Delphi [-]
...
const
   MONEDA: array[1..10] of Currency = (0.05, 0.10, 0.25, 0.50, 1, 2, 5, 10, 50, 100);

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i:= 1 to 10 do
    with TEdit(FindComponent('Edit'+IntToStr(i))) do
    begin
      Text       := '';
      OnChange   := EditChange;
      OnKeyPress := EditKeyPress;
      Tag        := i;
    end;
end;

procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in[#8,'0'..'9']) then
  begin
    Key := #0;
    MessageBeep(MB_ICONERROR)
  end;
end;

procedure TForm1.EditChange(Sender: TObject);
var
  c: Integer;
begin
  if TryStrToInt(TEdit(Sender).Text, c) then
    TLabel(FindComponent('Label'+IntToStr(TEdit(Sender).Tag))).Caption:=
       CurrToStr(c * MONEDA[TEdit(Sender).Tag])
end;
...
Agrega otros diez Labels sobre los Edits para saber que valor de moneda están ingresando.

Saludos.

Neftali [Germán.Estévez] 04-04-2013 10:18:34

Cita:

Empezado por sac (Mensaje 458005)
Ahí empieza mi problema por usar float, real etc. Me podrían ayudar?

Bueno, hacer la suma y la multiplicación supongo que debes saber, así que supongo que el mayor problema que se te debe presentar al realizarlo en Delphi son los tipos de Datos. Una vez que los tengas claros, las operaciones también deberían serte fáciles de implementar.

Lo que tienes en un Edit (edit1.Text) es de tipo string, los números que necesitas para sumar o multiplicar serán enteros, float,... (dependiendo de si tienen decimales o no). lo que te queda para conseguir las operaciones es convertir entre tipos. Para eso Delphi posee funciones (que puedes buscar en la ayuda) como: StrToInt, IntToStr, StrToFloat, FloatToStr,...

En los links que te he puesto (y si buscas más en esa página) encontrarás cómo utilizarlas.

sac 09-04-2013 19:45:44

Gracias
 
Todavia no puedo decirles que funciona todo al 100 x 100 pero estoy trabajando en eso La ayuda fue muy valiosa Gracias.


La franja horaria es GMT +2. Ahora son las 02:23:16.

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