en un browse, tengo una columna que muestra unos checkbox y otra columna que muestra unas imagenes, el caso es que si pongo la data
oBrw:lGDIP := .t., las imagenes se muestra muy bien, trasparencia y alpha chanel dado que usa gdip para dibujar la image, pero los chekbox se muestran un poco distorcionados, si oBrw:lGDIP := .f. es inverso, los checkbox muy bien, pero la imagen distorcionada, por ello intente poder asignar el lGDIP a cada columna para poder usarlo segun convenga, para esto agregue la data lGDIP a la clase TXBrwColumn con valor inicial a Nil, y
modifique el metodo PaintCellImage, pero segun veo ese metodo no es llamado, bajo nunca.


Code: Select all | Expand
WITH OBJECT oBrw
:lGDIP := FALSE
...
:aCols[ 07 ]:SetCheck( { "BMS_CHECKON2", "BMS_CHECKOFF2" } )
:aCols[ 09 ]:nHeadStrAlign := AL_CENTER
:aCols[ 09 ]:AddResource( "PNG_STAR1" )
:aCols[ 09 ]:AddResource( "PNG_STAR2" )
:aCols[ 09 ]:AddResource( "PNG_STAR3" )
:aCols[ 09 ]:bStrData := ""
:aCols[ 09 ]:bBmpData := {|uVal,lSel,oCol| Clie_StarCount( uVal ) }
:aCols[ 09 ]:lGDIP := TRUE
Code: Select all | Expand
CLASS TXBrwColumn
...
DATA lGDIP
...
METHOD PaintCellImage( cImageData, oRect ) CLASS TXBrwColumn
local aBmpPal, aRect, ResizeMode, aImgRect
local lGDIP
aRect := oRect:aRect
if ::aImgRect == nil
ResizeMode := ::lBmpStretch
else
aImgRect := XEval( ::aImgRect, Self )
if ValType( aImgRect ) $ 'CN'
ResizeMode := aImgRect
elseif ValType( aImgRect ) == 'A'
if Len( aImgRect ) > 4
ResizeMode := aImgRect[ 5 ]
else
ASize( aImgRect, 4 )
endif
aRect := oRect:Modify( aImgRect, .t. ):aRect
endif
ENDIF
lGDIP := iif( ::lGDIP, ::oBrw:lGDIP, ::lGDIP )
//aBmpPal := ::oBrw:ReadImage( cImageData,, ::oBrw:lGDIP )
aBmpPal := ::oBrw:ReadImage( cImageData,, lGDIP )
if !Empty( aBmpPal ) .and. !Empty( aBmpPal[ 1 ] )
::oBrw:DrawImage( aBmpPal, aRect, ;
::lBmpTransparent, ResizeMode, ::nAlphaLevel(), .f., ::cAlign( ::nDataBmpAlign ) )
PalBmpFree( aBmpPal[ 1 ], aBmpPal[ 2 ] )
endif
aBmpPal := nil
return nil