PDA

Ver la Versión Completa : formato de un Tedit o Tlabel


mjjj
11-07-2008, 18:05:21
Hola, siempre he tenido un problema, que lo he podido solucionar pero es muy tedioso.

Tengo una variable tipo double, con la cual hago distintos calculos, pero al momento de presentar el resultado en pantalla, utilizo el siguiente codigo.


edit1.text:=formafloat('#,#.##', variable); ó
label1.caption:=formafloat('#,#.##', variable);


el usuario observa la informacion con un formato facil de leer.
El problema se presenta cuando necesito utilizar esa información, es decir, tomar el valor del Tedit y reaizar otro tipo de calculo, el cual tiene los punto sseparadores de miles incluidos, y no es reconocido como una variable double.

No se si se entinde mi problema... a lo mejor la solucion es utilizar otro componente (que yo no conozco), para mostrar esta informacion en pantalla.

Bueno, se los dejo a ver si me pueden ayudar.

Saludos

Fenareth
11-07-2008, 18:24:47
Yo tuve problemas similares al querer darle formato tanto a TLabel como a TEdits y opté por algo sencillo:

En una variable guardo el valor con el que haré los cálculos que necesito y el formato se lo aplico a otra variable auxiliar...

De esta manera no tengo que lidiar con que no reconozca el valor tomado por la variable con la que haré algún cálculo. En mi caso una variable auxiliar fue suficiente.

Saludos, :)

coso
11-07-2008, 18:55:06
Para devolver un numero cuando hay separador de miles...


function SacarFormato(s : string;sep_m : char; sep_f : char) : double;
begin
SacarFormato := 0;

s := StringReplace(s,sep_m,'',[rfReplaceAll, rfIgnoreCase]);
s := StringReplace(s,sep_f,',',[rfReplaceAll, rfIgnoreCase]);

try
SacarFormato := strtofloat(s);
except
raise exception.Create('error en SacarFormato.StrFloat');
end;
end;



en tu caso, la llamaria asi :

...
double b := SacarFormato('1.323,29','.',',');
...



EDITO : ups, q me olvido argumentos.


saludos