Color de get

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

Color de get

Post by fergonm »

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
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

//-> 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

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
User avatar
jrestojeda
Posts: 543
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Post by jrestojeda »

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

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.
fergonm
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Post by fergonm »

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

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)

Post by fergonm »

Karinha.

Voy a modificar la clasa Tget.

Gracias y un saludo. Fernando
Saludos. Fernando
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Post by Daniel Garcia-Gil »

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 _ 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

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

      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
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
lubin
Posts: 404
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru
Contact:

Re: Color de get

Post by lubin »

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
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Post by Willi Quintana »

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

Salu2
fergonm
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Post by fergonm »

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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

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
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Post by Daniel Garcia-Gil »

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 _ 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??
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
fergonm
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Post by fergonm »

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 _ 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
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Post by Daniel Garcia-Gil »

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
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
fergonm
Posts: 133
Joined: Fri Nov 30, 2007 11:34 am
Location: Zaragoza (España)

Post by fergonm »

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
Post Reply