Color de get

Color de get

Postby fergonm » Wed Dec 03, 2008 10:32 am

Buenos días a los componentes del foro.

Tengo un cuadro de dialogo con varios gets de la siguiente forma


REDEFINE GET cRefe ID 10 COLOR "W/B" WHEN .F.


El problema es que el color no soy capaz de modificarlo, ya que siempre se queda en un gris claro. Me interesa que no se pueda modicar pero que sea legible.

¿Se puede modificar el color?.

Muchas gracias.
Saludos. Fernando
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby karinha » Wed Dec 03, 2008 11:04 am

//-> Modifica estas Lyneas en TGET.PRG

#define ES_CENTER 1
#define ES_RIGHT 2
#define ES_LEFT 0
#Define TA_LEFT 0
#Define TA_RIGHT 2
#Define TA_CENTER 6

Code: Select all  Expand view
METHOD Paint() CLASS TGet

   local aInfo := ::DispBegin()
   Local hOldFont

   //-> Mudan‡as Feitas em 22/12/2005 Por Antonio Linares
   //-> Para que o When(.F.) do GET, fique colorido normal. Muito bom. Joao.

   if ::oBrush != nil
      FillRect( ::hDC, GetClientRect( ::hWnd ), ::oBrush:hBrush )
   else
      CallWindowProc( ::nOldProc, ::hWnd, WM_ERASEBKGND, ::hDC, 0 )
   endif

   if IsWindowEnabled( ::hWnd )

      CallWindowProc( ::nOldProc, ::hWnd, WM_PAINT, ::hDC, 0 )

      //-> Para BTNGET.PRG Quando o RIGHT Esta ligado no WorkShop.exe
      //-> Modificado em 20/02/2008 - Por Joao Santos

      SetTextColor( ::hDC, ::nClrText )
      SetBkColor( ::hDC, ::nClrPane )
      hOldFont = SelectObject( ::hDC, ::oFont:hFont )

      do case

         case lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), ES_RIGHT )

              SetTextAlign( ::hDC, TA_RIGHT )

              ExtTextOut( ::hDC, 0, ::nWidth()  - 44,                        ;
              { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )

      endcase

   else

      SetTextColor( ::hDC, ::nClrText )
      SetBkColor( ::hDC, ::nClrPane )
      hOldFont = SelectObject( ::hDC, ::oFont:hFont )
     
      do case
         case lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), ES_CENTER )
              SetTextAlign( ::hDC, TA_CENTER )
              ExtTextOut( ::hDC, 0, ::nWidth() / 2,                           ;
              { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
             
         case lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), ES_RIGHT )
              SetTextAlign( ::hDC, TA_RIGHT )
              ExtTextOut( ::hDC, 0, ::nWidth() - 4,                           ;
              { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )

         otherwise

              SetTextAlign( ::hDC, TA_LEFT )

              //-> Posicao do Get
              ExtTextOut( ::hDC, 0, 4,                                        ;
              { 0, 0, ::nHeight(), ::nWidth() }, GetWindowText( ::hWnd ) )
      endcase

      SelectObject( ::hDC, hOldFont )

   endif

   if ValType( ::bPainted ) == "B"
      Eval( ::bPainted, ::hDC, ::cPS, Self )
   endif

   ::DispEnd( aInfo )

return 1


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7794
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby jrestojeda » Wed Dec 03, 2008 11:27 am

Hola amigo.

Puedes usar los colores que quieras con la función RGB(,,)
Los parámetros de RGB() van de 0 a 255 de esa forma con los tres parámetros tienes los colores que quieras.

Code: Select all  Expand view
Local Color1,Color2,Color3...

Color1:=RGB(0,0,0)
Color2:=RGB(255,255,255)
Color3:=RGB(128,128,128)

REDEFINE GET cRefe ID 10 COLOR Color1,Color2 WHEN .F.



Color1 es el color de la letra del GET y Color2 el color del fondo, Color3 solo está definido para que veas que se pueden definir tantos colores como quieras y obviamente usarlos.

Espero te sirva.
Saludos desde Argentina, Esteban.
User avatar
jrestojeda
 
Posts: 601
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Postby fergonm » Wed Dec 03, 2008 4:50 pm

jrestojeda wrote:Hola amigo.

Puedes usar los colores que quieras con la función RGB(,,)
Los parámetros de RGB() van de 0 a 255 de esa forma con los tres parámetros tienes los colores que quieras.

Code: Select all  Expand view
Local Color1,Color2,Color3...

Color1:=RGB(0,0,0)
Color2:=RGB(255,255,255)
Color3:=RGB(128,128,128)

REDEFINE GET cRefe ID 10 COLOR Color1,Color2 WHEN .F.



Color1 es el color de la letra del GET y Color2 el color del fondo, Color3 solo está definido para que veas que se pueden definir tantos colores como quieras y obviamente usarlos.

Espero te sirva.
Saludos desde Argentina, Esteban.


Esteban, he probado pero no funciona. Muchas gracias.
Saludos. Fernando
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby fergonm » Wed Dec 03, 2008 4:52 pm

Karinha.

Voy a modificar la clasa Tget.

Gracias y un saludo. Fernando
Saludos. Fernando
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby Daniel Garcia-Gil » Wed Dec 03, 2008 5:35 pm

la clase tiene una data que se llama
lDisColors por default esta activada, cuando la desactivas, los colores del disable se pintan igual que el enable...
yo hice unos cambios a la clase...
le agrege 2 datas nuevas
DATA nClrTextDis, nClrPaneDis
que van a determinar los colores del text y pane cuando esta disable el get, pero tiene que estar desactivada la data lDisColors para que funcione...
en el metodo New y redefine agrege:

::nClrTextDis = nClrFore
::nClrPaneDis = nClrBack

en el metodo paint modifique estas lineas
Code: Select all  Expand view
if ::lDisColors
         SetTextColor( ::hDC, GetSysColor( COLOR_GRAYTEXT ) )
         SetBkColor( ::hDC, GetSysColor( COLOR_WINDOW ) )
else
         SetTextColor( ::hDC, ::nClrText )
         SetBkColor( ::hDC, ::nClrPane )
endif


por estas...

Code: Select all  Expand view
      if ::lDisColors
         SetTextColor( ::hDC, GetSysColor( COLOR_GRAYTEXT ) )
         SetBkColor( ::hDC, GetSysColor( COLOR_WINDOW ) )
      else
     
         if ValType( ::nClrTextDis ) == "B"
            SetTextColor( ::hDC, Eval( ::nClrTextDis ) )
         elseif ValType( ::nClrTextDis ) == "N"
            if ::nClrTextDis <> 0
               SetTextColor( ::hDC, ::nClrTextDis  )
           else
            SetTextColor( ::hDC, ::nClrText )
           endif
        endif
         if ValType( ::nClrPaneDis ) == "B"
            SetBkColor( ::hDC, Eval( ::nClrPaneDis ) )
         elseif ValType( ::nClrPaneDis ) == "N"
            if ::nClrPaneDis <> 0
               SetBkColor( ::hDC, ::nClrPaneDis  )
           else
            SetBkColor( ::hDC, ::nClrPane )
           endif
         endif
      endif


ahora puedes hacer uso de esa variables cuando el get esta disable, puedes usar la data tanto como valores numericos ( codigo de colores ) como codeblock
ejemplo
oGet:lDisColors := .f.
oGet:nClrTextDis := CLR_WHITE
oGet:nClrPaneDis := {|| if( empty( aVar[ 2 ] ), CLR_BLUE, CLR_BLACK ) }

recuerda tener desactivado lDisColors
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Color de get

Postby lubin » Thu Dec 04, 2008 1:03 am

Hola Fernando
yo tengo la clase tget modificada
si deseas te la mando al correo que me indiques

He definido un color para cuando tiene el focus (util cuando hay varios gets,, y el usuario se la pasa buscando la rayita del Get activo porque tod tiene fondo blanco.. ) , otro color para cuando tenemos los gets deshabilidatos (que normalmente se ven plomizos ... claros )


Lubin
User avatar
lubin
 
Posts: 449
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Postby Antonio Linares » Thu Dec 04, 2008 1:07 am

Fernando,

De una forma simple:

REDEFINE GET oGet VAR cRefe ID 10 COLOR "W/B" WHEN .F.

oGet:lDisColors = .F.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42063
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Willi Quintana » Thu Dec 04, 2008 3:12 am

Holas...
Y cual seria el "lDisColor" para CHECKBOX con la clausula WHEN .f.

Salu2
User avatar
Willi Quintana
 
Posts: 1019
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Postby fergonm » Thu Dec 04, 2008 8:31 am

Antonio Linares wrote:Fernando,

De una forma simple:

REDEFINE GET oGet VAR cRefe ID 10 COLOR "W/B" WHEN .F.

oGet:lDisColors = .F.


Gracias maestro, funcionó perfectamente.

Un saludo. Fernando.
Saludos. Fernando
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby Antonio Linares » Thu Dec 04, 2008 10:20 am

Willy,

> Y cual seria el "lDisColor" para CHECKBOX con la clausula WHEN .f.

Pues si no me equivoco, no está implementado para los checkboxes.

Tendria que implementarse de forma similar a como se hace en los GETs
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42063
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Daniel Garcia-Gil » Thu Dec 04, 2008 2:59 pm

mcfox wrote:la clase tiene una data que se llama
lDisColors por default esta activada, cuando la desactivas, los colores del disable se pintan igual que el enable...

pense que eso seria un problema...
con los cambios que hice, pense en pintar diferente los colores del get cuando estan disable y no que tengan el mismo aspecto que los get que estan enable...
usando solo lDisColors:=.f. todos los get tendran el mismo color, como saber a simple vista cual esta enable y disable??
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby fergonm » Thu Dec 04, 2008 6:10 pm

mcfox wrote:
mcfox wrote:la clase tiene una data que se llama
lDisColors por default esta activada, cuando la desactivas, los colores del disable se pintan igual que el enable...

pense que eso seria un problema...
con los cambios que hice, pense en pintar diferente los colores del get cuando estan disable y no que tengan el mismo aspecto que los get que estan enable...
usando solo lDisColors:=.f. todos los get tendran el mismo color, como saber a simple vista cual esta enable y disable??


Puedes poner un COLOR diferente para los que se pueden o no se pueden editar. Así lo tengo ahora

Un saludo. Fernando
Saludos. Fernando
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Postby Daniel Garcia-Gil » Thu Dec 04, 2008 6:43 pm

como haces para tener un color diferente en los get que estan disable sin modificar la clase?
me iteresaria mucho saber para volver a poner mi antigua tget y usar el codigo original en mis sistemas
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby fergonm » Thu Dec 04, 2008 7:59 pm

mcfox wrote:como haces para tener un color diferente en los get que estan disable sin modificar la clase?
me iteresaria mucho saber para volver a poner mi antigua tget y usar el codigo original en mis sistemas


Tras la sugerencia de Antonio, he cambiado el código de la siguiente forma:

REDEFINE GET oGet VAR cRamo ID 17 COLOR Color1,Color2 OF oDlg WHEN .F.
oGet:lDisColors = .F.
REDEFINE GET oGet VAR nnHonorarios ID 14 OF oDlg PICTURE "@E 99,999.99" UPDATE
REDEFINE GET oGet VAR nHonorarios ID 21 COLOR Color1,Color2 OF oDlg PICTURE "@E 99,999.99" UPDATE WHEN .F.
oGet:lDisColors = .F.
REDEFINE GET oGet VAR nKms ID 15 OF oDlg PICTURE "@E 999" UPDATE
REDEFINE GET oGet VAR pKms ID 22 COLOR Color1,Color2 OF oDlg PICTURE "@E 99,999.99" UPDATE WHEN .F.
oGet:lDisColors = .F.
REDEFINE GET oGet VAR nFotos ID 18 OF oDlg PICTURE "@E 999" UPDATE
REDEFINE GET oGet VAR pFotos ID 23 COLOR Color1,Color2 OF oDlg PICTURE "@E 99,999.99" UPDATE WHEN .F.
oGet:lDisColors = .F.
REDEFINE GET oGet VAR nApertura ID 19 OF oDlg PICTURE "@E 999" UPDATE
REDEFINE GET oGet VAR nApertura ID 24 COLOR Color1,Color2 OF oDlg PICTURE "@E 99,999.99" UPDATE WHEN .F.
oGet:lDisColors = .F.


Funciona estupendamente y se diferencia por el fondo del GET.

Un saludo. Fernando.
Saludos. Fernando
fergonm
 
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: russimicro and 56 guests