Page 1 of 2
checkbox en xbrowse
Posted: Fri Dec 20, 2013 11:31 pm
by artu01
Hola
no consigo hacer que aparezca el cuadradito de check en una columna que es de tipo logica
me pinta .t. o .f.
le he dado todas las formas posibles con "ON" y "OFF"
Code: Select all | Expand
REDEFINE XBROWSE oBrw2 ID 5000 OF oDlg ALIAS "CTACTE" ;
COLUMNS "Voucher","Estado","Mesprov","tipdoc","SerDoc","NumDoc","Moneda","tcambio","DEBES","HABERS","SALDOS","DEBED","HABERD" ;
HEADERS "Voucher","Estado","Mes","T.Doc.", "Serie", "Numero", "Mon.", "T.C.", "Debe S/.", "Haber S/.", "Saldo S/.", "Debe US$", "Haber US$";
JUSTIFY, .F., AL_CENTER, .T. ;
AUTOSORT FASTEDIT ;
FOOTERS LINES CELL
oCol:=oBrw2:oCol("Estado")
oCol:SetCheck({"ON","OFF"})
Podrian decirme como se hace?
Re: checkbox en xbrowse
Posted: Sat Dec 21, 2013 4:31 pm
by joseluisysturiz
Primero, estas usando DBF o MYSQL.?
Segundo, si es DBF tiene el campo como logico.?
Tercero, si es MYSQL debes de convertir el valor del campo en .t. / .f. ya que mysql no maneja campos logicos.
Cuarto, puedes poner todas las opciones como defines esa columna para usar el SetCheck,
Quinto, saludos...

Re: checkbox en xbrowse
Posted: Sat Dec 21, 2013 4:41 pm
by artu01
Re: checkbox en xbrowse
Posted: Sat Dec 21, 2013 4:46 pm
by artu01
joseluisysturiz wrote:Primero, estas usando DBF o MYSQL.?
Segundo, si es DBF tiene el campo como logico.?
Tercero, si es MYSQL debes de convertir el valor del campo en .t. / .f. ya que mysql no maneja campos logicos.
Cuarto, puedes poner todas las opciones como defines esa columna para usar el SetCheck,
Quinto, saludos...

joseluis
1. uso dbf
2. si es campo logico
4. no tengo mucha exp. con xbrowse, aqui mi codigo
Code: Select all | Expand
REDEFINE XBROWSE oBrw2 ID 5000 OF oDlg ALIAS "CTACTE" ;
COLUMNS "Voucher","Estado","Mesprov","tipdoc","SerDoc","NumDoc","Moneda","tcambio","DEBES","HABERS","SALDOS","DEBED","HABERD" ;
HEADERS "Voucher","Estado","Mes","T.Doc.", "Serie", "Numero", "Mon.", "T.C.", "Debe S/.", "Haber S/.", "Saldo S/.", "Debe US$", "Haber US$";
JUSTIFY, .F., AL_CENTER, .T. ;
AUTOSORT FASTEDIT ;
FOOTERS LINES CELL //AUTOCOLS
if ! Empty( oCol := oBrw2:oCol( "Estado" ) )
oCol:SetCheck({"ON","OFF"})
oCol:cSortOrder:=nil
//oCol:bStrData:={||NIL} ---> aqui bota error por eso lo comento
Endif
oBrw2:nMarqueeStyle := 5
Re: checkbox en xbrowse
Posted: Sat Dec 21, 2013 5:19 pm
by joseluisysturiz
intenta suspender el IF haber si te lo muestra y el oCol:bStrData:={||NIL} es el valor del campo, porque lo colocas en NILL si debe ser .f. o .t. para que aparezca el checkbox.? saludos...

Re: checkbox en xbrowse
Posted: Sat Dec 21, 2013 5:21 pm
by carlos vargas
por favor, pon despues del redefine xbrowse
oBrw:SetRdd()
prueba y comentas.
salu2
carlos vargas
Re: checkbox en xbrowse
Posted: Mon Dec 23, 2013 2:55 pm
by artu01
joseluis:
le he puesto oCol:bStrData:={|| .t.} y bota error
joseluisysturiz wrote:intenta suspender el IF haber si te lo muestra y el oCol:bStrData:={||NIL} es el valor del campo, porque lo colocas en NILL si debe ser .f. o .t. para que aparezca el checkbox.? saludos...

