Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2010
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
Question Deshabilitar ciertas filas TDBGrid

Hola a todos,

He buscado pero no he encontrado hasta el momento algo que soluciones mi problema.

El asunto es que tengo un DBGrid el cual lleno con un query (obvio) en el cual solo ciertas filas deben tener la opcion de editar, o mejor dicho quiero poner ciertas filas en ReadOnly para que no modifiquen los datos de las mismas.

Esto lo hago en base a ciertas validaciones del mismo query.
Hasta el momento solo he encontrado como deshabilitar columnas y el grid completo, pero pues eso no es lo que necesito.

Espero que me haya dado a entender y que me puedan ayudar en este pequeño dilema.

Saludos a Todos y gracias.
Responder Con Cita
  #2  
Antiguo 03-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No lo he probado, pero supongo que si en los eventos de OnDrawCell (o similares) puedes consultar los valores (del Grid) para pintar de un color u otro, también se deberían poder hacer otro tipo de operaciones como deshabilitar la edición.

Es este caso además de los valores deberás tener en cuenta que sea la línea que estés editando (revisa el estado -selected, focused,...-)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 03-06-2010
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
Gracias Neftali por la respuesta.

Cita:
Empezado por Neftali Ver Mensaje
No lo he probado, pero supongo que si en los eventos de OnDrawCell (o similares) puedes consultar los valores (del Grid) para pintar de un color u otro, también se deberían poder hacer otro tipo de operaciones como deshabilitar la edición.
Ya he intentado hacerlo de esa forma y no he tenido exito, y sigo sin encontrar una solucion.

Saludos
Responder Con Cita
  #4  
Antiguo 03-06-2010
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Estoy de acuerdo con Neftali si añades un campo al grid para saber si el registro debe editase o no, o según la condición/valor de un determinado campo de tu querry/tabla en el OnDrawCell y Datacell (no me acuerdo exactamente del nombre del evento) solo tendrías que hacer un if then, o con un else, si la condición/campo no se cumple haz lo que tengas que hacer, podrías dejarlo así, o poner lo contrario, también puedes optar, por al posicionarte sobre un registro, al darle enter o Click cambiar la propiedad readonly, según la Condición/campo.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #5  
Antiguo 03-06-2010
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
Cita:
Empezado por José Luis Garcí Ver Mensaje
Estoy de acuerdo con Neftali si añades un campo al grid para saber si el registro debe editase o no, o según la condición/valor de un determinado campo de tu querry/tabla en el OnDrawCell y Datacell (no me acuerdo exactamente del nombre del evento) solo tendrías que hacer un if then, o con un else, si la condición/campo no se cumple haz lo que tengas que hacer, podrías dejarlo así, o poner lo contrario, también puedes optar, por al posicionarte sobre un registro, al darle enter o Click cambiar la propiedad readonly, según la Condición/campo.
Ese no es mi problema, ya lo tenia, el punto es que requiero que me digan la instrucción, la linea que debo usar para que funcione bien.

He usado ReadOnly al campo, pero aplica la condicion a todo el grid, no solo a la fila.

Saludos
Responder Con Cita
  #6  
Antiguo 03-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No hay propiedad del Grid que evite la edición; No la busques porque no la vas a encontar. Lo que intentaba decirte yo, es que si consigues llegar a detectar, tendrás que aplicar alguna lógica sobre el Dataset.

Normalmente cuando alguien intenta editar una fila, saltan eventos en el DataSet asociado al Grid. En esos eventos debes "cancelar" la edición en los casos en los que te interese.

No se si me explico. El Grid te puede servir para pintar las filas diferente o para hacerles alguna marca y "avisar" de que son de sólo lectura. Pero el bloqueo real debes hacerlo desde el Dataset cuando el usuario intenta editar una fila en concreto.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 04-06-2010
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Creo que el objeto TDBColumnGrid tiene las propiedad de ReadOnly. Para acceder a este objeto necesitaras especificar las columas que tendra tu Grid y a que campo del Query pertenece cada una respectivamente. Lo anterior lo puedes hacer en tiempo de diseño o bien lo puedes hacer mediante código.

Si no es así, puedes probar con TDBGrids más avanzados, como por ejemplo el que trae los JEDI components que son gratuitos.

Saludos
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #8  
Antiguo 04-06-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Chris Ver Mensaje
Creo que el objeto TDBColumnGrid tiene las propiedad de ReadOnly.
El problemas es que desea poner filas, y no columnas.
Ahora, otra opción sería actvar y desactivar la columna entera (por código) dependiendo de la fila donde te encuentres, pero no me parece un sistema muy ortodoxo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 04-06-2010
natalinuyo natalinuyo is offline
Miembro
 
Registrado: ene 2007
Posts: 64
Poder: 18
natalinuyo Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
tendrás que aplicar alguna lógica sobre el Dataset.

Normalmente cuando alguien intenta editar una fila, saltan eventos en el DataSet asociado al Grid. En esos eventos debes "cancelar" la edición en los casos en los que te interese.
Gracias Neftali, ahora si ya te entendí, lo intentaré de esa forma gracias.

En cuanto al uso de otro componente (recientemente lo he instalado, pero no lo he utilizado) seria factible si fuera un proyecto nuevo, jeje, pero este ya tiene demasiado

Gracias a todos por las ideas, veremos como resuelvo este asunto.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cargar ciertas paginas en quickreport rufo Impresión 6 17-02-2010 22:54:32
Color filas en TDbGrid ManelC Conexión con bases de datos 0 22-09-2008 15:57:04
Pintar filas TDBGrid ManuelPerez Varios 11 12-08-2008 11:09:47
Vaciado de ciertas tablas en Interbase 6 gorsan Conexión con bases de datos 12 31-10-2007 20:41:08
No depurar ciertas units marto Varios 3 22-06-2004 18:09:38


La franja horaria es GMT +2. Ahora son las 09:12:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi