PDA

Ver la Versión Completa : Como dibujar una celda, fila o columna en un DBGrid


Alexandro
22-10-2008, 21:26:38
Hola a todos, mi pregunta es esta: Como puedo dibujar una celda, fila o columna en un DBGrid de un color X.
La cuestion es la sgte: en una forma tengo un Query y un dbgrid y yo quiero que el el usuario pueda marcar algunos registros con otro color.
Y lo otro es ver como puedo guardar que esos registros estan coloreados, algo así como guardar su configuración. No se si me explico.
Espero me ayuden.
Chao y Suerte
Gracias

Neftali [Germán.Estévez]
23-10-2008, 12:49:33
El tema del color ya se ha tratado otras veces en los foros, pero no exactamente el problema de lo que planteas.

En inconveniente que hay es que tú quieres hacerlo sobre un DBGrid y eso significa que los datos deben estar guardados en Base de Datos.
O vas guardando las configuraciones a medida que el usuario va pulsando (te va a generar tráfico constante) y muchos repintados o usas una capa intermedia en local (TClientDataSet) para trabajar localmente y al final volcar todos los datos.

Alexandro
23-10-2008, 13:00:57
Hola Neftali:
Si, lo que quiero es ir guardando las configuraciones a medida que el usuario va pulsando. O Quizas la Otra Opcion que me das es la mejor (usas una capa intermedia en local (TClientDataSet) para trabajar localmente y al final volcar todos los datos). La verdad es que no se como implementar una u otra y es por eso que acudo a Uds.
Me podrias ayudar?
Gracias

Neftali [Germán.Estévez]
23-10-2008, 16:09:11
Personalmente creo que la opción de TClientDataset si vas a hacer muchos cambios en la más acertada.

No es difícil. Básicamente añades un par de componentes a lo que ya tienes.

Aquí (http://dn.codegear.com/article/28876), por ejemplo, tienes una muy buena explicacion y puedes descargar el ejemplo, aunque si buscas puedes encontrar más.

Al abrir la tabla o consulta, el ClientDataset se encarga de cargar los datos en local. Tú trabajas como si estuvieras directamente en la Base de Datos (Edit, Append, Post,...) y cuando hayas realizado todas las operaciones ejecutas el método del TClientDataset ApplyUpdates.

Este método vuelca todos los cambios que hayas realizado en local sobre el TClientDataset hacia la Base de datos.

Ya se que la explicación es muy resumida, pero espero que te de una idea.

Aquí (http://delphiallimite.blogspot.com/2007/09/la-potencia-de-los-clientdataset-i.html) tienes otro en castellano.

Un saludo.

Alexandro
23-10-2008, 21:34:23
Neftali:
Muchas gracias por contestar y estar atento a mi pregunta. La verdad es que soy algo novato en esto y no se como puedo lograr lo que quiero(dibujar una fila de un DBGrid). Quizas te tome mucho tiempo enseñarme como se logra esto y no dispongas del tiempo, = te agradesco. Yo necesito que sean un poco + explícitos conmigo, ustedes ya dominan muy bien el lenguaje y no tienen problemas a la hora de implementar ciertas cosas, algo que no funciona con los que estamos comenzando en este mundo tan amplio como el de la progración.
Si puedes explicarme un poco mejor te lo agradeceré inmensamente.
Gracias

Neftali [Germán.Estévez]
24-10-2008, 12:24:31
Utiliza alguno de los ejemplos de pintado que hay en los foros o en internet. Incluso en mi web (http://neftali.clubdelphi.com/) (sección de ejemplos) tienes uno que utiliza TClientDataset (si no recuerdo mal), con el nombre "Realizar búsqueda incremental y visualizarla sobre un DBGrid".

Echale un vistazo a cómo está hecho y al código fuente.
A partir de ahí, debes añadir un campo nuevo a la Base de Datos que te indicará cuando pintar y será el que actualizes al pulsar.

Inténtalo y ves paso a paso.