Page 1 of 1
cambiar el color a un boton?
Posted: Wed Jun 11, 2014 12:36 pm
by goosfancito
hola.
Quiero hacer una paleta de colores para que el usuario pueda seleccionar uno,
y pensé hacerlo con botones, y que cada botón sea del color que yo quiero.
Como hago para cambiarle el color a los botones?
gracias.
Re: cambiar el color a un boton?
Posted: Wed Jun 11, 2014 12:50 pm
by Adolfo
Goosfancito...
Espero este te sirva...
Code: Select all
Local Color1:=65000 //amarillo
Redefine BtnBmp oBtn01 ID 121 Of oDlgConf Action (Color1:=ValidaColor(oBtn01,Color1)) UPDATE
oBtn01:bClrGrad = { | | {{ 1, Color1, Color1 }, { 1, Color1, Color1 }} }
//-----------------------------------------------------------------------------
Function ValidaColor(Boton,Colore)
Colore:=ChooseColor( Colore )
Boton:bClrGrad = { | | {{ 1, Colore, Colore }, { 1, Colore, Colore }} }
Boton:Refresh()
Return Colore
Re: cambiar el color a un boton?
Posted: Wed Jun 11, 2014 12:56 pm
by goosfancito
gracias!
Re: cambiar el color a un boton?
Posted: Wed Jun 11, 2014 2:28 pm
by goosfancito
Estoy probando lo que me dijiste:
Code: Select all
REDEFINE btnbmp oBtnsColores[01] ID 201 OF oDlg action(vGets[3]:="")
oBtnsColores[1]:bClrGrad:= {|| {{1, choosecolor(65000), choosecolor(65000)}, {1, choosecolor(65000), choosecolor(65000)}}}
oBtnsColores[1]:refresh()
pero no me cambia el color...
gracias.
Re: cambiar el color a un boton?
Posted: Wed Jun 11, 2014 3:13 pm
by Adolfo
Goosfancito.
Utiliza una funcion externa para la asignacion del color, no dentro del bloque de codigo que define el GRAD.
Tal como lo habia hecho yo, llamando a validacolor() en el valid del Boton.
Si quieres guardar el color elegio, la variable COLOR1 la puedes traspasar a un DBf o un campo de una tabla Mysql, y leerla desde ahi antes de crear los botones, para que el boton tome el ultimo color elegido.
Lo que yo hago es engañar al boton diciendole que va a dibujar un boton con color en degrade, pero los parametros que le paso son el mismo color para todas las opciones, asi lo dibuja plano y puedo cambiarlo segun lo indico.
Prueba de nuevo.
Re: cambiar el color a un boton?
Posted: Wed Jun 11, 2014 5:04 pm
by goosfancito
Me exprese mal en lo que necesito, por lo que vi "choosecolor" es una funcion para
seleccionar un color.
Yo quiero tener unos colores preestablecidos, ejemplo:
CLR_COLOR1
CLR_COLOR2
CLR_COLOR3
...
y poner en el dialogo tres button, y que cada button este pintado con cada color
boton1 con el color CLR_COLOR1
boton2 con el color CLR_COLOR2
boton3 con el color CLR_COLOR3
que necesito? que el boton se pinte de color, probe tal cual me decis, me
muestra el choosecolor selecciono un color pero asi y todo el boton no se pinta
de ese color...
me explique mejr ahora?
gracias.
Re: cambiar el color a un boton?
Posted: Wed Jun 11, 2014 8:03 pm
by FranciscoA
Goosfancito.
Talvez este ejemplo pueda servirte de guia:
Code: Select all
ACTIVATE WINDOW oChild MAXIMIZED;
ON INIT ( Color_oBot(oBot1,"ORO"), Color_oBot(oBot2,"PLATA")
---
---
Function Color_oBot(oBot,cColor)
DEFAULT cColor := NIL
IF !cColor = NIL
if cColor = "ORO"
oBot:bClrGrad = { | lMouseOver | If( ! lMouseOver,;
{ { 1.00,14481663,38075 }, ;
{ 1.00,38075,14481663 } }, ;
{ { 0.10,16777215,9363707 },;
{ 0.10,9363707,16777215 } } ) }
oBot:SetColor(0)
elseif cColor = "PLATA"
oBot:bClrGrad = { | lMouseOver | If( ! lMouseOver,;
{ { 0.30,12961221,16777215 },;
{ 0.30,16777215,12961221 } },;
{ { 0.10,9363707,16777215 },;
{ 0.10,16777215,9363707 } } ) }
oBot:SetColor(0)
endif
ENDIF
Return nil
Saludos.
Re: cambiar el color a un boton?
Posted: Wed Jun 11, 2014 10:23 pm
by goosfancito
Hola!
Algo no me esta andando en el boton porque bClrGrad no me hace nada. ya probe los ejemplos anteriores. voy a hacer un prg simple y voy a ver que pasa.
gracias a ambos.
Re: cambiar el color a un boton?
Posted: Thu Jun 12, 2014 3:24 am
by FranciscoA
Goos, un ejemplo auto contenido:
Code: Select all
#Include "FiveWin.Ch"
//--------------------------//BOTONES DE DIFERENTES COLORES
Function Main() //ColorBtns()
local oDlg,oBt1,oBt2
DEFINE DIALOG oDlg FROM 5,5 TO 10,60 TITLE "BOTONES DE COLORES"
@ 3,2 BTNBMP oBt1 PROMPT "Un Color" SIZE 60,20 ACTION MsgInfo("Nada que hacer")
@ 3,80 BTNBMP oBt2 PROMPT "Otro Color" SIZE 60,20 ACTION oDlg:End()
Color_oBot(oBt1,"ORO")
Color_oBot(oBt2,"PLATA")
ACTIVATE DIALOG oDlg Centered
Return nil
//------------------------------
Function Color_oBot(oBot,cColor)
DEFAULT cColor := NIL
IF !cColor = NIL
if cColor = "ORO"
oBot:bClrGrad = { | lMouseOver | If( ! lMouseOver,;
{ { 1.00,14481663,38075 }, ;
{ 1.00,38075,14481663 } }, ;
{ { 0.10,16777215,9363707 },;
{ 0.10,9363707,16777215 } } ) }
oBot:SetColor(0)
elseif cColor = "PLATA"
oBot:bClrGrad = { | lMouseOver | If( ! lMouseOver,;
{ { 0.30,12961221,16777215 },;
{ 0.30,16777215,12961221 } },;
{ { 0.10,9363707,16777215 },;
{ 0.10,16777215,9363707 } } ) }
oBot:SetColor(0)
endif
ENDIF
Return nil
Re: cambiar el color a un boton?
Posted: Thu Jun 12, 2014 10:31 am
by goosfancito
anda perfecto.
ahora voy a ver que es lo que yo hago mal.
gracias.
Re: cambiar el color a un boton?
Posted: Thu Jun 12, 2014 11:55 am
by goosfancito
Solucionado!
simple cuando se lo entiende:
Code: Select all
redefine button obtn....
obtn:SetColor(COLOR_DEL_TEXTO_EN_RGB, COLOR_FONDO_EN_RGB)
Code: Select all
ejemplo:
obtn:SetColor(RGB(0, 0, 0), RGB(255, 255, 0))
gracias a todos.
Re: cambiar el color a un boton?
Posted: Tue Mar 06, 2018 4:25 pm
by Giovany Vecchi
No controle de ButtonBmp não funciona
Eu quero trocar a cor do texto do botão. a variavel bClrGrad funciona com BtnBmp mais não funciona com ButtonBmp
Method Setcolor() tambem não funcionou
Acho que neste caso deveria usar SendMessage, mais tambem não comsegui.