PDA

Ver la Versión Completa : DisplayFormat en tiempo de ejecución?


mguixot
31-05-2004, 12:20:21
Hola,
estoy intentando asignar una cadena a una columna de un DBGrid, cuya dataset la calculo en tiempo de ejecución. Pero no consigo hacerlo. He intentado hacerlo sobre el mismo field de la IBQuery en la que calculo todo, pero tampoco. Sabeis de que manera puedo formatear el valor del campo?. La columna son valores en €, y desearía formatearlo a 4 decimales y 0's por defecto. ('###.##0,###0')

Saludos

jachguate
31-05-2004, 16:51:35
Si nada funciona, valete del evento OnGetText del field para darle formato.

Hasta luego.

;)

mguixot
31-05-2004, 17:22:50
Gracias por tu interes, Jachguate. Podrias pasarme algún ejemplo de como capturar ese evento, es que al implementarlo en tiempo de ejecución, no tengo muy claro como hacerlo.

Saludos y gracias

jachguate
31-05-2004, 19:18:16
Debes tener un método en la forma con los parámetros necesarios, de acuerdo al tipo del evento.

En el caso de OnGetText, que es del tipo TFieldGetTextEvent, encontramos fácilmente en la ayuda su declaración, que es como va:


type TFieldGetTextEvent = procedure(Sender: TField; var Text: string; DisplayText: Boolean) of object;
property OnGetText: TFieldGetTextEvent;


Por lo tanto declaras un método, llamemolo FormatearFloatField.

Lo declaras asi:


type

TForm1 = class(TForm)
..
private
Procedure FormatearFloatField(Sender: TField; var Text: string;
DisplayText: Boolean);
..



Lo codificas en la sección de implementation y en tiempo de ejecución podes asignarlo "dinámicamente" a cualquier field.


// si estas en el mismo formulario
query1.FieldByName('Total').OnGetText := FormatearFloatField;
// si lo tuvieras en un modulo de datos, por ejemplo...
query1.FieldByName('Total').OnGetText := ModuloDatos.FormatearFloatField;
query1.FieldByName('Total').OnGetText := FormatearFloatField;


Hasta luego.

;)

mguixot
01-06-2004, 11:38:19
Genial!
El ejemplo me ha servido de mucha ayuda. Ya he conseguido implementarlo.

Muchas Gracias.