COLOR EN TEXTBOX

HMG en Español

Moderator: Rathinagiri

User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

COLOR EN TEXTBOX

Post by SALINETAS24 »

Hola.
Se puede cambiar el color del TEXTBOX, cuando esta activo ponerlo en Verde y cuando pasa al siguiente volverlo al color NORMAL...,
He probado con todo esto nada, como mucho con un BACKCOLOR GREEN lo puesto verde fijo.Pero es no es lo que quiero.
Gracias


[ BACKCOLOR <aBackColor> ]
[ FONTCOLOR <aFontColor> ]
[ DISABLEDBACKCOLOR <aDisabledBackColor> ]
[ DISABLEDFONTCOLOR <aDisabledFontColor> ]
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
andyglezl
Posts: 1461
Joined: Fri Oct 26, 2012 7:58 pm
Location: Guadalajara Jalisco, MX
Contact:

Re: COLOR EN TEXTBOX

Post by andyglezl »

Trata esto...

@ <nRow>, <nCol> TEXTBOX TB_1
.
.
.
ON GOTFOCUS SetProperty( "Form_1", "TB_1", "Backcolor", RED )
ON LOSTFOCUS SetProperty( "Form_1", "TB_1", "Backcolor", GREEN )
Andrés González López
Desde Guadalajara, Jalisco. México.
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: COLOR EN TEXTBOX

Post by SALINETAS24 »

Hola a todos..,
Hola andyglezl, eso cuesta mucho.., en cada control poner todo eso.., que agotamiento :lol: a mi llamamé gandul pero para todos esos procesos repetitivos donde este una buena ".lib"... :D .., asi que manos a la obra.
Aqui os paso un código práticamente depurado, hay que tener cuidado que cuando se minimiza o se pulsa un boton se pierde el foco y los colores fallan, lo suyo sería que se enviase al primer TEXTBOX y yasta!!
Otra cosa, en el primer TEXTBOX que tengamos le tenemos que asignar "BACKCOLOR" a pedal.
La forma de llamar a la funcion es desde un "ON LOSTFOCUS PINTA(Colordepedir, Colordesalir)" siendo los dos parámetros opcionales.
Yo los colores bases he puesto el GREEN y el WHITE.. , de cada uno a su gusto. :P

Unas cervecitas para todos y que la disfrutéis amigos..!!

Code: Select all

/*
 * HMG - Harbour Win32 GUI library Demo
 *
 * Copyright 2002 Roberto Lopez <mail.box.hmg@gmail.com>
 * http://www.hmgforum.com//
 *
 * MODIFICACION PARA VARIOS LOSTFOCUS REALIZADA POR SARGANTANA.SOFT
 * José Manuel Carbonell Bernabe
 * SargantanaSoft@Gmail.com
 * Petrer City - Alicante - Spain.
 * ------------------------------------------
 * 30 DE OCTUBRE DEL 2018 - AÑADIMOS COLORES.
 * ------------------------------------------
 * FUNCION PINTA(Color_p,Color_s)
 * Forma de llamarla
 * ON LOSTFOCUS PINTA(Color_p,Color_s) 
 * Parametros opcionales, por defecto GREEN y WHITE
 * Color_p -> Color de Petición. Color de fondo cuando esta activo el textbox
 * Color_s -> Color de Salida. Color de fondo cuando deje el textbox
 * 
 * Observacion.
 * Al primer TEXTOBOX le tenemos que poner nosotros el BACKCOLOR.
*/

#include "hmg.ch"


