Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   simbolo moneda en formatfloat (https://www.clubdelphi.com/foros/showthread.php?t=70485)

Rofocale 23-10-2010 02:51:08

simbolo moneda en formatfloat
 
Buenas otra ves preguntando alguna que otra cosa.. :D
Esta vez quería preguntar como puedo hacer para que aparezca el símbolo $ ó S/. hago un edit1.text := FormatFloat('#,##0.00', valor); me formatea el valor que deseo, por ejemplo 5.50 pero quiero hacer que este tenga el valor mas el símbolo S/. 5.50 una ves cuando lo hice en el campo display format le puse esto s/'.' #,##0.00 y todos los campos tenían el símbolo pero esta vez no es en la base de datos solo superficialmente en los edits normales como lo haria asi ?
FormatFloat('s/'.' #,##0.00', valor)

gracias

ecfisa 23-10-2010 03:16:54

Hola.

¿ Y no te sirve un TMaskEdit, iniciándolo así ?

Código Delphi [-]
   MaskEdit1.EditMask:= 's/.#,##0.00;1; ';

Saludos. :)

Young 23-10-2010 03:55:32

Simplemente FormatFloat( '$ ,0.00', 12345.67 ).

Saludos.

Rofocale 23-10-2010 08:43:38

no funciona por el punto del simbolo s/. da error
otra idea ?
gracias

LoPiTaL 23-10-2010 11:45:50

Tal vez es una tontería lo que voy a decir... pero, ¿por qué no haces esto?

edit1.text := FormatFloat('#,##0.00', valor)+'$';

ó

edit1.text := '$'+FormatFloat('#,##0.00', valor);

Un saludo,
LoPiTaL

Rofocale 23-10-2010 16:10:32

eso ya lo habia intentado hacer, pero luego cuando intento calcular ese edit mas otro edit me dice que no es un floating point value... porque esta el simbolo

alguna otra idea mas ? thanks

Rofocale 24-10-2010 02:43:47

amigos ayudenme es urgente poner este simbolo y no me sale :( si lo concateno con + al calcula os dos edits me dicen que no es un float

Rofocale 24-10-2010 20:00:54

nadie ? - me ayudan ?

ecfisa 24-10-2010 20:01:31

Hola.

Probá si te sirve este código:
Código Delphi [-]
type
  TForm1 = class(TForm)
    Button1: TButton;
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure MaskEdit1Exit(Sender: TObject);
    procedure MaskEdit2Exit(Sender: TObject);
  private
    FNum1,FNum2: Double;
  public
  end;

var
  Form1: TForm1;

implementation{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  // dado el formato que imponés en la máscara, esta línea es
  // necesaria si tenés ',' como separador decimal
  DecimalSeparator:= '.';
end;

procedure TForm1.MaskEdit1Exit(Sender: TObject);
var
  Cad: string;
begin
  with Sender as TMaskEdit do
   Cad:= Text;
  Delete(Cad,Pos('$',Cad),1);
  Delete(Cad,Pos(',',Cad),1);
  FNum1:= StrToFloat(Cad);
end;

procedure TForm1.MaskEdit2Exit(Sender: TObject);
var
  Cad: string;
begin
  with Sender as TMaskEdit do
   Cad:= Text;
  Delete(Cad,Pos('$',Cad),1);
  Delete(Cad,Pos(',',Cad),1);
  FNum2:= StrToFloat(Cad);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(Format('%f %f %f',[FNum1, FNum2, FNum1 + FNum2]));
end;
...

Saludos. :)

Rofocale 25-10-2010 20:41:56

gracias :)

elarys 25-10-2010 22:32:05

no recuerdo bien, tengo ese codigo en casa,
estoy en el trabajo, pero yo algo parecido a esto.

Código Delphi [-]
  edit1.text := FormatString('m', valor);

asi te muestra directamente decimales y el simbolo monetario,
que tengas por defecto configurado en tu windows

no recuerdo si era m o n...
cuando llegue a casa y verifique el codigo,
te confirmo porque estoy suponiendo

elarys 26-10-2010 14:03:16

