Columnas en un DBGrid en ejecución

Tengo un DBGrid al cual le paso una consulta que genera cada una de las columnas del mismo, con todos sus datos y propiedades. Ahora bien yo necesito saber como puedo hacer para agregar una columna cuando se esta ejecutando la aplicación, pero que esta columna no sea la ultima, sino una en el lugar que se le pase.

1 respuesta

Respuesta
1
Ah ok, si.
Si el campo no es de base de datos, entonces lo más recomendable es que uses un ClientDataSet, y para lo de la posición igual maneja un index solo cambialo y sera la posición en la que se muestre en DBGrid.
¿Si sabes como usar un ClientDataSet?
Un breve recuerdo por si no sabes, pones un Query pones un DataSetProvider y el clientDataSet.
En el provider lo relacionas con el TQuery y en el client le especificas el provider, y de aquí en adelante te olvidas del query. Solo activas tu clientDataSet, si el query tiene parámetros, entonces si los valores van directamente a la propiedad params del query y luego ya activas el client. Ok
Si tienes más dudas, dímelas.
Lo que vos decís es verdad, pero yo necesito incluir en el DBGrid una o más columnas que no salen de ningún Query y que son por ejemplo para mostrar una imagen o un check o algo similar... Como puedo hacer esto en tiempo de ejecución si a un Query no se le pueden agregar campos (columnas) si estos no salen de la base de datos.
Debería pasar toda esa consulta a un ClientDataSet y desde allí realizar todo o se puede hacer todo directamente con el TADOQuery.
Hola...
Si se usar el ClientDataSet, pero nunca lo había usado con el DataSetProvider. ¿Entonces en done le asigno al Client el DataSetProvider?
¿Luego de esto puedo agregar por código las columnas necesarias al Client?
Gracias por todo y perdona tantas molestias.
Bueno al dbgrid no puedes generar una columna, la columna la generas directamente al query, al generar en el query esta aparecerá automáticamente en DBGrid, ahora para ponerla en una posición indicada, las columnas en el Query tienen una propiedad llamada index la cual empieza en cero hasta el total de columnas, si la nueva columna la quieras poner en la segunda posición solo modificas este index a 1 y listo.
Gracias por la ayuda que me has dado... Cualquier cosa te estaré preguntando nuevamente.
Por si no lo sabias, también puedes crear campos en un ClientDataSet con la propiedad:
FieldDefs.Add(..)
Ok. Los tres componentes Query, Provider y ClientDataSet
En clienteDataSet tiene una propiedad llamada ProviderName ahí le pones tu provider, luego en el provider hay una propiedad llamada DataSet y ahí le pones tu Query.
Y si le puedes agregar campos al client con la propiedad ClientDataSet1. Aggregates. Add()
Con esta propiedad puedes agregar un campo de tipo aggregate y mostrarlo en el DBGrid.
Intenta hacerlo y si tienes problemas me dices.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas