Cambiar color al Get Deshabilitado
Cambiar color al Get Deshabilitado
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 ...
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 ...
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Lubin,
Hay que modificar la clase TGet así:
De todas formas estamos mejorando ese código para que respecte la alineación es delos estilos ES_CENTER y ES_RIGHT.
Hay que modificar la clase TGet así:
Code: Select all
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
...
Consulta adicional del color del Get Inhabilitado
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
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í:
De todas formas estamos mejorando ese código para que respecte la alineación es delos estilos ES_CENTER y ES_RIGHT.Code: Select all
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 ...
Re: Consulta adicional del color del Get Inhabilitado
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
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í:
De todas formas estamos mejorando ese código para que respecte la alineación es delos estilos ES_CENTER y ES_RIGHT.Code: Select all
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 ...
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
El código final ha quedado así:
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.
Code: Select all
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
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
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í:
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.Code: Select all
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
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
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
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
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
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
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.
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.