FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para CA-Clipper Cambiar color al Get Deshabilitado
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
Cambiar color al Get Deshabilitado
Posted: Mon Dec 19, 2005 04: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 ...

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Cambiar color al Get Deshabilitado
Posted: Thu Dec 22, 2005 07:29 AM
Lubin,

Hay que modificar la clase TGet as铆:

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
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
Consulta adicional del color del Get Inhabilitado
Posted: Thu Dec 22, 2005 02: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铆:

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.
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
Re: Consulta adicional del color del Get Inhabilitado
Posted: Tue Dec 27, 2005 04: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铆:

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.
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Cambiar color al Get Deshabilitado
Posted: Tue Dec 27, 2005 08:39 AM
El c贸digo final ha quedado as铆:

   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
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
Cambiar color al Get Deshabilitado
Posted: Fri Jan 06, 2006 05: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铆:

   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.
Posts: 219
Joined: Mon Dec 26, 2005 07:25 PM
Cambiar color al Get Deshabilitado
Posted: Fri Jan 06, 2006 07: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
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
Cambiar color al Get Deshabilitado
Posted: Mon Jan 09, 2006 02: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() 贸 :-)isable(), 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
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Cambiar color al Get Deshabilitado
Posted: Mon Jan 09, 2006 09: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

Continue the discussion