Page 1 of 1

Cambiar Color en los get's activos

Posted: Fri Dec 15, 2006 10:40 am
by Mike Serra
Buenos días foro:

Os comento una cosilla que para muchos creo que será facil. En las antiguas aplicaciones en FW 2.4 tenía que cuando obtenía el foco un get se cambiaba el color, estoy intentando hacer lo mismo con fw 2.8 pero no se si tengo que cambiar las clases tget y tsget, como lo tenía hecho en 2.4 y no se si son en los métodos initiate, . . . , si me comentais una hoja de ruta a seguir, mejor que mejor.

MUCHAS GRACIAS de ANTEMANO.

Posted: Fri Dec 15, 2006 12:49 pm
by horacio
hola

Para cambiar el color de los gets cuando está en foco oGet : bGotFocus := { || oGet : SetColor( 0, GetSysColor( 15 ) } y fuera de foco oGet : bLostFocus := { || oGet : SetColor( 0, CLR_WHITE }. Si querés que esto siempre suceda tendrás que modificar la clase tget y poner estas mismas variables en los métodos New y Redefine. Espero te sirva.
Saludos

Posted: Fri Dec 15, 2006 4:37 pm
by Mike Serra
Muchas Gracias, funcionó perfecto y no tenía tantas líneas como antes.

Posted: Sat Dec 16, 2006 10:01 am
by manuramos
Eso supone hipotecar las funciones de bGotFocus y bLostFocus. Si estás dispuesto a modificar la clase GET puedes hacerlo permanente sin recurrir a esos codeblocks que algún día los vas a necesitar y ya los tendras utilizados con esto del color.

Esto es lo que yo utilizo:

Nuevos datas:
DATA nClrFore,nClrBack // Colores con Gets sin foco (colores del sistema)
DATA nClrGFore,nClrGBack // Colores para Gets con foco

Nuevo método INITIATE:
METHOD Initiate( hDlg ) CLASS TUCLASE
Super:Initiate( hDlg )
::nClrFore := ::nClrText // toma colores del sistema
::nClrBack := ::nClrPane
RETURN NIL

Nuevo método GOTFOCUS:
METHOD GotFocus( hCtlLost ) CLASS TUCLASE
IF ::nClrGFore # NIL
::SetColor(::nClrGFore,::nClrGBack) // activa colores Gets con foco
ENDIF
RETURN Super:GotFocus( hCtlLost )

Nuevo método LOSTFOCUS:
METHOD LostFocus( hCtlFocus ) CLASS TUCLASE
LOCAL xRet := Super:LostFocus( hCtlFocus )
IF ::nClrGFore # NIL
::SetColor(::nClrFore,::nClrBack) // activa colores Gets sin foco
ENDIF
RETURN xRet

Ésto si haz creado tu propia clase heredada, sinó, sólo copia las lineas resaltadas referentes a los colores (en GotFocus: al rpincipio; en Initiate y LostFocus: al final, tras lo ya existente, para asegurar).

Parece mucho, pero no lo es, si copias lo aquí escrito y lo pegas en tu clase Get es muy rápido.

Suerte...