Adrian...
xbrowse no usa un CheckBox como tal, hace una excelente emulacion del mismo, en mi particular un mejor funcionamiento ya que utilizas la imagen que quieras, pues el mismo hace uso de 2 imagenes, una que se usa para activar y otra para desactivar segun el valor del campo logico...
te dejo un ejemplo usa las imagenes que trae fivewin \fwh\bitmaps\ ... level1.bmp y
level2.bmp, te repito puedes usar las imagenes que quieras para mostrar la activacion y desactivacion
la DBF usada es la encontrada en los samples de fivewin
el campo a usar como CheckBox debe ser de tipo logico y lo activas con el metodo de las columnas SetCheck( aBmps, bOnPostEdit )
aBmps = array de 2 posiciones que contienen las imagenes
bOnPostEdit = Bloque que contiene la accion post edicion
- Code: Select all Expand view RUN
#include "fivewin.ch"
#include "xbrowse.ch"
REQUEST DBFCDX
function main()
local oWnd
local oBrw
local oCol
local lSelection := .f.
local aData := {}
local nTotal := 0
use "customer" alias "customer" via "dbfcdx"
customer->( dbeval( {||aadd( aData,{ first,Last,Salary,.f.} ) } ) )
define window oWnd title "test"
@ 0,0 xbrowse oBrw columns 1,2,3,4;
headers "Nombre","Apellido","Salario","Seleecion" ;
sizes 120,120, 100, 60 array aData FOOTERS of oWnd
oBrw:aCols[ 3 ]:bFooter := {|| transform( nTotal, "999,999,999.99") }
oBrw:aCols[ 4 ]:SetCheck( { "level1.bmp", "level2.bmp" }, ;
{|o, v| o:Value( v ), ;
if( v, nTotal += oBrw:aRow[ 3 ],nTotal -= oBrw:aRow[ 3 ]),;
oBrw:aCols[ 3 ]:RefreshFooter() } )
oBrw:aCols[ 4 ]:bStrData := { || NIL }
oBrw:createfromcode()
oWnd:oClient = oBrw
activate window oWnd