cambio de color en los controles deshabilitados

Post Reply
miarcod
Posts: 172
Joined: Tue Oct 11, 2005 2:17 pm

cambio de color en los controles deshabilitados

Post 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


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


 
miarcod
Posts: 172
Joined: Tue Oct 11, 2005 2:17 pm

Re: cambio de color en los controles deshabilitados

Post by miarcod »

Hola Antonio:

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

Alguna ayuda...
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: cambio de color en los controles deshabilitados

Post 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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply