![]() |
2 Dudas con DBGrid. Bloquear, Modificar = Color
hola Nuevamente..
Tenga Dos Dudas con respecto al DBGrid. 1. El DBGrid esta conectado con el DataSource --> Query --> DataBase Me permite Modificar Los datos, etc. pero quisiera q si se modifico alguna celda al salir de ella esta cambie el color de la Fuente. ejemplo en la Comuna1, Celda3 la consulta muestra '123' lo modifican a '321' al salir de la Celda cambien el color de la fuente a 'Rojo'. Es posible?? :confused: ahi la Primera duda.. --------------------------------------- 2. Como puedo Bloquear una columna del DBGrid ???? :confused: es decir el Mismo DBGrid muestra informacion en 4 Columnas asi q la idea es la Siguiente: evitar q puedan acceder a la Columna 4. es decir q esta sea solo de Consulta miestras q en las demas si se pueda editar. --------------------------------------------------------- Les agradeseco de antemano la antecion prestada Saludos.. |
Hola, sobre la segunda duda lo puedes hacer asi:
Sobre la primera duda debes jugar con los eventos onColEnter, OnColExit y OnDrawColumnCell. Espero te sirva. Saludos. |
Gracias por responder Enecumene.
con respecto a la Segunda duda seguie el ejemplo de este hilo q funciono en gran manera. Pero con respecto a la primera Duda.. no se como validar q los datos de la celda an sido modificados. encontre el siguiente ejemplo:
el cual es colocado en el evento OnDrawColumnCell del DBGrid hace exactamente lo q necesito pero el detalle es q se hace la validacion con un Numero determinado.
y yo necesito es validarlo contra lo q trajo el Query asi q no es adecuado. e intentado modificar la condicion pero no e podido dar con la Solucion si alguien me puede ayudar se les agradecera en gran manera Saludos.. |
Hola georgejg
Dejame entender lo que estas comentando, lo que necesitas es que cuando se modifique la columna1 cambie el color de la fila o solo cambie el color de la celda que se modificó ??? Salud OS |
No sé si estoy entendiendo. De alguna forma tú lo que quieres es marcar los registros o campos que han sido modificados para que visualmente sea fácil distinguirlos. Pero una vez que te mueves de registro, los cambios se mandan a la base, de manera que realmente ya no hay cambios. Entonces, quizá la opción sería retrasar el envío de cambios usando CachedUpdates o un ClientDataset. En ese caso me parece que puedes hacer uso de las propiedades OldValue y NewValue del TField correspondiente. Si no coinciden es porque el campo se ha modificado. Coincidirán de nuevo una vez que uses ApplyUpdates.
Bye |
Gracias por responder ahora les detallo mas la intencion:
tengo un Database --> un Query --> DataSource --> DBGrid conectados. ahora usando el Query realizo una consulta de los campos PESO, CANTIDAD, PRECIO, TIPO, (a la Tabla1) de mi Base de Datos El resultado de la consulta me la muestra en DBGrid1 y lo q quiero como dije en el ejemplo (ejemplo en la Comuna1, Celda3 la consulta muestra '123' lo modifican a '321' al salir de la Celda cambien el color de la fuente a 'Rojo'.) es lo siguiente (Paso a Paso): 1. Genero la Consulta 2. La consulta me Muestra: Ejemplo.... Columna1 - Columna2 - Columna3 - Columna4 PESO --- CANTIDAD --- PRECIO --- TIPO 12 ------- 210 ----- ---- 23500 ---- 1 15 ------- 120 ----- ---- 4520 ----- 2 18 ------- 31 ----------- 1200 ----- 1 20 ------- 15 ----------- 800 ------ 2 3. Digamos (Ejemplo) q quiero modificar la celda 2 de la columna3 (PRECIO) es decir (4520) 4. Cambio el 4520 por 777 (Es Decir estoy dentro de la Celda) 5. Al Salir de la Celda ya sea usando TAB, el Mouse, El Teclado..etc. quiero q se cambie el color de la fuente a 'Rojo'. Pero Solo de la Celda que modifique. Las q no e modificado deben quedar con el mismo color q biene por defecto (Negro). esto como dice keyboy "marcar los registros o campos que han sido modificados para que visualmente sea fácil distinguirlos" 6. Al Darle Clic en el Botton "Guardar Cambios" me guarda los cambios en la BD y me quita el color "Rojo" de los campos editados. Esto es Basicamente lo q se pretende. ahora el unico ejemplo q e encontrado con algo mas o menos parecido esta en este hilo que e intentado adecuarlo pero no lo e logrado. Les agradesco una pronta respuesta Saludos. |
La franja horaria es GMT +2. Ahora son las 09:35:59. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi