Amigos :
Como puedo colorear el GET que esta en foco? con FWH2.7 /xHarbour
DE ANTEMANO
MUCHAS GRACIAS
SALUDOS Y xHabrazos
como poner color al GET que esta en foco?
como poner color al GET que esta en foco?
Luis Alfonso Fuentes Guerrero
FWH 11.06 xHarbour 1.2.1 BCC55 WorkShop
FWH 11.06 xHarbour 1.2.1 BCC55 WorkShop
-
- Posts: 225
- Joined: Tue Feb 28, 2006 4:25 pm
- Location: PERU
-
- Posts: 225
- Joined: Tue Feb 28, 2006 4:25 pm
- Location: PERU
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.
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.
Saludos
R.F.
R.F.
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
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
Nos Gusta Programar
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
En mi caso
Agrego esto al include de mi aplicacion. Ej( miapp.ch )
Agrego este codigo a un prg. ej:( myget.prg)
de esta forma no modificamos los prg de la clase tget
salu2
carlos vargas
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}>)
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()
salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)