no estaba tan equivocado, mira esta pagina

ecfisa 26-10-2010 15:16:01

Cita:

Empezado por elarys (Mensaje 380460)
no estaba tan equivocado, mira esta pagina

Hola elarys.

Tu propuesta para mostrar el formato es correctísima al igual que la de LoPiTaL.

Pero el problema que expone Rofocale es:
Cita:

eso ya lo habia intentado hacer, pero luego cuando intento calcular ese edit mas otro edit me dice que no es un floating point value... porque esta el simbolo
Cualquier formato no numérico que agregues en la propiedad Text del TEdit, la tenés que quitar al intentar convertir a número.
Esto implica que tenés que trabajar el Text del Edit aparejado con una variable numérica si no queres perder el formato.

Sugerí el MaskEdit por que reduce las comprobaciónes de ingreso al ajustarse este a una máscara. Pero puede hacerce con un Edit.

Ejemplo:
Código Delphi [-]
...
procedure TForm1.EditExit(Sender: TObject);
begin
  with (Sender as TEdit) do
  begin
    if Name = 'Edit1' then
     FNumEd1:= StrToFloat(Text)
    else
     FNumEd2:= StrToFloat(Text);
    Text:= Format('%m',[StrToFloat(Text)]);
  end;
end;

procedure TForm1.btSumarClick(Sender: TObject);
begin
  ShowMessage(FloatToStr(FNumEd1+FNumEd2));
end;
...

Ahora bién este código, aparentemente sencillo usando un TEdit, se complicaría bastante con las comprobaciones adicionales
que impone el formato solicitado por Rofocale: '$' delante, signo (-), digitos(0..9), ',' como separador de miles, y '.' de decimales.



Saludos.:)

Rofocale 26-10-2010 17:19:07

gracias me sirvio mucho sus respuestas

LoPiTaL 26-10-2010 20:56:00

Hola de nuevo. Yo soy relativamente nuevo en las APIs de Delphi, por eso componentes del estilo de MaskEdit no suelo usarlos (sencillamente porque desconozco su existencia, o porque cuando se me plantea un problema no pienso en ellos y decido implementarlo yo digamos que "a pelo").
En este caso me parece bastante sencillo, por ejemplo, la solución que comentas tú, de mantener dos variables numéricas y mostrar dos cadenas diferentes de texto.
Para sumar, evidentemente sumas las variables numéricas pero muestras el texto que quieras, con el $,%, €, etc...
Si en algún momento deseases cosas más avanzadas, p. ej. al entrar en el TEdit quitar el texto sobrante para poder escribir sólo el número y al salir reescribirlo todo, te es bastante sencillo hacerlo con las 4 variables anteriores y los eventos que el componente te proporciona. Incluso podrías pensar en derivar del TEdit e implementar éstas en la nueva clase.

Cita:

Ahora bién este código, aparentemente sencillo usando un TEdit, se complicaría bastante con las comprobaciones adicionales
que impone el formato solicitado por Rofocale: '$' delante, signo (-), digitos(0..9), ',' como separador de miles, y '.' de decimales.
No entiendo qué quieres decir con esto... Tienes las variables separadas, puedes darle el formato que quieras:
showmessage('Mi variable que creo que es un dólar $'+inttostr(FVar1+FVar2)+' o podrían ser € no lo sé.....'); :)

Un saludo,
LoPiTaL

ecfisa 26-10-2010 21:10:47

Cita:

Empezado por LoPiTaL (Mensaje 380508)
No entiendo qué quieres decir con esto... Tienes las variables separadas, puedes darle el formato que quieras:
showmessage('Mi variable que creo que es un dólar $'+inttostr(FVar1+FVar2)+' o podrían ser € no lo sé.....'); :)

Un saludo,
LoPiTaL

Las validaciones de lo que se ingresa en el TEdit. Echo que lamentablemente sucede antes de que puedas hacer:
Código Delphi [-]
    FloatToStr(FVar1 + FVar2);


Saludos. :)


La franja horaria es GMT +2. Ahora son las 20:18:52.

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