Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-12-2008
DrkMgc DrkMgc is offline
Miembro
 
Registrado: abr 2006
Posts: 17
Poder: 0
DrkMgc Va por buen camino
Question CheckBox en DBGrid

Hola a todos.

Tengo una tabla con datos de personas, necesito mostrarlos en un DBGrid (eso ya lo hice), pero quiero seleccionar varias filas para después trabajar con los datos de las filas seleccionadas. Pensé que sería mejor usar CheckBoxes, pero no encuentro la manera de usarlos en conjunto con el DBGrid...

Lo único que encontré en Internet, es usar un DBCheckBox, pero para mostrar el valor de un campo binario en una DB (que no es mi caso)

Otra posibilidad sería usar un componente pensado para estos casos, pero no conozco ninguno. Qué puedo hacer?

Espero sus respuestas
Responder Con Cita
  #2  
Antiguo 02-01-2009
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.285
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
Tal vez utilizando TClientDataSet puedas conseguirlo. En realidad sería como modificar un nuevo campo en local.

Se trataría de añadir un nuevo campo de tipo Booleano (y luego pintarlo como un CheckBox).

Luego a la hora de hacer el update, sólo sería recorrer los marcados a true para hacer la operación que desees hacer con los seleccionados.

También deberías modificar el pintado (OnDrawCell//OnDrawColumnCell) para que las que modificas a TRUE aparezcan de color diferente.
__________________
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.

Última edición por Neftali [Germán.Estévez] fecha: 02-01-2009 a las 11:47:48.
Responder Con Cita
  #3  
Antiguo 02-01-2009
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Cita:
Empezado por DrkMgc Ver Mensaje
...
Otra posibilidad sería usar un componente pensado para estos casos, pero no conozco ninguno. ...
La JEDI VCL tiene un DBGrid (TjvDBGrid) que automáticamente pone un "checkbox" para los campos que están definidos como booleanos.

Además, en las JEDI te encontrarás con muchos otros componentes muy muy útiles.
__________________

Responder Con Cita
  #4  
Antiguo 02-01-2009
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 656
Poder: 17
look Va camino a la fama
Cita:
Empezado por ContraVeneno Ver Mensaje
La JEDI VCL tiene un DBGrid (TjvDBGrid) que automáticamente pone un "checkbox" para los campos que están definidos como booleanos.

Además, en las JEDI te encontrarás con muchos otros componentes muy muy útiles.
Concuerdo con lo que dice el amigo ContraVeneno, este TjvDBGrid tiene la Propiedad editscontrols , en donde puedes seleccionar varios objetos , en este caso un check, es muy bueno yo lo utilizo ...

__________________
all your base are belong to us
Responder Con Cita
  #5  
Antiguo 02-03-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question

Cita:
Empezado por look Ver Mensaje
Concuerdo con lo que dice el amigo ContraVeneno, este TjvDBGrid tiene la Propiedad editscontrols , en donde puedes seleccionar varios objetos , en este caso un check, es muy bueno yo lo utilizo ...


¿y como se usa. ?
acabo de instalar las jedi

por querar usar el componente
jvDBGrid

pero como se usa yo tengo una tabla mysql
con valores que al momento de crearla eran booleanos
pero al leer los datos resulto ser tiny
con 1 y 0 segun su valor de true o false.

yo supongo que eso no afecta.
por ejemplo si en la base de datos la tabla tiene S y N



yo quiero hacer un
select * from mitabla

y mostrar un grid con los checbox seleccionados. si el valor
regresado tiene 1 y no selecionados si contiene 0


pero tambien quiero poder seleccionar todos.
con un boton seleccionar todos.
y deseleccionarlos todos con otro boton

y de los que si esten seleccionados procesarlos.
aqui es donde no tengo idea de como se hace el

recorrido del grid para revisar si el chechbox esta checado
y si lo esta tomar el id de la fila que esta checado

mi tabla es asi.


clientes (id, cliente, rfc, checado)
1, 'Juan', 'XXXACXXXXXXXX', 0
2, 'Manuel', 'XXXACXXXXXXXX', 1
3, 'Alfredo', 'XXXACXXXXXXXX', 0
4, carlos, ' XXXACXXXXXXXX', 1
5, 'Memo', 'XXXACXXXXXXXX', 1
Responder Con Cita
  #6  
Antiguo 02-03-2011
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Para hacer el recorrido, no lo tienes que hacer sobre el DBGrid, lo tienes que hacer sobre el dataset enlazado, es decir, sobre tu TQuery.

Para mostrar correctamente los campos, lo más recomendable es traer los datos tal cuál los necesitas, es decir, no hacer un "Select *", si no los datos que requieres.

Una vez que tengas los campos, puedes hacerle un cast desde tu consulta para que aparezcan co nlos datos que requieren, es decir, convertir el tinyInt a Boolean y con esto automáticamente te aparecerá el campo como checkbox.

La otra opción es que definas las columnas directamente con su tipo en el DBGrid, esto es, crear los campos persistentes y ahí puedes definirle cuál es el valor que quieres tomar como verdadero y cuál es el valor que representa el falso. Yo tomaría esta opción.

Saludos.
__________________

Responder Con Cita
  #7  
Antiguo 02-03-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question

Cita:
Empezado por ContraVeneno Ver Mensaje
Para hacer el recorrido, no lo tienes que hacer sobre el DBGrid, lo tienes que hacer sobre el dataset enlazado, es decir, sobre tu TQuery.

Para mostrar correctamente los campos, lo más recomendable es traer los datos tal cuál los necesitas, es decir, no hacer un "Select *", si no los datos que requieres.

Una vez que tengas los campos, puedes hacerle un cast desde tu consulta para que aparezcan co nlos datos que requieren, es decir, convertir el tinyInt a Boolean y con esto automáticamente te aparecerá el campo como checkbox.

La otra opción es que definas las columnas directamente con su tipo en el DBGrid, esto es, crear los campos persistentes y ahí puedes definirle cuál es el valor que quieres tomar como verdadero y cuál es el valor que representa el falso. Yo tomaría esta opción.

Saludos.
yo necesit recorrer el dbgrid por que
el usuario va a checkar deschecar los checkboxes.

segun su criterio.
entonces el programa debe de procesar los que se checaron
de una forma y los que no se checaron de otra forma.
y me quiero valer del ID de cada fila. que es el ID de del registro
en la base de datos.

voy a hacer una prueba a ver si me queda.
Responder Con Cita
  #8  
Antiguo 12-05-2011
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Talking

Hola a Todos...

quiero utilizar esta característica del TjvDBGrid, pero no he podido dar con las instrucciones correctas...

Estoy trabajando con SQL Server 2005...

Les cuento el proceso... Se trata de contratos en donde se compran asientos del Estadio... Ahora pidieron que modifique el sistema de tal forma que permita Anular el Contrato o Anular solo ciertos asientos...

Tengo todo conectado a un ADO_Query que tiene lo siguiente

Código SQL [-]
Select * From Vista_Detalle_Contrato

lo que muestra los siguientes datos

DCon_Id := Identidad (Numerico)
Con_Id := Numero de Contrato (Numerico)
Abo_Id := Codigo de Asiento (Numerico)
DCon_Valor := Valor Asiento (Numerico)
DCon_Estado := Estado Asiento (Char(1) / H:Habil, A:Anulado)

Mi idea es poder anular (Renunciar) a algunos asientos, para lo cual quiero seleccionar a través de un CheckBox dentro del DBGrid

Las restricciones son que un asiento que ha sido renunciado (en el contrato ) no se puede habilitar en el mismo contrato.

Al ser liberado el Asiento (por renuncia) se debe permitir ingresar en un contrato nuevo.... (esto es trabajando los estados de los asientos, así que no tendria problema con esto)

Ahora, con las preguntas de rigor...

Puedo trabajar el campo DCon_Estado de tipo Char(1) como Boolean?
Como y en donde le asigno que se cambie por un Checkbox??
Si la letra H es Habil, puedo indicar que la H es True y la R es False?

Esperando sus comentarios...

Salu2
__________________
BlueSteel

Última edición por BlueSteel fecha: 12-05-2011 a las 23:13:22.
Responder Con Cita
  #9  
Antiguo 13-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola DrkMgc.

Para agregar una opción (creo que algo dejó entrever Neftalí), se puede agregar un CheckBox a un DBGrid.

En este artículo, Zarko Gajic explica como hacerlo: CheckBox inside a DBGrid.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 18-05-2011
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Hola

sigo con este proceso, y con el componente TJvDBGrid. ya pude poner el ChecBox en el DBGrid, lo que tuve que realizar fue agregar un campo de tipo Bit a la tabla.

Ahora mi consulta es lo siguiente

Cuando ejecuto el programa puedo cambiar el Check del estado sin problemas, pero necesito realizar lo siguiente:

- Actualizar el estado en la Tabla, como debo realizar este proceso??? (Actualizar estado)
- Si el estado es Falso, el sistema no debe permitir cambiar el estado...??? como deberia preguntar por esto?


Tambien quiero realizar la consulta pero agregando un componente de tipo ComboBox con 3 alternativas (Vigente / No Renovado / Anulado )

Esperando sus comentarios,

Salu2
__________________
BlueSteel
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
DBGrid+checkbox vicrati Conexión con bases de datos 5 14-08-2006 11:08:23
DBGrid con CheckBox lgarcia OOP 2 03-03-2005 22:15:30
DBgrid y Checkbox santi Varios 2 24-01-2005 18:25:53
DBGrid y CheckBox seb@ OOP 2 17-10-2003 15:04:54
CheckBox en un DBGrid DJ VMan MySQL 4 26-06-2003 17:05:26


La franja horaria es GMT +2. Ahora son las 13:45:00.


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