la clase tiene una data que se llama
lDisColors por default esta
activada, cuando la desactivas, los colores del disable se pintan igual que el enable...
yo hice unos cambios a la clase...
le agrege 2 datas nuevas
DATA nClrTextDis, nClrPaneDis
que van a determinar los colores del text y pane cuando esta disable el get, pero tiene que estar desactivada la data lDisColors para que funcione...
en el metodo New y redefine agrege:
::nClrTextDis = nClrFore
::nClrPaneDis = nClrBack
en el metodo paint modifique estas lineas
- Code: Select all Expand view
if ::lDisColors
SetTextColor( ::hDC, GetSysColor( COLOR_GRAYTEXT ) )
SetBkColor( ::hDC, GetSysColor( COLOR_WINDOW ) )
else
SetTextColor( ::hDC, ::nClrText )
SetBkColor( ::hDC, ::nClrPane )
endif
por estas...
- Code: Select all Expand view
if ::lDisColors
SetTextColor( ::hDC, GetSysColor( COLOR_GRAYTEXT ) )
SetBkColor( ::hDC, GetSysColor( COLOR_WINDOW ) )
else
if ValType( ::nClrTextDis ) == "B"
SetTextColor( ::hDC, Eval( ::nClrTextDis ) )
elseif ValType( ::nClrTextDis ) == "N"
if ::nClrTextDis <> 0
SetTextColor( ::hDC, ::nClrTextDis )
else
SetTextColor( ::hDC, ::nClrText )
endif
endif
if ValType( ::nClrPaneDis ) == "B"
SetBkColor( ::hDC, Eval( ::nClrPaneDis ) )
elseif ValType( ::nClrPaneDis ) == "N"
if ::nClrPaneDis <> 0
SetBkColor( ::hDC, ::nClrPaneDis )
else
SetBkColor( ::hDC, ::nClrPane )
endif
endif
endif
ahora puedes hacer uso de esa variables cuando el get esta disable, puedes usar la data tanto como valores numericos ( codigo de colores ) como codeblock
ejemplo
oGet:lDisColors := .f.
oGet:nClrTextDis := CLR_WHITE
oGet:nClrPaneDis := {|| if( empty( aVar[ 2 ] ), CLR_BLUE, CLR_BLACK ) }
recuerda tener desactivado lDisColors