PDA

Ver la Versión Completa : Formato de porcentajes para campos


FelipeDiaz
29-11-2007, 17:08:04
Hola a Todos.

Quisiera que alguien me ayudase con los siguiente:

Tengo en Delphi un formulario que debe mostrar lso valoers de unos descuentos.

Para facilidades de Calculos, internamente los guardé como Float en la BD.

Ejemplo
El desc1 0,001 (que es equivalente al 0,1% )
El desc2 0,016 (que es equivalente al 1,6% )
El desc2 0,300 (que es equivalente al 30% )

Mi poregunta es como hago para que se visualicen los valores en formatode Porcentaje osea como lo entiende la mayoria de las personas con el simbolo %.

Es similar a cuando para mostrar valores de moneda se usa '$#,;(#.00);Cero'


Agradezco, toda colaboracion.


Saludos.

tefots
29-11-2007, 20:20:11
lo multiplicas por 100 , y le añades la coletilla % ??.

algo asi.

edit1.text:=formatfloat('#0.##%',table1.fieldbyname('valor).ascurrency*100);

FelipeDiaz
29-11-2007, 20:48:36
Hola Tefots, lo que sucede es que necesito hacerlo en el formulario de captura de datos, asi como cuando uno escribe un valor de moneda el al recibir el foco muestra solo digitos, sin punto ni coma ni signo pesos (en mi caso pesos Colombianos, simbolo de moneda)

Pues de esta forma quiero es que en el mismo formulario en el mismo control, me reciba el valor en la forma 0,016 y al salir el foco del control, lo muestre como 1,6%. Lo del la moneda se puede hacer en la propiedad Display Format del DBEdit. con el formato que mencioné arriba.

Pero con el porcentaje, no se que hacer. Comprendo tu explicacion pero es mediante codigo, aqui no se como implementarlo.

Gracais nuevamente.

egostar
29-11-2007, 21:33:53
Hola Tefots, lo que sucede es que necesito hacerlo en el formulario de captura de datos, asi como cuando uno escribe un valor de moneda el al recibir el foco muestra solo digitos, sin punto ni coma ni signo pesos (en mi caso pesos Colombianos, simbolo de moneda)

Pues de esta forma quiero es que en el mismo formulario en el mismo control, me reciba el valor en la forma 0,016 y al salir el foco del control, lo muestre como 1,6%. Lo del la moneda se puede hacer en la propiedad Display Format del DBEdit. con el formato que mencioné arriba.

Pero con el porcentaje, no se que hacer. Comprendo tu explicacion pero es mediante codigo, aqui no se como implementarlo.

Gracais nuevamente.

Porque no usas el evento onexit de tu campo para convertir el dato a porcentaje.

Salud OS

FelipeDiaz
29-11-2007, 22:33:36
Hola Egostar,

La verdad, no se si eso se pueda, pues altero el campo y por ser un DBEdit no s esi me afecte el valro en la Base de datos y como pasaria de un float a un String por agregarle el signo %, me podria dar una excepcion.

Bueno, lo hice de esta forma.
en el formulario de alimentadion de tablas de descuentos, Ivas y retenciones dejo que el usuario encargado los llene teneido la precausion que los llenara en formato float.

por otro lado agregando un campo calculado de tipo String donde guardo por decirlo '30,5%',. ese campo es el que vinculo por un DBLOOKUPCOMBOBOX, de esta forma el usurario que hara uso de los Descuentos y valroi de Iva previamente configurados o alimentados en la aplicacion, los vera en lenguaje mas natural.

Solo queda como incomodo para el que alimenta la BD. que tiene que colocar un 5% como .... 0,050.

Si se els ocurre alguna alternativa, me comentan..

Saludos a todos y de nuevo gracias.

basti
29-11-2007, 22:52:54
Puedes usar los eventos OnGetText y OnSetText del campo.

Algo así:

procedure TForm1.Table1PorcentajeGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
Text := FloatToStr(Sender.asFloat * 100) + '%'
end;

procedure TForm1.Table1PorcentajeSetText(Sender: TField;
const Text: String);
begin
Sender.AsFloat := StrToFloat(Text) / 100;
end;

FelipeDiaz
30-11-2007, 20:51:05
Hola Basti....... Mis respetos ...Nunca imagine que eso fuese posible y tan sencillo.....funcionó. Era lo que andaba buscando.

Mil Gracias.....¿ Podria saberse como ...o de donde aprendiste lo que sabes.. .. algun libro en esepcial que recomiendes?

Bueno en todo caso, Un abrazo..Quedo enormemente agradecido.

FELIPE:

basti
30-11-2007, 21:19:49
Pásate por el ftp del club. Hay una sección de libros (http://www.terawiki.clubdelphi.com/Delphi-Win32/Libros/). Ahí encontrarás algunos. Sobre todo La Cara Oculta.