Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   CheckBox en un DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=1727)

DJ VMan 25-06-2003 17:51:35

CheckBox en un DBGrid
 
trabando con 1 y 0, osea, "boolean" en MySQL, como se puede llegar hacer una grilla (DBGRid) que muestre dichos valores pero que los muestre como checkbox?

Yo lo hice con ExDBGrid (gran componente), en el cual se puede "asociar " un componente fuera de la grilla, y que "actue" dentro de la grilla, en una columna seleccionada. El problema de esto, es que sólo se muestra el checkbox cuando entro en modo de edición (o inserción) en la columna del campo "boolean".

Pero la idea es que se vean (los checkboxes) siempre, en todo momento. Asi como lo hace el access con sus valores booleanos.

__cadetill 25-06-2003 20:43:15

En mi web tienes una demo de como funciona el RxDbGrid y en él muestro como poner un check, eso si, con campos booleanos, pero cambiando un poco el código seguro que consigues hacerlo con 1 y 0

DJ VMan 25-06-2003 22:34:34

si me funciona. Pero sólo para mostrar datos, cuando quiero editar me aparece el 1 o el 0 (dependiendo).

Sólo tube que modificar la siguiente linea:

DrawFrameControl(RxDBGrid1.Canvas.Handle, CheckBoxRectangle, DFC_BUTTON, CtrlState[Column.Field.AsBoolean]);

por esta otra:

DrawFrameControl(RxDBGrid1.Canvas.Handle, CheckBoxRectangle, DFC_BUTTON, CtrlState[(Column.Field.AsInteger=1)]);

por cierto, había visto cosas por el estilo en otros lugares, pero esta está mucho más fácil. :p

Si puedieras ayudarme ..... por favor....

__cadetill 26-06-2003 00:47:25

Cita:

Posteado originalmente por DJ VMan
si me funciona. Pero sólo para mostrar datos, cuando quiero editar me aparece el 1 o el 0 (dependiendo).
Si, cierto, esto es ReadOnly. Como modificas/insertas los datos, en el mismo Grid o en una pantalla a parte?

Por cierto, supongo que esta linea de codigo tambien la habras modificado ;)

Código:

if Column.Field.DataType = ftBoolean then
por esta otra (o algo parecido)

Código:

if Column.Field.DataType = ftInteger then

DJ VMan 26-06-2003 17:05:26

en efecto, tambien cambié esa linea, pero no como lo hiciste tu. Tube que identificar el campo que quería a través de su nombre, si lo hacía como tu propones, me fallaban otros campos integer que tenía la tabla.

pero....

COMO SOLUCIONO EL PROBLEMA?

una pseudo solución fue ocupar la dbgrilla ExDBGrid, la cual tiene el mismo evento DrawColumnCell, que tu ocupas en tu ejemplo. Pero además este componente te permite "asociar" un componente externo a la grilla (en este caso el checkbox), y que actue dentro de ella.

Asi que uniendo ambas cosas, solucioné el problema .... a medias....pero solución al fin y al cabo. Asi que si alguien tiene otra...QUE LO DIGA! porque esta no me gusta mucho.


La franja horaria es GMT +2. Ahora son las 03:11:02.

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