Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Formato de porcentajes para campos (https://www.clubdelphi.com/foros/showthread.php?t=50843)

FelipeDiaz 29-11-2007 17:08:04

Formato de porcentajes para campos
 
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
 
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

Cita:

Empezado por FelipeDiaz (Mensaje 249393)
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

Un alternativa
 
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í:
Código Delphi [-]
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

BASTI "eventos OnGetText y OnSetText del campo"
 
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. Ahí encontrarás algunos. Sobre todo La Cara Oculta.


La franja horaria es GMT +2. Ahora son las 15:17:23.

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