2012-04-22 74 views
7

Me gustaría formatear celdas específicas para forzar dos decimales. Los datos provienen de un procedimiento almacenado ElevateDB y se conectan a un TDataSource.¿Cómo formatear una columna DBGrid para mostrar dos lugares decimales?

EDIT: SQL Programación Nota:

yo no estaba seguro de si esto era sólo una cuestión ElevateDB o no. Antes de conocer el Fields Editor, intenté formatear los datos en el nivel SQL mediante el uso de una instrucción CAST (NumericField as varchar (10)) dentro del procedimiento almacenado. Al hacerlo, no expone la propiedad DisplayFormat dentro del editor de campos para este campo en particular.

Cuando quité la declaración CAST() desde el procedimiento almacenado, el propiedad formatSalida se presentaron en el Editor de campos.

+0

Solo los campos numéricos exponen una propiedad DisplayFormat; no hay uso para ella en los campos de cadena. –

Respuesta

9

Puede formatear las columnas DBGrid formateando los campos subyacentes. Si no lo hace, cree campos estáticos en su conjunto de datos y luego configure la propiedad DisplayFormat del campo en cuestión en 0.00 y listo.

+0

¿Cómo se crean "campos estáticos"? ¿Cómo se configura el DisplayFormat? –

+0

Utilice el [editor de campos] (http://docwiki.embarcadero.com/RADStudio/en/Fields_Editor) para crear campos estáticos (también llamados persistentes). Cada campo tiene una propiedad DisplayName. –

+0

I "clic derecho" y encontré el "Editor de campos". Sin embargo ... no hay DisplayFormat. Estoy tan frustrado con Delphi en este momento que podría escupir. –

7

utilizo mismo método que respondió Uwe, en el código después de abrir el conjunto de datos sólo tiene que añadir esta línea de código para dar formato a la columna certian:

TFloatField(MyDs.FieldByName('Cost')).DisplayFormat := '0.00'; 
2

puede dar formato al campo utilizando el evento DrawDataCell.

procedure TFormMain.DBGridCompareDrawDataCell(Sender: TObject; 
    const Rect: TRect; Field: TField; State: TGridDrawState); 
begin 
    if Field.Name = 'FIELDNAME' then 
    TFloatField(Field).DisplayFormat := '#,##0.00'; 
end; 
Cuestiones relacionadas