FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Cómo Usar el FormatFloat(<formatstr>, <value>)
Saludos a Todos,
Estoy utilizando Fast-Report, tengo que formatear números de como los siguientes Entrada Salida Ideal 123456 123.456 -12345 (12.345) Pero cuando utilizo números negativos que necesito que salgan entre (). He leido la documentación de Fast-report al respecto, la cual hace referencia a que utiliza la misma estructura de Delphi. Busco la estructura (Format strings), la que necesito es '%m', el cual es para formatos de moneda. Cuando trato de comprobar el formato me sale un error. Para ver estoy utilizando la siguiente en delphi Formato : Variant; Formato := Format('%8.0m',[-123456]); y sale formato incompatible con el argumento. Pregunta Cual es el formato para que cuando entra un número negativo, salga entre () y positivo. Gracias de antemano Juan Carlos |
#2
|
||||
|
||||
supongo que para el formato %m espera un valor de coma flotante y le estas enviando un entero... probá con
Formato := Format('%8.0m',[-123456.0]); Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
|||
|
|||
Gracias.
Lo probe en Delphi y salio todo bien, pero cuando lo probe en Fast-report, el resultado fue negativo. La información de la función FormatFloat(<Fmt>, <Nro>), Donde <Fmt> dice que tiene los mismos valores que en delphi, no es correcto. Ahora mi pregunta es la siguiente, como puedo hacer (que no resulte costoso), para que los Números negativos salgan entre () en Fast-Report. Por mi Parte estoy Utilizando lo siguiente En la variable [IF([TOTAL] > 0, [TOTAL] , [TOTAL] * (-1))] En Antes de Imprimir if [TOTAL] > 0 Then Begin Memo23.Visible := False; Memo26.Visible := False; End Else Begin Memo23.Visible := True; Memo26.Visible := True; End; En Donde Memo23 := '(' y Memo26 := ')' Resulta, pero cuando se tiene 5, o más variable, resulta costoso en tiempo. Esperando sus respuestas Saluda Atte. Juan Carlos |
#4
|
|||
|
|||
Saludos, encontre la solución, que es modificando los fuentes de fast-report )f_Class.pas)
de la siguiente manera DecimalSeparator := Chr(Format and $FF); case f2 of 0: Result := FormatFloat('##0.' + Dup('#', (Format div $0100) and $FF), v); 1: Result := FloatToStrF(v, ffFixed, 15, (Format div $0100) and $FF); 2: Result := FormatFloat('#,##0.' + Dup('#', (Format div $0100) and $FF), v); 3: Result := FloatToStrF(v, ffNumber, 15, (Format div $0100) and $FF); 4: Result := FormatFloat(FormatStr, v); // Aqui end; se cambia por lo sigyuiente Se define Valor : Currency; se cambia 4: if Copy(FormatStr,1,1) = '%' then Begin { TODO : Cambio en el Formato de Presentacion, para Nro Negativos } Valor := v; Result := ' ' + SysUtils.Format(FormatStr, [Valor]); End Else Result := FormatFloat(FormatStr, v); En la planilla fast-report, en formato de variables (personalizada) se coloca por ejemplo %18.0m con esto toma el número y lo cambiente a () positivo (cuando es negativo). Con esto puede usarse todo los formatos % de Delphi. Y por Ultimo en la aplicación principal en procedure TfMenu.FormShow(Sender: TObject); begin CurrencyString := ''; NegCurrFormat := 0; end; Saluda Juan Carlos Última edición por teletranx fecha: 23-04-2004 a las 00:34:44. |
|
|
|