Page 1 of 1

Para Antonio Linares..

Posted: Fri Sep 21, 2007 12:50 am
by un_jeepero
Hola Antonio, no queria molestarlo con este problema. Pero llevo tiempo con esto y no logro encontrar una solución o al menos saber si se puede o no para no seguir intentandole jajaja.

Estoy utilizando TXbrowse con arrays y necesito poner un Bitmap que cambie de estado, solo me funciona al trabajar directo desde la dbf.... como en el ejemplo adjunto.

Directo de la DBF, Funciona correctamente.

::oBrw := TXBrowse():New( ::oWnd )
::oBrw:cAlias := DBF_GIRBAN:cAlias
::oCol := Array( 01 )
::oCol[01] := ::oBrw:AddCol()
::oCol[01]:cHeader := "Conciliado"
::oCol[01]:AddResource( "CHECK_SI" )
::oCol[01]:AddResource( "CHECK_NO" )
::oCol[01]:bBmpData := { || IF( DBF_GIRBAN:ESTGIR == .T. , 1, 2) }
::oCol[01]:BStrData := { || "" }
::oCol[01]:nWidth := 60
::oBrw:CreateFromCode()
....
....
Desde un Array, NO muestra el BMP

WITH OBJECT ::oBrw
:SetArray( AR_DATOS, .T. )
WITH OBJECT :aCols[ ESTADO ]
:cHeader := "Conciliado"
:AddResource( "CHECK_SI" )
:AddResource( "CHECK_NO" )
:bBmpData := { || IF(Len(AR_DATOS) >0, (IF ( AR_DATOS[::oBrw:nArrayAt][ESTGIR] == .T. , 1, 2) ), NIL) }
:bStrData := { || ""}
:nWidth := 40
END
END
...
...
muchas gracias

Salu2

Mauro

Posted: Fri Sep 21, 2007 7:32 am
by Antonio Linares
Prueba con una expresión más simple para asegurarte:

:bBmpData := { || IF( ::oBrw:nArrayAt == 1, 1, 2 ) }

Posted: Fri Sep 21, 2007 1:43 pm
by un_jeepero
Antonio, primero muchas gracias por responder..
He probado de varias formas incluso como me indicas e igual no funciona.
:bBmpData := { || IF( ::oBrw:nArrayAt == 1, 1, 2 ) }

Talves TXBrowse no permite el uso de Bmp al utilizar arrays de datos??
alguien lo habra utilizado de esta forma??

sigo en espera de alguna otra solución...

salu2

Mauro

Posted: Tue Oct 30, 2007 6:55 pm
by Rafael Clemente
Mauro:
Yo tenía el mismo problema. Prueba esto:

Code: Select all

etc .................
       oBrw:aCols[i]:AddResource("MARCA_ON")
       oBrw:aCols[i]:AddResource("MARCA_OFF")
       oBrw:aCols[i]:bBmpData      := { || FnMarca(oBrw, i) }
       oBrw:aCols[i]:nHeadBmpNo    := 3
       oBrw:aCols[i]:nHeadBmpAlign := AL_LEFT
       oBrw:aCols[i]:cHeader       := ""
etc ..............

// --------------------------------------------------------
Static Function FnMarca(oBrw, i)
Local n := oBrw:nArrayAt
Local nBmp
If oBrw:aArrayData[n, 3] = "S"   // mi tercera columna es el CheckOn/Check Off
    nBmp := 3      // Parece que los resursos 1 y 2 son los indicadores de sort up/down
Else
    nBmp := 4
Endif
Return nBmp
A mí me funciona. Suerte!
Rafael

Posted: Wed Oct 31, 2007 1:03 am
by un_jeepero
Rafael, te pasaste por la información funciono perfecto solo me faltaba cambiar 3, 4 los indicadores.

WITH OBJECT :aCols[ESTADO]
:AddResource( "CHECK_ON" )
:AddResource( "CHECK_OFF" )
:bBmpData := { || IF( AR_MES[::oBrw:nArrayAt][ESTADO ] == .T., 3, 4) }
END
tenia mucho tiempo con esta cosa, super agradecido con tu información

salu2

Mauro