[Lazarus-es] CheckBox en TDBGrid

Ismael L. Donis Garcia ismael en citricos.co.cu
Vie Jun 3 21:15:32 CEST 2011


El 03/06/11 13:37, Jesus Reyes escribió:
>
>
> --- El vie 3-jun-11, Paola Bruccoleri<pbruccoleri en adinet.com.uy>  escribió:
>
>> De: Paola Bruccoleri<pbruccoleri en adinet.com.uy>
>> Asunto: Re: [Lazarus-es] CheckBox en TDBGrid
>> A: "Spanish version of Lazarus List"<lazarus-es en lists.lazarus.freepascal.org>
>> Fecha: viernes, 3 de junio de 2011, 11:29
>> El 03/06/2011 12:52 p.m., Ismael L.
>> Donis Garcia escribió:
>>> No entendiste bien, en los datos que traigo de la
>> consulta no hay problema, el problema es cuando trato de
>> insertar un registro nuevo (dentro del tdbgrid, trabajo
>> dentro del grid, tecleo directo en el grid)
>>>
>>> Cuando intento insertar un registro nuevo el campo del
>> tdbgrid que tiene la propiedad
>> .ButtonStyle:=cbsCheckboxColumn; me aparece en gris y
>> marcado por defecto y yo quiero que me aparezca desmarcado y
>> habilitado.
>>>
>>> en gris = deshabilitado
>>> si no está en gris = habilitado
>>>
>>> Repito quiero que cuando me mueva para abajo para
>> insertar una nueva fila en el TBDGrid la columna me aparezca
>> habilitada y desmarcado el checkbox. Esto lo he tratado de
>> hacer buscando alguna propiedad y no lo he encontrado,
>> tampoco he encontrado como hacerlo en tiempo de ejecución.
>>>
>> Hola Ismael..
>> pero como el dbgrid está asociado a un table/query,
>> porqué no te fijás en el valor por defecto de ese campo de
>> la bd? porque cuando insertás un registro deade ahí
>> mismo,  internamente se hace un insert..
>> ojo, capaz que el control siempre muestra checked sin darle
>> bolilla al valor x defecto...
>> byeeeeeeeeeee
>>
>
> "Normalmente" un checkbox se utiliza para indicar dos estados, marcado o desmarcado, lo cual esta determinado por los valores de ValueChecked y ValueUnchecked, si para un nuevo registro el valor del campo es NULL el checkbox se mostrara en un tercer estado que es como ya dijiste un checkbox marcado pero deshabilitado.
>
> Se me ocurren 3 soluciones:
>
> 1. Crear un evento OnNewRecord en el Dataset asociado al dbgrid, ahí puedes inicializar los valores de los campos que desees, en este caso podrías poner por defecto el valor correspondiente a ValueUnchecked.
>
> 2. Crear un evento OnUserCheckboxBitmap en el dbgrid, de tal manera que cuando tal evento se active teniendo en el parametro CheckedState=cbGrayed regresemos un bitmap identico al utilizado para CheckedState=cbUnChecked
>
> 3. Podría agregarle a TColumn una propiedad que nos indique que un valor NULL sea siempre considerado como UnChecked, creo que esta solución seria la mas fácil para los usuarios pues se haría en tiempo de diseño, también no requeriría cambiar los datos de NULL a algún valor como en el caso 1). Lo único es que necesitaría algún tiempo para implementar esta opción pues de momento aun me encuentro algo ocupado en otras cosas.
>
> Saludos a todos.
>
> Jesús Reyes A.
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>

Veré que saco de todo lo que me acabas de explicar dado que mis 
conocimientos es esta plataforma son muy limitados, pero al menos me has 
encendido el bombillo de por donde debo mirar.

1 Millón de Gracias por todo lo explicado.
==========
* ISMAEL *
==========





More information about the Lazarus-es mailing list