Cambiar color al Get Deshabilitado

Cambiar color al Get Deshabilitado

Postby lubin » Mon Dec 19, 2005 4:25 pm

Buenos dias:
Una consulta rapida, como sabemos, cuando un get esta deshabilitado por ejemplo con la clausula WHEN... se muestra de color plomo, hay forma de cambiar el color por ejemplo a marron.. pero en todo en forma global ?? quizas sera cambiando la clase Gets,,?? lo estuve buscando pero no lo ubique...

Gracias por sus respuestas.

Lubin

Pdta.. aprovechando el momento para desear a todos una feliz navidad y un venturoso año 2006 en union de todos sus seres queridos... desde aqui Lima Peru ... a todo el Planeta ...
User avatar
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Postby Antonio Linares » Thu Dec 22, 2005 7:29 am

Lubin,

Hay que modificar la clase TGet así:

Code: Select all  Expand view
METHOD Paint() CLASS TGet

   ...

   if IsWindowEnabled( ::hWnd )
      CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
   else
      SetTextColor( ::hDC, ::nClrText )
      SetBkColor( ::hDC, ::nClrPane )
      hOldFont = SelectObject( ::hDC, ::oFont:hFont )
      ExtTextOut( ::hDC, 0, 0,;
                  { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
      SelectObject( ::hDC, hOldFont )           
   endif               

   ...


De todas formas estamos mejorando ese código para que respecte la alineación es delos estilos ES_CENTER y ES_RIGHT.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Consulta adicional del color del Get Inhabilitado

Postby lubin » Thu Dec 22, 2005 2:11 pm

Gracias por tu respuesta Antonio, solo para aclarar, el concepto

Este metodo que me envias lo debo de agregar a la clase get ??, y de esta manera podre cambiar el Color cuando el GET esta deshabilitado?? cual seria la manera de hacerlo para cambiarlo para un color determinado???


Gracias por tu atencion a mi consulta
Lubin




Antonio Linares wrote:Lubin,

Hay que modificar la clase TGet así:

Code: Select all  Expand view
METHOD Paint() CLASS TGet

   ...

   if IsWindowEnabled( ::hWnd )
      CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
   else
      SetTextColor( ::hDC, ::nClrText )
      SetBkColor( ::hDC, ::nClrPane )
      hOldFont = SelectObject( ::hDC, ::oFont:hFont )
      ExtTextOut( ::hDC, 0, 0,;
                  { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
      SelectObject( ::hDC, hOldFont )           
   endif               

   ...


De todas formas estamos mejorando ese código para que respecte la alineación es delos estilos ES_CENTER y ES_RIGHT.
User avatar
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: Consulta adicional del color del Get Inhabilitado

Postby lubin » Tue Dec 27, 2005 4:53 am

Mi estimado Antonio,
te agradeceria aclarar esta ultima consulta si no es molestia , respecto al color de Get Deshabilitado, desearia que tengas en cuenta que el cambio de color desearia hacerlo con un solo ajuste de parametros para todo el sistema.

Mil Gracias

Lubin


lubin wrote:Gracias por tu respuesta Antonio, solo para aclarar, el concepto

Este metodo que me envias lo debo de agregar a la clase get ??, y de esta manera podre cambiar el Color cuando el GET esta deshabilitado?? cual seria la manera de hacerlo para cambiarlo para un color determinado???


Gracias por tu atencion a mi consulta
Lubin




Antonio Linares wrote:Lubin,

Hay que modificar la clase TGet así:

Code: Select all  Expand view
METHOD Paint() CLASS TGet

   ...

   if IsWindowEnabled( ::hWnd )
      CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
   else
      SetTextColor( ::hDC, ::nClrText )
      SetBkColor( ::hDC, ::nClrPane )
      hOldFont = SelectObject( ::hDC, ::oFont:hFont )
      ExtTextOut( ::hDC, 0, 0,;
                  { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
      SelectObject( ::hDC, hOldFont )           
   endif               

   ...


De todas formas estamos mejorando ese código para que respecte la alineación es delos estilos ES_CENTER y ES_RIGHT.
User avatar
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Postby Antonio Linares » Tue Dec 27, 2005 8:39 am

El código final ha quedado así:

Code: Select all  Expand view
   if IsWindowEnabled( ::hWnd )
      CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
   else
      SetTextColor( ::hDC, ::nClrText )
      SetBkColor( ::hDC, ::nClrPane )
      hOldFont = SelectObject( ::hDC, ::oFont:hFont )
     
      do case
         case lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), ES_CENTER )
              SetTextAlign( ::hDC, TA_CENTER )
              ExtTextOut( ::hDC, 0, ::nWidth() / 2,;
                { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
             
         case lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), ES_RIGHT )
              SetTextAlign( ::hDC, TA_RIGHT )
              ExtTextOut( ::hDC, 0, ::nWidth() - 4,;
                { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
             
         otherwise
              SetTextAlign( ::hDC, TA_LEFT )
              ExtTextOut( ::hDC, 0, 0,;
                { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
      endcase

      SelectObject( ::hDC, hOldFont )           
   endif               


El color lo estableces con la cláusula COLOR ..., ... para cada GET, ó en ese código cambias ::nClrText y ::nClrPane por los colores que quieras y todos los GETs deshabilitados se verán del mismo color.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby lubin » Fri Jan 06, 2006 5:03 pm

Buenos Dias Antonio, antes que nada un feliz Año 2006, que todos los planes se cumplan

Desearia retomar el tema, pues te comentare que intenten cambiar o agregar esto en mi clase tget y resulta que no tengo ningun metodo Paint() en mi version.

Mis consultas :
1. Que debo hacer ?? (intente agregarla y me salio error al compilarla
2. Como debo agregarla y en que -Prg ??
l3. uego ,,, como cambiaria el color de ::nClrText y ::nClrPane para que los gets deshabilitados queden con letras rojas y fondo blanco, me muestras un ejemplo por favor ??

uso : Clipper 5.2
Fivewin 2.3
blinker 4.0


Muchas gracias

lubin



Antonio Linares wrote:El código final ha quedado así:

Code: Select all  Expand view
   if IsWindowEnabled( ::hWnd )
      CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )
   else
      SetTextColor( ::hDC, ::nClrText )
      SetBkColor( ::hDC, ::nClrPane )
      hOldFont = SelectObject( ::hDC, ::oFont:hFont )
     
      do case
         case lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), ES_CENTER )
              SetTextAlign( ::hDC, TA_CENTER )
              ExtTextOut( ::hDC, 0, ::nWidth() / 2,;
                { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
             
         case lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), ES_RIGHT )
              SetTextAlign( ::hDC, TA_RIGHT )
              ExtTextOut( ::hDC, 0, ::nWidth() - 4,;
                { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
             
         otherwise
              SetTextAlign( ::hDC, TA_LEFT )
              ExtTextOut( ::hDC, 0, 0,;
                { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
      endcase

      SelectObject( ::hDC, hOldFont )           
   endif               


El color lo estableces con la cláusula COLOR ..., ... para cada GET, ó en ese código cambias ::nClrText y ::nClrPane por los colores que quieras y todos los GETs deshabilitados se verán del mismo color.
User avatar
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Postby manuramos » Fri Jan 06, 2006 7:10 pm

Por si te sirve de algo, yo he empleado otra solución. (con fw2.3)

Lo que hago es que no utilizo :Enable() ó :Disable(), tan sólo el :lReadOnly. Es decir, la condición de validación no la pongo en el WHEN directamente. UN EJEMPLO

REDEFINE GET oGet VAR oSay ...... WHEN MiFuncVal(oGet,...)

FUNCTION MiFuncVal(oGet,...)
...
IF <CondicionValidez>
oGet[1]:SetColor(ColorTxt_Valido,ColorBack_Valido)
oGet[1]:lReadOnly := .T. <---- Similar a Enable()
oGet[1]:DispText()
ELSE
oGet[1]:SetColor(ColorTxt_NOValido,ColorBack_NOValido)
oGet[1]:lReadOnly := .F. <----- Similar a Disable()
oGet[1]:DispText()
ENDIF
...
IF ...
...
ENDIF
...
RETURN .T. <--- Si debes evaluar condiciones adicionales devuelve .T. o .F. según te convenga

A mi me ha ido muy bien
Nos Gusta Programar
manuramos
 
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Postby lubin » Mon Jan 09, 2006 2:52 am

Gracias por el Comentario,

Es otro metodo efectivamente e interesante por cierto, Pero mi objetivo es cambiar de color a todos los Gets DESHABILITADOS de mi Sistema en forma Global, sin tener que hacerlo por cada Get , espero entiendan mi consulta.


Lubin


manuramos wrote:Por si te sirve de algo, yo he empleado otra solución. (con fw2.3)

Lo que hago es que no utilizo :Enable() ó :Disable(), tan sólo el :lReadOnly. Es decir, la condición de validación no la pongo en el WHEN directamente. UN EJEMPLO

REDEFINE GET oGet VAR oSay ...... WHEN MiFuncVal(oGet,...)

FUNCTION MiFuncVal(oGet,...)
...
IF <CondicionValidez>
oGet[1]:SetColor(ColorTxt_Valido,ColorBack_Valido)
oGet[1]:lReadOnly := .T. <---- Similar a Enable()
oGet[1]:DispText()
ELSE
oGet[1]:SetColor(ColorTxt_NOValido,ColorBack_NOValido)
oGet[1]:lReadOnly := .F. <----- Similar a Disable()
oGet[1]:DispText()
ENDIF
...
IF ...
...
ENDIF
...
RETURN .T. <--- Si debes evaluar condiciones adicionales devuelve .T. o .F. según te convenga

A mi me ha ido muy bien
User avatar
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Postby Antonio Linares » Mon Jan 09, 2006 9:15 am

Lubin,

Finalmente hemos implementado una nueva DATA lDisColors que por defecto es .t. para que se vea estandard por defecto.

Cambiando esa DATA a .f. entonces se usa el color que le hayas dado al GET con la claúsula COLOR.

De todas formas, puedes modificar la clase TGet para que use de forma automática el color que quieras, sin tener que programar nada.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42080
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 15 guests