Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   CheckBox en DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=62553)

DrkMgc 31-12-2008 22:33:26

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

Neftali [Germán.Estévez] 02-01-2009 11:13:53

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.

ContraVeneno 02-01-2009 16:46:54

Cita:

Empezado por DrkMgc (Mensaje 332812)
...
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.

look 02-01-2009 16:56:52

Cita:

Empezado por ContraVeneno (Mensaje 332925)
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 ...:)


JXJ 02-03-2011 06:02:04

Cita:

Empezado por look (Mensaje 332926)
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

ContraVeneno 02-03-2011 16:16:41

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.

JXJ 02-03-2011 19:49:13

Cita:

Empezado por ContraVeneno (Mensaje 392435)
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.

BlueSteel 12-05-2011 23:09:10

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

ecfisa 13-05-2011 04:24:48

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.

BlueSteel 18-05-2011 17:41:47

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:cool::p


La franja horaria es GMT +2. Ahora son las 05:29: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