Page 1 of 1

cambio de color en los controles deshabilitados

PostPosted: Thu Mar 05, 2009 2:46 pm
by miarcod
Hola:
Para que los gets no aparezcan difuminados cuando se encuentran deshabilitados uso la clausula lDisColors del get. He intentando implementar este comportamiento en otros controles como son el Get Multilínea pero no lo consigo

Lo que he hecho es redefinir el metodo Paint() y agregarle el código del get pero no hace lo que debería. Seguramente habrá que hacer mas cambios pero no se por donde comenzar.

En realidad me gustaría que este comportamiento se pudiera aplicar también a los controles combobox, checkbox, etc.

Un saludo

Code: Select all  Expand view


METHOD Paint() CLASS TMultiGet

   local aInfo := ::DispBegin()

   if ::oBrush != nil
      FillRect( ::hDC, GetClientRect( ::hWnd ), ::oBrush:hBrush )
   else
      CallWindowProc( ::nOldProc, ::hWnd, WM_ERASEBKGND, ::hDC, 0 )
   endif

      if ::lDisColors
         SetTextColor( ::hDC, GetSysColor( COLOR_GRAYTEXT ) )
         SetBkColor( ::hDC, GetSysColor( COLOR_WINDOW ) )
      else
         SetTextColor( ::hDC, ::nClrText )
         SetBkColor( ::hDC, ::nClrPane )
      endif

   CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )

   if ValType( ::bPainted ) == "B"
      Eval( ::bPainted, ::hDC, ::cPS, Self )
   endif

   ::DispEnd( aInfo )

return 1


 

Re: cambio de color en los controles deshabilitados

PostPosted: Tue Mar 10, 2009 4:57 pm
by miarcod
Hola Antonio:

¿Existe alguna posibilidad para realizar lo que pretendo?
o es muy compleja la modificación.

Alguna ayuda...

Re: cambio de color en los controles deshabilitados

PostPosted: Thu Mar 26, 2009 5:36 pm
by Antonio Linares
Desde METHOD Colors( hDC ) CLASS TControl se pueden cambiar los colores antes de que el control vaya a ser pintado.

Podrias redefinir ese metodo en las clases que desees y ver si desde ese metodo, en las clases que pruebes, te permite cambiar los colores como quieres.

Revisa el codigo fuente de METHOD Colors( hDC ) CLASS TControl, e implementa METHOD Colors( hDC ) CLASS TMultiGet y comprueba si desde ahi te permite cambiar los colores estandard que el usa.