Function Main

	DEFINE WINDOW Form_1 ;
		AT 0,0 ;
		WIDTH 640 HEIGHT 480 ;
		TITLE 'HMG Demo' ;
		MAIN 

		@ 10,10 TEXTBOX Text_1 VALUE 123 TOOLTIP 'Numeric TextBox' ;
			NUMERIC MAXLENGTH 5 RIGHTALIGN ;
			BACKCOLOR GREEN ; 
			ON lostfocus (Pinta(GREEN,WHITE))

		@ 40,10 TEXTBOX Text_2 	VALUE "123" TOOLTIP ' TextBox' ;
			MAXLENGTH 5 RIGHTALIGN ;
			ON lostfocus (Pinta(GREEN,WHITE))

		@ 70,10 TEXTBOX Text_3 VALUE 123 TOOLTIP 'Numeric TextBox' ;
			NUMERIC MAXLENGTH 5 RIGHTALIGN ;
			ON lostfocus (Pinta())
			
		@ 100,10 TEXTBOX Text_4  VALUE 123 TOOLTIP 'Numeric TextBox' ;
			NUMERIC MAXLENGTH 5 RIGHTALIGN ;
			ON lostfocus (Pinta())
			
		@ 10,200 TEXTBOX Text_5 ;
			VALUE ctod('01/01/2004') ;
			TOOLTIP 'Date TextBox 1' ;
			DATE ON lostfocus (Pinta())

		@ 40,200 TEXTBOX Text_6 ;
			VALUE Date() ;
			TOOLTIP 'Date TextBox 2' ;
			DATE ON lostfocus (Pinta())	 
			
	DEFINE EDITBOX Edit_1
        ROW    10
        COL    350
        WIDTH  120
        HEIGHT 110
        VALUE ""
		ONLOSTFOCUS   (Pinta())	 
    END EDITBOX

    DEFINE COMBOBOX Combo_1
        ROW    150
        COL    350
        WIDTH  200
        HEIGHT 100
        ITEMS {"Item 1","Item 2","Item 3"}
        VALUE 0
		ONLOSTFOCUS   (Pinta())	
      DISPLAYEDIT .T.      // must be .T. for cuebanner
    END COMBOBOX

    DEFINE SPINNER Spinner_1
        ROW    200
        COL    350
        WIDTH  200
        HEIGHT 24
        RANGEMIN 1
        RANGEMAX 10
        VALUE ""             // must be "" for cuebanner
		ONLOSTFOCUS   (Pinta())	
    END SPINNER

    DEFINE RICHEDITBOX RichEdit_1
        ROW    330
        COL    350
        WIDTH  120
        HEIGHT 90
        VALUE ""
		ONLOSTFOCUS   (Pinta())	
    END RICHEDITBOX	
			
		
		@ 300, 50 BUTTON Button_1 CAPTION "Click" ACTION MsgInfo ("Hello")
		@ 330, 50 BUTTON Button_2 CAPTION "Minimize" ACTION Form_1.Minimize

	END WINDOW

	Form_1.Center
	Form_1.Text_1.Setfocus
	Form_1.Activate

Return Nil

PROC Pinta(Color_P,Color_S)
	LOCAL A  := GetLastActiveFormIndex ()
	LOCAL cWin:=""
	DEFAULT Color_p:=GREEN
	DEFAULT Color_s:=WHITE
	IF A > 0
		cWin:=(_HMG_SYSDATA [66] [A])
		IF !EMPTY(GetProperty( cWin , 'FocusedControl'))
			PONER_COLOR(Color_P,Color_s,cWin)			
		ENDIF
	ENDIF
	
RETURN

STATIC PROC PONER_COLOR(Color_p,Color_s,cForm)
	LOCAL i := GetLastActiveControlIndex ()
	IF i>0	
		SETPROPERTY(cForm,_HMG_SYSDATA [2] [i],"BACKCOLOR", Color_s)
	ENDIF
		SETPROPERTY(cForm,This.focusedControl,"BACKCOLOR", Color_p)
RETURN
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
serge_girard
Posts: 3162
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: COLOR EN TEXTBOX

Post by serge_girard »

Hola SALINETAS24,

After MINIMIZing and clicking on program in taskbar the color green is gone until clicking twice on a control!

Serge
There's nothing you can do that can't be done...
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: COLOR EN TEXTBOX

Post by SALINETAS24 »

Hola girard,
serge_girard wrote: Tue Oct 30, 2018 8:41 pm Hola SALINETAS24,

After MINIMIZing and clicking on program in taskbar the color green is gone until clicking twice on a control!

Serge
Efectivamente, tienes razón.., ya lo he dicho yo antes. La función esta sin terminar..., por si alguno quiere continuarla. Ahora he comprobado que en los TAB tambien el color se pierde.
Sería interesante que una vez maximizado, o en el TAB cuando se cambia de pestalla el setfocus lo tuviese el primer TEXTBOX, que es el que pinta BACKCOLOR.
Pero no se como hacerlo. :oops:

Lo siento...
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
serge_girard
Posts: 3162
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: COLOR EN TEXTBOX

Post by serge_girard »

Salietas,

I use this simple construction :

