Page 1 of 1

checkbox en columna de un listbox

PostPosted: Fri Feb 06, 2009 1:55 am
by Arturo Lopesoria
Hola a todos.
Como puedo hacer para colocar un checkbox editable en cada renglon para la columna correspondiente a un campo logico de un listbox? Lo que deseo hacer es algo tan sencillo para el usuario como "palomear" los registros que le interesa seleccionar antes de un proceso siguiente.

Existe algun ejemplo?
Gracias. Saludos.

Re: checkbox en columna de un listbox

PostPosted: Fri Feb 06, 2009 7:44 am
by Antonio Linares
Arturo,

Es facil de hacer:

1. Necesitas tener un campo logico en la DBF que indique si el registro esta seleccionado.

2. En una columna del browse muestras un dibujo (bitmap) de un checkbox segun ese campo sea verdadero o falso:
... FIELDS If( MiAlias->Selecion, hBmpOn, hBmpOff ), ...

3. Al evento de doble click en el browse o a otro que desees (como pulsar una determinada tecla) le asignas cambiar el valor de ese campo logico y repintas el browse:
oBrw:bLDblClick = { || MiAlias->Seleccion := ! MiAlias->Seleccion, oBrw:Refresh() }

Re: checkbox en columna de un listbox

PostPosted: Fri Feb 06, 2009 2:46 pm
by Arturo Lopesoria
Gracias Antonio.
La solución que me das es sencilla y efectiva.

Estoy dudando como asignar un bitmap a una variable, voy a intentar las formas que se me ocurren y si no puedo pediré ayuda de nuevo.
Saludos.

Re: checkbox en columna de un listbox

PostPosted: Fri Feb 06, 2009 10:19 pm
by Antonio Linares
Arturo,

Puedes guardar el bitmap en los recursos que van incrustados en el EXE o usar un fichero BMP externo.

Las formas de cargarlo en una variable son:

1. Desde recursos:
local hBmp := LoadBitmap( GetResources(), cBmpResName )

2. Desde un fichero BMP externo:
local hBmp := ReadBitmap( 0, cBmpFileName )

En FWPPC\samples\Tutor10.prg tienes un ejemplo de ReadBitmap()

Re: checkbox en columna de un listbox

PostPosted: Fri Feb 06, 2009 11:07 pm
by Arturo Lopesoria
Gracias Antonio. Saludos.