Este es un ejemplo real que tengo en mi código:
No son campos persistentes, por lo que tengo que explicitamente decirle que tipo de campo es.
Lo que busco es que las fechas no muestren la hora y los valores numéricos se muestren con dos decimales y separador de miles.
Código Delphi
[-]
procedure TDMEmpleado.xEmpleadoAfterOpen(DataSet: TDataSet);
begin
with xEmpleado do
begin
TDateField(FieldByName('FECHA_NACIMIENTO')).DisplayFormat := 'dd/mm/yyyy';
TDateField(FieldByName('FECHA_ANTIGUEDAD')).DisplayFormat := 'dd/mm/yyyy';
TDateField(FieldByName('FECHA_INICIO_CONTRATO')).DisplayFormat := 'dd/mm/yyyy';
TDateField(FieldByName('FECHA_FIN_CONTRATO')).DisplayFormat := 'dd/mm/yyyy';
TDateField(FieldByName('FECHA_VENCIMIENTO_EPI')).DisplayFormat := 'dd/mm/yyyy';
TDateField(FieldByName('FECHA_VALIDEZ_CURSO')).DisplayFormat := 'dd/mm/yyyy';
TDateField(FieldByName('FECHA_ENTREGA_MATERIAL_PRESTADO')).DisplayFormat := 'dd/mm/yyyy';
TDateField(FieldByName('FECHA_REVISION_MEDICA')).DisplayFormat := 'dd/mm/yyyy';
TNumericField(FieldByName('PORC_JORNADA')).DisplayFormat := ',0.00';
TNumericField(FieldByName('HORAS_ANUALES')).DisplayFormat := ',0.00';
end;
xEpi.Open;
xCurso.Open;
xMaterialPrestado.Open;
xDocumento.Open;
xRevisionMedica.Open;
[...]
Este código lo he puesto en el AfterOpen porque los campos son dinámicos.
En el caso de tener campos estáticos, pongo el código de formato en el OnCreate del DataModule.
He visto que para DataSets grandes es mucho más rápido tener los formatos puestos antes de abrirlos.