Cambiar Color en los get's activos

Post Reply
Mike Serra
Posts: 287
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Cambiar Color en los get's activos

Post 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.
horacio
Posts: 1270
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Post 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
Mike Serra
Posts: 287
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Post by Mike Serra »

Muchas Gracias, funcionó perfecto y no tenía tantas líneas como antes.
manuramos
Posts: 219
Joined: Mon Dec 26, 2005 7:25 pm
Location: Jerez de la Frontera (Spain)

Post 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...
Nos Gusta Programar
Post Reply