carlos:
siguel igual sin mostrar la cajita de checkbox
Code: Select all | Expand
#INCLUDE "FiveWin.ch"
#include "XBrowse.ch"
DEFINE DIALOG oDlg RESOURCE "BRW_CTACTE" FONT oFontS
CTACTE->(DBGoTop())
select CTACTE
REDEFINE XBROWSE oBrw2 ID 5000 OF oDlg ALIAS "CTACTE" ;
COLUMNS "Voucher","Estado" ;
HEADERS "Voucher","Estado"
if ! Empty( oCol := oBrw2:oCol( "Estado" ) )
oCol:SetCheck({"ON","OFF"})
oCol:cSortOrder:=nil
oBrw2:SetRdd()
Endif
oBrw2:nMarqueeStyle := 5
ACTIVATE DIALOG oDlg CENTERED ON INIT oBrw2:SetRdd()
Re: checkbox en xbrowse
Posted: Mon Dec 23, 2013 3:13 pm
by carlos vargas
Pon el SetRdd inmediatamente despues del REDEFINE por favor
Re: checkbox en xbrowse
Posted: Mon Dec 23, 2013 6:27 pm
by artu01
carlos vargas wrote:Pon el SetRdd inmediatamente despues del REDEFINE por favor
Gracias carlos x tu ayuda pero no funcka
sera x la version fwh que tengo es la 8.11?, compile unos prgs demos de xbrowse que consegui por alli pero igual
me sale .t. ó .f. en la columna de campo logica en vez del cuadradito para hacer un check
Espero que me sigan ayudando
Re: checkbox en xbrowse
Posted: Mon Dec 23, 2013 8:51 pm
by joseluisysturiz
Intenta asi haber
oCol:bStrData:={|| nombre_del_campo con su alias }
y confirma bien si el tipo de campo el logico...deberia funcionarte...saludos...
tambien intenta asi haber que te hace setcheck({"ON","OFF", .t.}, o dejalo solo asi...setcheck()
Re: checkbox en xbrowse
Posted: Mon Dec 23, 2013 9:54 pm
by artu01
joseluisysturiz wrote:Intenta asi haber
oCol:bStrData:={|| nombre_del_campo con su alias }
y confirma bien si el tipo de campo el logico...deberia funcionarte...saludos...
tambien intenta asi haber que te hace setcheck({"ON","OFF", .t.}, o dejalo solo asi...setcheck()
Jose Luis:
he intentado con todas las opciones y no sale el cuadradito sino .t.
Copio parte del xbrowse.prg para saber si es el mismo que Uds. tienen ó sufrio variación (fwh 8.11)
Code: Select all | Expand
METHOD SetCheck( aBmps, bOnPostEdit ) CLASS TXBrwColumn
local nBmpOn, nBmpOff := 0, nBmpNull := 0
local LogiVal := .f.
if Empty( ::nArrayCol )
if ::bEditvalue != nil
LogiVal := ( ValType( Eval( ::bEditvalue ) ) == 'L' )
endif
else
LogiVal := ( ValType( ::oBrw:aArrayData[ 1, ::nArrayCol ] ) == 'L' )
endif
if LogiVal
if If( ".bmp" $ Lower( aBmps[ 1 ] ), ::AddBmpFile ( aBmps[ 1 ] ), ::AddResource( aBmps[ 1 ] ) )
nBmpOn := Len( ::aBitMaps )
if If( ".bmp" $ Lower( aBmps[ 2 ] ), ::AddBmpFile ( aBmps[ 2 ] ), ::AddResource( aBmps[ 2 ] ) )
nBmpOff := Len( ::aBitMaps )
endif
::bBmpData := { | u | If( ( u := Eval( ::bEditValue ) ) == nil, nBmpNull, If( u, nBmpOn, nBmpOff ) ) }
::bStrData := .f.
::hChecked := .t.
if bOnPostEdit != nil
::bOnPostEdit := bOnPostEdit
::nEditType := EDIT_GET
endif
endif
else
MsgStop( "Method Valid only for logical values" )
endif
return nil
el primer parametro de la funcion es un array de bmps, sera que me faltan los bmps?
Re: checkbox en xbrowse
Posted: Tue Dec 24, 2013 9:31 pm
by sysctrl2
Con array a mi me funciona como sigue,
adjunto el exe con todo y codigo,
marca y desmarca con doble clik o barra espaciadora espero te de una LUZ
https://app.box.com/s/riv066zwek9qqkgugx8fsaludos.
Code: Select all | Expand
* manejo de bitmaps con xbrowse
* 24-dic-2013
* by. SysCtrl.
#include "fivewin.ch"
#include "xbrowse.ch"
static oBrw
Function Main()
ScChk():New()
return nil
CLASS ScChk
METHOD New()
METHOD Teclas()
ENDCLASS
METHOD New() CLASS ScChk
local oDlg, oFont
local oBtn
local oBrush
local aData
aData := { {.f.,1,"Cesar Cortes Cruz", 1500.00,600.00}, ;
{.f.,2,"Nombre 2", 1600.00,700.00} }
DEFINE BRUSH oBrush COLOR nRGB( 255, 255, 255 )
DEFINE FONT oFont NAME "TAHOMA" SIZE 5,15
DEFINE DIALOG oDlg SIZE 800,600 PIXEL FONT oFont TRANSPARENT BRUSH oBrush
oDlg:cTitle := "Check xbrw"
@ 10,10 XBROWSE oBrw SIZE -10,-70 PIXEL OF oDlg ;
DATASOURCE aData ;
COLUMNS 1, 2, 3, 4, 5 ;
COLSIZES 90, 150,250,90,90 ;
HEADERS "Select", "Clave","Nombre","Ingreso","Egreso" ;
CELL LINES FOOTERS NOBORDER FASTEDIT
oBrw:bKeyDown := {|nKey| ::Teclas( nKey, @oDlg ) }
oBrw:nMarqueeStyle = MARQSTYLE_HIGHLWIN7
oBrw:nDataLines := 2
oBrw:nStretchCol := STRETCHCOL_LAST
oBrw:nHeaderLines := 2
oBrw:nFooterLines := 2
oBrw:nColSel := 1
WITH OBJECT oBrw:Ingreso
:cEditPicture := "$999,999.99"
END
WITH OBJECT oBrw:aCols[1]
:AddBmpFile( "checkon.BMP")
:AddBmpFile( "checkoff.BMP")
//:AddResource("CHKON")
// :AddResource("CHKOFF")
:bBmpData := {|| IF( oBrw:aArrayData[ oBrw:nArrayAt ][1], 1, 2) }
:bStrData := {|| IF( oBrw:aArrayData[ oBrw:nArrayAt ][1], 'Si', 'No') }
:blDClickData := {|o, v| ( oBrw:aArrayData[ oBrw:nArrayAt ][1] := !oBrw:aArrayData[ oBrw:nArrayAt ][1], oBrw:DrawSelect() ) }
END
WITH OBJECT oBrw
:CreateFromCode()
END
@ 250, 150 BUTTONBMP oBtn1 PROMPT "Aceptar" TEXTRIGHT OF oDlg ;
ACTION ( oDlg:end() ) PIXEL SIZE 100, 30 CANCEL CENTER
oDlg:lhelpicon := .F.
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
RETURN NIL
METHOD Teclas( nKey, oDlg, aData ) CLASS ScChk
if nKey = VK_SPACE //marca o desmarca con la barra espaciadora
if oBrw:aArrayData[oBrw:nArrayAt][1]
oBrw:aArrayData[ oBrw:nArrayAt ][1] := .f.
else
oBrw:aArrayData[ oBrw:nArrayAt ][1] := .t.
endif
oBrw:DrawSelect()
ENDIF
RETURN NIL
Re: checkbox en xbrowse
Posted: Fri Dec 27, 2013 5:15 pm
by artu01
sysctrl2 wrote:Con array a mi me funciona como sigue,
adjunto el exe con todo y codigo,
marca y desmarca con doble clik o barra espaciadora espero te de una LUZ
https://app.box.com/s/riv066zwek9qqkgugx8fsaludos.
Code: Select all | Expand
* manejo de bitmaps con xbrowse
* 24-dic-2013
* by. SysCtrl.
#include "fivewin.ch"
#include "xbrowse.ch"
static oBrw
Function Main()
ScChk():New()
return nil
CLASS ScChk
METHOD New()
METHOD Teclas()
ENDCLASS
METHOD New() CLASS ScChk
local oDlg, oFont
local oBtn
local oBrush
local aData
aData := { {.f.,1,"Cesar Cortes Cruz", 1500.00,600.00}, ;
{.f.,2,"Nombre 2", 1600.00,700.00} }
DEFINE BRUSH oBrush COLOR nRGB( 255, 255, 255 )
DEFINE FONT oFont NAME "TAHOMA" SIZE 5,15
DEFINE DIALOG oDlg SIZE 800,600 PIXEL FONT oFont TRANSPARENT BRUSH oBrush
oDlg:cTitle := "Check xbrw"
@ 10,10 XBROWSE oBrw SIZE -10,-70 PIXEL OF oDlg ;
DATASOURCE aData ;
COLUMNS 1, 2, 3, 4, 5 ;
COLSIZES 90, 150,250,90,90 ;
HEADERS "Select", "Clave","Nombre","Ingreso","Egreso" ;
CELL LINES FOOTERS NOBORDER FASTEDIT
oBrw:bKeyDown := {|nKey| ::Teclas( nKey, @oDlg ) }
oBrw:nMarqueeStyle = MARQSTYLE_HIGHLWIN7
oBrw:nDataLines := 2
oBrw:nStretchCol := STRETCHCOL_LAST
oBrw:nHeaderLines := 2
oBrw:nFooterLines := 2
oBrw:nColSel := 1
WITH OBJECT oBrw:Ingreso
:cEditPicture := "$999,999.99"
END
WITH OBJECT oBrw:aCols[1]
:AddBmpFile( "checkon.BMP")
:AddBmpFile( "checkoff.BMP")
//:AddResource("CHKON")
// :AddResource("CHKOFF")
:bBmpData := {|| IF( oBrw:aArrayData[ oBrw:nArrayAt ][1], 1, 2) }
:bStrData := {|| IF( oBrw:aArrayData[ oBrw:nArrayAt ][1], 'Si', 'No') }
:blDClickData := {|o, v| ( oBrw:aArrayData[ oBrw:nArrayAt ][1] := !oBrw:aArrayData[ oBrw:nArrayAt ][1], oBrw:DrawSelect() ) }
END
WITH OBJECT oBrw
:CreateFromCode()
END
@ 250, 150 BUTTONBMP oBtn1 PROMPT "Aceptar" TEXTRIGHT OF oDlg ;
ACTION ( oDlg:end() ) PIXEL SIZE 100, 30 CANCEL CENTER
oDlg:lhelpicon := .F.
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
RETURN NIL
METHOD Teclas( nKey, oDlg, aData ) CLASS ScChk
if nKey = VK_SPACE //marca o desmarca con la barra espaciadora
if oBrw:aArrayData[oBrw:nArrayAt][1]
oBrw:aArrayData[ oBrw:nArrayAt ][1] := .f.
else
oBrw:aArrayData[ oBrw:nArrayAt ][1] := .t.
endif
oBrw:DrawSelect()
ENDIF
RETURN NIL
Hola gente todavia me pregunto porque no me sale el cuadrado de checkbox en el xbrowse
cesar:
como seria para que tu codigo funcione no con arreglos de data sino con tablas dbf?
gracias por la ayuda!
Re: checkbox en xbrowse
Posted: Fri Dec 27, 2013 6:32 pm
by artu01
Gracias cesar ya funciono
asi lo solucione
Code: Select all | Expand
DEFINE DIALOG oDlg SIZE 1000,500 PIXEL TITLE FWVERSION
@ 0, 1 XBROWSE oLbx OF oDlg ALIAS "activi" SIZE 800, 100 FOOTERS CELL
oLbx:SetRdd()
oLbx:bKeyDown := {|nKey| Teclas( nKey, @oDlg ) }
oLbx:nMarqueeStyle = 5 //MARQSTYLE_HIGHLWIN7
oLbx:nDataLines := 2
oLbx:nStretchCol := STRETCHCOL_LAST
WITH OBJECT oLbx:aCols[3]
:AddBmpFile( "checkon.BMP")
:AddBmpFile( "checkoff.BMP")
:bBmpData := {|| IF( activi->estado, 1, 2) }
:bStrData := {|| IF( activi->estado, 'Si', 'No') }
:blDClickData := {|o, v| ( activi->estado:= !activi->estado, oLbx:DrawSelect() ) }
END
WITH OBJECT oLbx
:CreateFromCode()
END
ACTIVATE DIALOG oDlg
Re: checkbox en xbrowse
Posted: Fri Dec 27, 2013 10:39 pm
by sysctrl2
Sabia que te daria una LUZ,
saludos.