Puedes modificar el M茅todo AEvalWhen() en la Clase TWindow de esta forma:
METHOD AEvalWhen() CLASS TWindow
local oControl, aControls := ::aControls
if aControls != nil .and. ! Empty( aControls )
for each oControl in aControls
if oControl != nil .and. __objHasMsg( oControl, "bWhen" ) .and. oControl:bWhen != nil
if Eval( oControl:bWhen )
oControl:Enable()
else
oControl:Disable()
// Modificaci贸n para cambiar el color de los GETs deshabilitados por WHEN .F.
if oControl:ClassName() == "TGET"
if oControl:lDisColors
oControl:lDisColors := .F.
oControl:nClrTextDis := nRGB( 128, 128, 128 ) // Color de texto (ej. gris oscuro)
oControl:nClrPaneDis := nRGB( 245, 245, 245 ) // Color de fondo (ej. gris muy claro)
endif
endif
endif
endif
if oControl != nil
if oControl:ClassName $ "TFOLDER,TFOLDEREX,TPAGES"
if ! Empty( oControl:aDialogs ) .and. oControl:nOption > 0 .and. ;
oControl:nOption <= Len( oControl:aDialogs ) .and. ;
oControl:aDialogs[ oControl:nOption ] != nil
oControl:aDialogs[ oControl:nOption ]:AEvalWhen()
endif
elseif !Empty( oControl:aControls )
oControl:AEvalWhen()
endif
endif
next oControl
endif
return nil
El color que desees lo estableces en estas dos lineas en ese c贸digo:
oControl:nClrTextDis := nRGB( 128, 128, 128 ) // Color de texto (ej. gris oscuro)
oControl:nClrPaneDis := nRGB( 245, 245, 245 ) // Color de fondo (ej. gris muy claro)
Si prefieres no modificar la Clase TWindow, puedes hacerlo asi desde tu app:
#include "FiveWin.ch"
#ifndef __XHARBOUR__
#include "hbclass.ch"
#endif
function Main()
// Anular din谩micamente el m茅todo original de TWindow
#ifndef __XHARBOUR__
OVERRIDE METHOD AEvalWhen CLASS TWindow WITH MyAEvalWhen
#else
EXTEND CLASS TWindow WITH METHOD AEvalWhen AS MyAEvalWhen
#endif
// ... el resto de tu c贸digo Main ...
return nil
// Nueva funci贸n que reemplaza el comportamiento del m茅todo original
function MyAEvalWhen()
local Self := hb_QSelf()
local oControl, aControls := ::aControls
if aControls != nil .and. ! Empty( aControls )
for each oControl in aControls
if oControl != nil .and. __objHasMsg( oControl, "bWhen" ) .and. oControl:bWhen != nil
if Eval( oControl:bWhen )
oControl:Enable()
else
oControl:Disable()
if oControl:ClassName() == "TGET"
if oControl:lDisColors
oControl:lDisColors := .F.
oControl:nClrTextDis := CLR_HRED // Ejemplo: Texto en Rojo Intenso
oControl:nClrPaneDis := CLR_YELLOW // Ejemplo: Fondo Amarillo
endif
endif
endif
endif
if oControl != nil
if oControl:ClassName $ "TFOLDER,TFOLDEREX,TPAGES"
if ! Empty( oControl:aDialogs ) .and. oControl:nOption > 0 .and. ;
oControl:nOption <= Len( oControl:aDialogs ) .and. ;
oControl:aDialogs[ oControl:nOption ] != nil
oControl:aDialogs[ oControl:nOption ]:AEvalWhen()
endif
elseif !Empty( oControl:aControls )
oControl:AEvalWhen()
endif
endif
next oControl
endif
return nil