Code: Select all

      DEFINE TEXTBOX  &X6
        ....
         ON GOTFOCUS  CHG_FOCUS('G', this.form, this.name )
         ON LOSTFOCUS CHG_FOCUS('L', this.form, this.name ) 
    END TEXTBOX
    ..
    
      DEFINE TEXTBOX  &X7
        ....
         ON GOTFOCUS  CHG_FOCUS('G', this.form, this.name )
         ON LOSTFOCUS CHG_FOCUS('L', this.form, this.name ) 
    END TEXTBOX



FUNCTION CHG_FOCUS(x1, tform, tname)
/***********************************/
IF x1 == 'G'
   SetProperty(tform, tname, 'BackColor' , WHITE )    
ELSE
   SetProperty(tform, tname, 'BackColor' , GREEN )     
ENDIF
RETURN

This works fine but also when minimized, focus is lost.

Serge
There's nothing you can do that can't be done...
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: COLOR EN TEXTBOX

Post by SALINETAS24 »

Hola Serge, tienes razón. Yo queíra ahorrar código pero finalmente tengo que utilizar las dos sentencias, el ON GOTFOCUS y el ON LOSTFOCUS. Con todo y con ello he creado una función genérica para pintar, la puedes incorporar en cualquier ".prg" y llamarla desde cualquier otro.

La forma de llamarla

Code: Select all

@  30,130 TEXTBOX Get_02 VALUE ""  WIDTH 250  MAXLENGTH 35 ;
 ON GOTFOCUS PINTA( 1) ON LOSTFOCUS PINTA( 2)
@  60,130 TEXTBOX Get_03 VALUE ""  WIDTH 250  MAXLENGTH 35	;
 ON GOTFOCUS PINTA( 1) ON LOSTFOCUS PINTA( 2)				
 @  90,130 TEXTBOX Get_04 VALUE "" WIDTH 250  MAXLENGTH 35	;
  ON GOTFOCUS PINTA( 1) ON LOSTFOCUS PINTA( 2)	
La función PINTA, puede recibir 3 parametros
PINTA(nOpc,ColorEntrada,ColorSalida)
nOpc -> 1 Cuando recibe el Focus. 2 Cuando pierde el Focus.
ColorEntrada -> Opcional.., el color cuando toma el focus, por defecto "verde"
ColorSalida -> Opcional.., el color cuando deja el focus, por defecto "blanco"

Code: Select all

//----------------------------------------------------------
//-- PINTA EL FONDO DE LOS TEXTBOX, ANTIGUOS GET
//-- Forma de llamarla
//-- PINTA(nOpc,Colordepedir, Colordesalir)
//-- nOpc -> 1 Pinta cuando entra 2 Pinta cuando sale
//-- Parametros opcionales, Colordepedir, Colordesalir
//------------------------------------------------------------
PROC Pinta(nOpc,Color_P,Color_S)
	LOCAL A  := GetLastActiveFormIndex ()
	LOCAL i  := GetLastActiveControlIndex ()
	LOCAL cWin:=ThisWindow.Name
	DEFAULT Color_p:=GREEN
	DEFAULT Color_s:=WHITE
	IF A > 0
			if nOpc=1
				SETPROPERTY(cWin,This.focusedControl,"BACKCOLOR", Color_p)
			ELSE
				SETPROPERTY(cWin,_HMG_SYSDATA [2] [i],"BACKCOLOR", Color_s)
			ENDIF

	ENDIF
RETURN
Saludos y unas cervecitas fresquitas....
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
User avatar
serge_girard
Posts: 3162
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: COLOR EN TEXTBOX

Post by serge_girard »

Bravo !

Serge
There's nothing you can do that can't be done...
User avatar
mustafa
Posts: 1158
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Contact:

Re: COLOR EN TEXTBOX

Post by mustafa »

Che !!! que Boooooooooo !!!
Si le cambias en PROC Pinta -> el Blanco " White" DEFAULT Color_s:=WHITE
por ejemplo DEFAULT Color_s:= { 208,098,120 } <--- que es un color salmón
Queda De "Categoría Internacional"
Una abrasada
Mustafa
User avatar
serge_girard
Posts: 3162
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: COLOR EN TEXTBOX

Post by serge_girard »

Saludos y unas cervecitas fresquitas....
Prefiero una copa de vino tinto !

Serge
There's nothing you can do that can't be done...
Post Reply