PDA

Ver la Versión Completa : Formato en columnas


gandalf_uy
29-08-2005, 20:50:13
Necesito dar formato a una columna de un dbgrid. Si bien he leido algunos hilos al respecto, tengo Delphi 6 y he probado con la función DisplayFormat del TField y la misma no me compila.

Alguien sabe si es a causa de mi versión de Delphi ya que en Dephi 7 funcinoa correctamente?

Si es así, cómo se hace para darle formato a una columna en Delphi 6?

Chas gracias desde ya.
gandalf_uy

acá pongo un ejemplo de lo que no me compila
Query1.sql.Text := 'Select codigo, descripcion costo from articulo'; Query1.open; Query1.FieldbyName('costo').DisplayFormat := ',#0.00';

delphi.com.ar
29-08-2005, 20:58:01
Si bien he leido algunos hilos al respecto, tengo Delphi 6 y he probado con la función DisplayFormat del TField y la misma no me compila.
¿Qué significa que no te compila?.. ¿Te da un error?.. ¿Cuál?

Alguien sabe si es a causa de mi versión de Delphi
En Delphi 6 tiene que funcionar sin problemas.

Saludos!

gandalf_uy
29-08-2005, 21:02:31
El error que me da es este:

[Error] Primer_Nivel.pas(440): Undeclared identifier: 'DisplayFormat'

Directamente no la encuentra como una propiedad del TField.

Plis jelp !!!

delphi.com.ar
29-08-2005, 21:21:48
DisplayFormat es una propiedad de los TNumericField, TDateTimeField, TSQLTimeStampField y TAggregateField ( y sus heredados).... ¿Qué tipo de campo estas tratando de "formatear"?

gandalf_uy
29-08-2005, 21:43:56
El campo que estoy tratando de formatear es un campo del tipo Integer.

Pero si yo hago esto:

Query1.FieldByName( 'codigo').

supuestamente ahi es donde me trae la ventana de ayuda y me despliega propiedades y métodos. En ningun momento me trae DISPLAYFORMAT, si me trae DISPLAYTEXT, DISPLAYNAME, DISPLAYNAME pero no DISPLAYFORMAT. Igual asi lo escribo
Query1.FieldByName( 'codigo').DisplayFormat := '#.##';

y al compilarlo es que me salta el error que te mencioné.


Gracias delphi.com.ar por intentar ayudarme en la solución de este problema...

delphi.com.ar
29-08-2005, 21:49:23
Tendrías que "castearlo", y no tomarlo como un sumple TField:

if Campo is TIntegerField then
TIntegerField(Campo).DisplayFormat := '......';


Saludos!

gandalf_uy
29-08-2005, 21:49:47
Lo que no me queda claro en lo que me decis es si al utilizar la funcion FIELDBYNAME supuestamente DELPHI no debe saber de que tipo es el campo de un query hasta el momento de ejecucion. No se como decirle que ese campo es de tipo TNumericField que si he buscado y he encontrado la propiedad DISPLAYFORMAT para este tipo de objeto.

gracias again

gandalf_uy
29-08-2005, 22:05:55
Lo solucioné de la siguiente manera:


with query1.fieldbyname('codigo') as TNumericField do
DisplayFormat := ',#0,00';


muchas gracias por la ayuda :)

ReiCk_Z
27-03-2010, 19:32:56
Esa es una manera de solucionar el problema, la otra es colocando DB en uses:
Ej: Uses DB;
De esta manera puedes usar las líneas de código.
with Query1 do
begin
close;
sql.Clear;
//Código de la consulta.
sql.Open;

(FieldByName('Fecha') as TDateTimeField).DisplayFormat:= 'dd/mm/yyyy';
(FieldByName('Precio') as TNumericField).Displayformat:= '$,0.00';
(FieldByName('Numero') as TNumericField).Displayformat := '#,0.0';
(FieldByName('Porcentaje') as TNumericField).Displayformat := '%,0';
end;