Page 1 of 1

cambiar el color a un boton?

PostPosted: 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?

PostPosted: Wed Jun 11, 2014 12:50 pm
by Adolfo
Goosfancito...

Espero este te sirva...

Code: Select all  Expand view
 
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?

PostPosted: Wed Jun 11, 2014 12:56 pm
by goosfancito
gracias!

Re: cambiar el color a un boton?

PostPosted: Wed Jun 11, 2014 2:28 pm
by goosfancito
Estoy probando lo que me dijiste:
Code: Select all  Expand view
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?

PostPosted: 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?

PostPosted: 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?

PostPosted: Wed Jun 11, 2014 8:03 pm
by FranciscoA
Goosfancito.
Talvez este ejemplo pueda servirte de guia:
Code: Select all  Expand view
  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?

PostPosted: 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?

PostPosted: Thu Jun 12, 2014 3:24 am
by FranciscoA
Goos, un ejemplo auto contenido:
Code: Select all  Expand view
#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?

PostPosted: 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?

PostPosted: Thu Jun 12, 2014 11:55 am
by goosfancito
Solucionado!

simple cuando se lo entiende:

Code: Select all  Expand view
redefine button obtn....

obtn:SetColor(COLOR_DEL_TEXTO_EN_RGB, COLOR_FONDO_EN_RGB)
 

Code: Select all  Expand view
ejemplo:
obtn:SetColor(RGB(0, 0, 0), RGB(255, 255, 0))


gracias a todos.

Re: cambiar el color a un boton?

PostPosted: 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.