Page 1 of 1
como poner color al GET que esta en foco?
Posted: Thu Mar 02, 2006 2:00 pm
by lafug
Amigos :
Como puedo colorear el GET que esta en foco? con FWH2.7 /xHarbour
DE ANTEMANO
MUCHAS GRACIAS
SALUDOS Y xHabrazos
Posted: Thu Mar 02, 2006 3:28 pm
by Vladimir Zorrilla
Local nAt := AScan( oForm:aControls, { | oCtrl | oCtrl:lFocused } )
oForm:aControls[N]:SetColor( 0,255 )
Saludos
Posted: Thu Mar 02, 2006 3:30 pm
by Vladimir Zorrilla
Correccion
Local nAt := AScan( oForm:aControls, { | oCtrl | oCtrl:lFocused } )
oForm:aControls[nAt]:SetColor( 0,255 )
Saludos
Posted: Thu Mar 02, 2006 4:29 pm
by R.F.
lo que hacemos la mayoria es toquetear un poco la data bGotFocus y bLostFocus de la clase TGET
Basicamente abres el TGET.PRG, localizas los metodos constructores NEW y REDEFINE y les agregas estas 2 lineas al final del metodo:
::bGotFocus := {|| ::SetColor(<colortexto>,<colorfondo>)}
::bLostFocus := {|| ::SetColor(0,RGB(255,255,255))}
Luego agregas el TGET.PRG modificado a tu lista de PRGs y todo listo.
Posted: Thu Mar 02, 2006 7:50 pm
by lafug
GRACIAS AMIGOS POR SUS RESPUESTAS
FUNCIONÓ PERFECTO
SALUDOS
XHABRAZOS
Posted: Thu Mar 02, 2006 9:12 pm
by manuramos
El problema Luis es que ocupas bGotFocus y bLostFocus y ya no los puedes utizar para otra cosa. Si quieres, yo lo he solucionado de la siguiente forma:
Primero hay que definir cuatro Datas
DATA nClrFore,nClrBack
DATA nClrGFore,nClrGBack // Tu los puedes llamar como quieras
Después modificas ligeramente algunos métodos:
METHOD Initiate( hDlg ) CLASS ...
*
Super:Initiate( hDlg )
*
::nClrFore := ::nClrText
::nClrBack := ::nClrPane
...
RETURN NIL
METHOD GotFocus( hCtlLost ) CLASS ...
...
IF ::nClrGFore # NIL
::SetColor(::nClrGFore,::nClrGBack)
ENDIF
...
METHOD LostFocus( hCtlFocus ) CLASS ...
...
IF ::nClrGFore # NIL
::SetColor(::nClrFore,::nClrBack)
ENDIF
...
Y nada más. La ventaja está en que conservas los colores originales y que puedes definir los del foco desde tu programa
REDEFINE oGet .......
oGet:nClrFore := <colortexto>
oGet:nClrBack := <colorfondo>
Y además, sigues teniendo bGotFocus y bLostFocus libres para lo que necesites.
Un saludo
Posted: Thu Mar 02, 2006 9:42 pm
by carlos vargas
En mi caso
Agrego esto al include de mi aplicacion. Ej( miapp.ch )
Code: Select all
#define CLR_PIEL1 RGB(216,185,165)
#define CLR_PIEL2 RGB(192,192,192)
#define CLR_MENTA1 RGB(175,255,215)
#define CLR_MENTA2 RGB(221,255,238)
#define CLR_DISABLE RGB(255,255,217)
#define CLR_AMARILLO1 RGB(255,251,225)
#define CLR_BLUE1 RGB(231,220,228)
#define CLR_CAFE RGB(128,064,000)
#xcommand REDEFINE GET [ <oGet> VAR ] <uVar> ;
[ ID <nId> ] ;
[ <dlg: OF, WINDOW, DIALOG> <oDlg> ] ;
[ <help:HELPID, HELP ID> <nHelpId> ] ;
[ VALID <ValidFunc> ] ;
[ PICTURE <cPict> ] ;
[ <color:COLOR,COLORS> <nClrFore> [,<nClrBack>] ] ;
[ FONT <oFont> ] ;
[ CURSOR <oCursor> ] ;
[ MESSAGE <cMsg> ] ;
[ <update: UPDATE> ] ;
[ WHEN <uWhen> ] ;
[ ON CHANGE <uChange> ] ;
[ <readonly: READONLY, NO MODIFY> ] ;
[ <spin: SPINNER> [ON UP <SpnUp>] [ON DOWN <SpnDn>] [MIN <Min>] [MAX <Max>] ] ;
=> ;
[ <oGet> := ] KTGet():ReDefine( <nId>, bSETGET(<uVar>), <oDlg>,;
<nHelpId>, <cPict>, <{ValidFunc}>, <nClrFore>, <nClrBack>,;
<oFont>, <oCursor>, <cMsg>, <.update.>, <{uWhen}>,;
[ \{|nKey,nFlags,Self| <uChange> \}], <.readonly.>,;
<.spin.>, <{SpnUp}>, <{SpnDn}>, <{Min}>, <{Max}>)
Agrego este codigo a un prg. ej:( myget.prg)
Code: Select all
#include "fivewin.ch"
#include "miapp.ch"
CREATE CLASS KTGet FROM TGet
DATA nClrForeFocus INIT CLR_BLACK
DATA nClrBackFocus INIT CLR_PIEL1
DATA nOldClrFore
DATA nOldClrBack
METHOD GotFocus()
METHOD LostFocus( hCtlFocus)
METHOD Paint()
ENDCLASS
METHOD GotFocus() CLASS KTGet
IF ::nClrForeFocus != NIL .and. ::nClrBackFocus != NIL
::nOldClrFore := ::nClrText
::nOldClrBack := ::nClrPane
::SetColor( ::nClrForeFocus, ::nClrBackFocus )
ENDIF
RETURN Super:GotFocus()
METHOD LostFocus( hCtlFocus ) CLASS KTGet
::bWhen := iif( ::bWhen == NIL, {|| TRUE }, ::bWhen )
IF ::nClrForeFocus != NIL .and. ::nClrBackFocus != NIL
::SetColor( ::nOldClrFore, ::nOldClrBack )
ENDIF
IF ::lReadOnly == TRUE .or. !eval( ::bWhen )
::SetColor( CLR_BLACK, CLR_AMARILLO1 )
ENDIF
RETURN Super:LostFocus( hCtlFocus )
METHOD Paint() CLASS KTGet
::bWhen := iif( ::bWhen == NIL, {|| TRUE }, ::bWhen )
IF ( ::lReadOnly == TRUE .or. !eval( ::bWhen ) ) .and. ::lFocused == FALSE
::SetColor( CLR_BLACK, CLR_AMARILLO1 )
ELSEIF ::lReadOnly == FALSE .and. ::lFocused == TRUE
::SetColor( CLR_BLACK, CLR_MENTA2 )
ELSE
::SetColor( CLR_BLACK, CLR_WHITE )
ENDIF
RETURN Super:Paint()
de esta forma no modificamos los prg de la clase tget
salu2
carlos vargas
Posted: Fri Mar 03, 2006 3:36 pm
by lafug
gracias por sus respuestas amigos, voy a probar vuestras rutinas
SALUDOS
xHabrazos