Hola.
Me gustaría agregar que podemos prescindir del
Case empleando la variable global DefaultFieldClasses:
Código Delphi
[-]
If DefaultFieldClasses [Tipo] <> Nil Then
NuevoCampo := DefaultFieldClasses [Tipo].Create (DataSet)
Else
Respondiendo a
roboflekto:
Cita:
Empezado por roboflekto
//lógicamente, dependerán de la bbdd que uses
???
¿No se trata de campos calculados, es decir que no están en la base de datos?
y otra cosa: ¿por qué en el evento BeforeOpen? ¿No se puede usar en el AfterOpen?
|
Más bien dependerá de los tipos de campos que soporte el componente conjunto de datos en cuestión.
Es más adecuado BeforeOpen que AfterOpen, para que al abrirse el conjunto de datos éste destine espacio en los buffers de registros para los nuevos campos calculados. De hecho hay una validación en la clase TField que impide agregar un nuevo campo a un conjunto de datos abierto.*
Saludos.
Al González.
*
Off topic:
Tal validación puede ser burlada para crear campos calculados que no consuman memoria en los registros. Comento esto porque a alguien puede resultarle interesante como para abrir otro tema al respecto.