Page 1 of 1

Color de un oGet

Posted: Thu Jan 05, 2006 7:40 pm
by servicomver
En un oDlg tengo un dbcombo el cual al tener el foco el color es: fondo amarillo y letras negras, al perder el foco cambia a su color normal osea letras negras con fondo blanco, mi pregunta es la siguiente:
como puedo hacer (por comando) que un oGet cambie de color de igual forma, es decir al tener el foco sea tambien letras negras fondo amarillo y al perderlo cambie tambien a letras negras fondo blanco, esto es debido que en la pantalla de captura se tienen muchos oGets y el Usuario luego no distingue donde va la captura o en que parte esta el cursor de la pantalla (tomando en cuenta que son personas mayores y realmente no ven muy bien) por eso surgio la duda, agradezco mucho sus atenciones, saludos
servicomver@hotmail.com
veracruz, mexico

Posted: Thu Jan 05, 2006 7:53 pm
by Antonio Linares
oGet:bGotFocus = { || oGet:SetColor( ..., ... ) }

oGet:bLostFocus = { || oGet:SetColor( ..., ... ) }

Re: Color de un oGet

Posted: Fri Jan 06, 2006 4:50 pm
by lubin
Buen dia.

Con el permiso de Antonio, Me gustaria comentarte, que tuve la misma necesidad el año pasado y en la anterior NEWs me pasaron este dato:

modificar la clase Tget : en el Metodo GotFocus() cambiar al final del metodo en setcolor()

esto me ha funcionado muy bien y la ventaja que este efecto se aplica a todo tu programa, y no es necesario hacerlo para cada get

me gustariia que el estimado Antonio nos pueda convalidar este procedimiento ....

aqui te mando una copia de ese metodo del tGet modificado, la linea de rojo es lo que se ha modificado.... esta al final...

METHOD GotFocus() CLASS TGet

if ! Empty( ::cPicture ) .and. ::oGet:type == "N"
::oGet:Picture := StrTran( ::cPicture, ",", "" )
endif

if ! ::lDrag
::oGet:KillFocus() // to properly initialize internal status
::oGet:SetFocus()
::DispText()
if ::oGet:type$"DN"
::nPos := 1
endif
::oGet:Pos = ::nPos
::SetPos( ::nPos )
CallWindowProc( ::nOldProc, ::hWnd, WM_SETFOCUS )
if Set( _SET_INSERT )
DestroyCaret()
CreateCaret( ::hWnd, 0, 6, ::nGetChrHeight() )
ShowCaret( ::hWnd )
endif
else
HideCaret( ::hWnd )
endif

Super:GotFocus()
::setcolor(nRGB(0,0,0),nRGB( 231,226,141)) // cuando toma el foco pone el fondo amarillo
return 0