colores en BUTTON

Post Reply
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

colores en BUTTON

Post by colthop »

Hola que tal:

Quiero cambiar los colores de los borones de esta ventana y lo intento hacer de la suguiente manera:

Code: Select all

DEFINE WINDOW oDlgw MDICHILD OF oVentPrinc PIXEL FROM 0, 0 TO 140,800 TITLE "Gestión de Actividades" COLOR escri10, fondo10 STYLE nOr(WS_CAPTION)
  @ 10,  8 SAY "Número"                        OF oDlgw PIXEL COLOR escri10, fondo10 SIZE 120,18
  @ 10,324 SAY "Epígrafe"                      OF oDlgw PIXEL COLOR escri10, fondo10 SIZE 120,18
  @ 10,655 SAY "C.N.A.E."                      OF oDlgw PIXEL COLOR escri10, fondo10 SIZE 120,18
  @ 30,  8 SAY "Actividad"                     OF oDlgw PIXEL COLOR escri10, fondo10 SIZE 120,18
  @ 10, 72 say odlg01 VAR str(numero,6,0)      OF oDlgw PIXEL COLOR escri30, fondo30 SIZE  48,18 RIGHT BORDER
  @ 10,384 say odlg02 VAR " " + epigrafe       OF oDlgw PIXEL COLOR escri30, fondo30 SIZE  48,18       BORDER
  @ 10,724 say odlg03 VAR " " + cnae           OF oDlgw PIXEL COLOR escri30, fondo30 SIZE  48,18       BORDER
  @ 30, 72 say odlg04 VAR " " + actividad      OF oDlgw PIXEL COLOR escri30, fondo30 SIZE 700,18       BORDER
  @ 60,  5 say ""                              OF oDlgw PIXEL COLOR fondo20, colme01 SIZE 780,28
  @ 86,  5 say ""                              OF oDlgw PIXEL COLOR fondo20, colme02 SIZE 780, 2
  @ 60,  5 say ""                              OF oDlgw PIXEL COLOR fondo20, colme03 SIZE 780, 2
  @280,  5 say ""                              OF oDlgw PIXEL COLOR fondo20, colme02 SIZE  30, 2
  @ 60,  5 say ""                              OF oDlgw PIXEL COLOR fondo20, colme03 SIZE  30, 2
  @ 65, 10 BUTTON mBot01 PROMPT "&Alta"        OF oDlgw PIXEL ACTION altaacti() SIZE 80, 18
  @ 65, 95 BUTTON mBot02 PROMPT "&Baja"        OF oDlgw PIXEL ACTION bajaacti() SIZE 80, 18
  @ 65,180 BUTTON mBot03 PROMPT "&Modificar"   OF oDlgw PIXEL ACTION modiacti() SIZE 80, 18
  @ 65,265 BUTTON mBot04 PROMPT "&+ Siguiente" OF oDlgw PIXEL ACTION siguacti() SIZE 80, 18
  @ 65,350 BUTTON mBot05 PROMPT "&- Anterior"  OF oDlgw PIXEL ACTION anteacti() SIZE 80, 18
  @ 65,435 BUTTON mBot06 PROMPT "&Salir"       OF oDlgw PIXEL ACTION saliacti() SIZE 80, 18
  odlg01:SetFocus()
  mBot01:SetColor(escri10,fondo10)
  mBot02:SetColor(escri20,fondo20)
  mBot03:SetColor(escri30,fondo30)
  mBot04:SetColor(fondo10,escri10)
  mBot05:SetColor(fondo20,escri20)
  mBot06:SetColor(fondo30,escri30)
ACTIVATE WINDOW oDlgw NORMAL ON INIT oDlgw:Center()
Pero no me hace nada alguien me puede ayudar.

Gracias

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: colores en BUTTON

Post by Daniel Garcia-Gil »

Hola ColtHop

te recomiendo uses la clase BTNBMP, tienes muchas mas posibilidades, puedes usar la clausula para el estilo 2007, puedes crear tus propios colores en degradado,
puedes hacer del color de texto un code block para que te cambie el color de la letra cuando el mouse esta sobre el boton

@ 65, 10 BTNBMP mBot01 PROMPT "&Alta" OF oDlgw PIXEL SIZE 80, 18 CENTER

mBot01:SetColor({| lOver | if ( lOver, CLR_RED, CLR_BLACK) },CLR_WHITE)
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
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: colores en BUTTON

Post by colthop »

Hola Daniel:

Gracias por tu respuesta, el motivo que utilizo el BUTTON en vez de BTNBMP es porque cuando pongo "&Alta" para que se active con Alt + A en BTNBMP me lo pone literal y en BUTTON me pone Alta con la A subrrayada. Por otra parte como se puede incluir la opción 2007 pues si la pongo me da un error, o mejor dicho desde cual versión se puede incluir esa opcion.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
dobfivewin
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Re: colores en BUTTON

Post by dobfivewin »

Daniel

sobre:
te recomiendo uses la clase BTNBMP, tienes muchas mas posibilidades, puedes usar la clausula para el estilo 2007, puedes crear tus propios colores en degradado,
puedes hacer del color de texto un code block para que te cambie el color de la letra cuando el mouse esta sobre el boton

@ 65, 10 BTNBMP mBot01 PROMPT "&Alta" OF oDlgw PIXEL SIZE 80, 18 CENTER

mBot01:SetColor({| lOver | if ( lOver, CLR_RED, CLR_BLACK) },CLR_WHITE)
podrian pasar un ejemplo de como aplicar lo arriba descripto?

gracias

david
argentina
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: colores en BUTTON

Post by Daniel Garcia-Gil »

colthop wrote:Hola Daniel:

Gracias por tu respuesta, el motivo que utilizo el BUTTON en vez de BTNBMP es porque cuando pongo "&Alta" para que se active con Alt + A en BTNBMP me lo pone literal y en BUTTON me pone Alta con la A subrrayada. Por otra parte como se puede incluir la opción 2007 pues si la pongo me da un error, o mejor dicho desde cual versión se puede incluir esa opcion.
La clausula 2007 creo que viene desde la version 8.08, yo le hice una pequeña modificacion a la clase que me permite ver _ subrayados, no se cual version usas, pero podria ayudarte a hacer las modificaciones pertinentes, si asi lo prefieres, pero mi principal concejo es que busques la forma de actualizarte, las clases han tenido _ a favor que te podrian servir...

voy a dejar un ejemplo ( ejecutable ) para que descargen

http://www.sitasoft.com/fivewin/test/testbtb.rar
dobfivewin wrote:
podrian pasar un ejemplo de como aplicar lo arriba descripto?

gracias

david
argentina
puedes descargar el exe

Code: Select all

#include "fivewin.ch"


procedure main()
local oWnd
local oDlgw
local mBot01
local mBot02
local mBot03

DEFINE WINDOW oWnd mdi title "test"

DEFINE WINDOW oDlgw MDICHILD OF oWnd PIXEL FROM 0, 0 TO 140,800 TITLE "Test BTNBMP" COLOR CLR_BLACK, CLR_WHITE STYLE nOr(WS_CAPTION)
  @ 65, 10 BTNBMP mBot01 PROMPT "&Alta"        OF oDlgw SIZE 80, 18 left action msginfo( "a" ) 
  @ 65, 95 BTNBMP mBot02 PROMPT "&Baja"        OF oDlgw SIZE 80, 18 RIGHT action msginfo( "b" ) 2007 
  @ 65,180 BTNBMP mBot03 PROMPT "&Modificar"   OF oDlgw SIZE 80, 18 CENTER action msginfo( "c" ) 2007
  
  mBot01:SetColor({| lOver | if ( lOver, CLR_YELLOW, CLR_WHITE) },CLR_BLUE)
  mBot02:SetColor(CLR_GRAY,CLR_RED)
  mBot03:SetColor({| lOver | if ( lOver, CLR_BLACK, CLR_WHITE) },CLR_WHITE)
  
  mBot03:bClrGrad := { | lInvert | If( lInvert, ;
    { { 0.4, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
      { 0.6, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }  ;
         }, ;
    { { 0.4, nRGB( 24,  61, 118 ), nRGB( 50, 95, 158 ) },;
      { 0.6, nRGB( 75, 144, 223 ), nRGB( 41, 85, 145 ) };
      } ) }
      
 mBot03:bGotFocus := {||   mBot03:bClrGrad := { | lInvert | If( lInvert, ;
    { { 0.4, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
      { 0.6, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) } } ,;
    { { 0.4, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
      { 0.6, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }  ;
    } ) }, mBot03:nClrText:=CLR_BLACK, mBot03:refresh() }
    
 mBot03:bLostFocus := {|| mBot03:bClrGrad := { | lInvert | If( lInvert, ;
    { { 0.4, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
      { 0.6, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }  ;
         }, ;
    { { 0.4, nRGB( 24,  61, 118 ), nRGB( 50, 95, 158 ) },;
      { 0.6, nRGB( 75, 144, 223 ), nRGB( 41, 85, 145 ) };
    } ) }, mBot03:SetColor({| lOver | if ( lOver, CLR_BLACK, CLR_WHITE) },CLR_WHITE), mBot03:refresh() } 
  
ACTIVATE WINDOW oDlgw NORMAL ON INIT oDlgw:Center()

activate window oWnd
return
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
empresoft
Posts: 37
Joined: Mon Nov 12, 2007 12:46 pm
Location: BRAZIL

Re: colores en BUTTON

Post by empresoft »

Hola Daniel,muy bonito este ejemplo, por lo que por curiosidad dejaría con los bordes redondeados btnbmp ...

Abraços
FWH 804,XHARBOUR 1.1,XDEV,PELLES
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: colores en BUTTON

Post by Daniel Garcia-Gil »

Esta clase no dibuja bordes redondeados, porque creo que hace el boton "a mano", no depende de window
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
empresoft
Posts: 37
Joined: Mon Nov 12, 2007 12:46 pm
Location: BRAZIL

Re: colores en BUTTON

Post by empresoft »

Usándolo con el marco no es igual a su ejemplo ...

Abraços

Luiz Fernando
FWH 804,XHARBOUR 1.1,XDEV,PELLES
colthop
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: colores en BUTTON

Post by colthop »

Hola Daniel:

La version que uso es la del 2008 enero, y si creo que me actualizaré, pero me gustaría saber por lo menos esas modificaciones que le hiciste a la clase BTNBMP para ver si me lo hace a mi tambien y poder seguir por este camino para actualizar el programa.

Un saludo

Carlos
Colt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es

Nunca se termina de aprender, por eso necesito siempre ayuda.
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: colores en BUTTON

Post by Daniel Garcia-Gil »

Carlos....

Son muchas modificaciones y ajustes que que le he hecho...

Code: Select all

1.- Añadi Clausula TRANSPARENT a los comandos que llaman la clase, ya no es necesario hacer ::lTransparent:=.t.

2.- Añadi Clausula TOOLTIP al comando @ x,y BTNBMP...

3.- Añadi datas y clasulas necesarias para que me aceptara un cuarto bitmaps, actualmente usa 3
   3.1 Vista Normal del boton
   3.2 Vista Presionada del boton
   3.3 Vista en estado Disable
   3.4 Vista cuando el Mouse se posiciona sobre el boton ( nuevo )

4.- Modificaciones para la clasula TRANSPARENT
   4.1 Asume las mismas caracteristicas del alineado o ubicacion de texto e imagen, que la clausula 2007 pero sin los colores de la misma
   4.2 Permite la visializacion del ::cCaption
   4.3 Permite el uso de los 4 distintos bitmaps
   4.4 Hace el "ADJUST" de la imagen 

5-. Hace el subrayado de las Letras incluidas con el formato "&Letras" 

6-. Asume las mismas caracteristicas del alineado o ubicacion de texto e imagen, que la clausula 2007 pero sin los colores de la misma sin usar TRANSPARENT
(esta opcion tiene como limitante, la ubicacion del bitmap que siempre lo coloca en el centro)

7-. Nueva data "::lBoxSelect" que nos permite activar o desactivar el uso del border dibujado al momento de pasar el mouse sobre boton cuando esta la clausula 2007 activa, ( ver ejemplo del buttonbar mas abajo ), esta opcion no esta incluida como una clausula

8-. Respeta el uso de la clausula ADJUST en ButtonBar ( ver ejemplo )
Tip: para usar la clausula ADJUST sin TRANSPARENT, se debe especificar como minimo los 2 primeros bitmaps, no importa que sea el mismo

Sin la clausula transparent, si el bitmap abarca todo el espacio no se mostrara el cCaption en caso de usarlo

creo haber resumidos todos _ implementados, por ser tantos, no me es posible publicar _...

dejo un 2 ejemplos ejecutable de la misma con las opciones nuevas y de la forma actual para que vean las diferencias...
testbtb1.exe ( con modificaciones )
testbtb2.exe ( sin modificaciones )

http://www.sitasoft.com/fivewin/test/testbtb1.rar

dejo el Codigo de como seria con las modificaciones

Code: Select all

#include "fivewin.ch"


procedure main()
local oDlgw
local oBot01, oBot02, oBot03, oBot04
local lWhen := .f.
local oFont
local oBar, oBotBar1, oBotBar2, oBotBar3, oBotBar4, oBotBar5, oBotBar0
local ahOver := PalBmpRead( , "butt1upL.bmp" )
local ahOldBmp := array( 2 )
local bGrad

bGrad := { | lInvert | If( lInvert, ;
      { { 1/2, nRGB( 219, 230, 244 ), nRGB( 207-50, 221-25, 255 ) }, ;
        { 1/2, nRGB( 201-50, 217-25, 255 ), nRGB( 231, 242, 255 ) }  ;
      }, ;
      { { 1/2, nRGB( 219, 230, 244 ), nRGB( 207-50, 221-25, 255 ) }, ;
        { 1/2, nRGB( 201-50, 217-25, 255 ), nRGB( 231, 242, 255 ) }  ;
      } ) }


SetBalloon( .t. )

DEFINE window oDlgw TITLE "Test BTNBMP" from 0,0 to 600,700 pixel

define buttonbar oBar of oDlgw size 110, 40 2007

define font oFont name "ARIAL" size -10,0

  define button oBotBar0 of oBar file "off.bmp","on.bmp","dis.bmp","ene.bmp" PROMPT "Files" left
  
  define button oBotBar1 of oBar file "off.bmp", "on.bmp",nil,"ene.bmp" ;
  tooltip "USO ::lBoxSelect DESACTIVADO" 
  
  define button oBotBar2 of oBar file "off.bmp", "on.bmp",nil,"ene.bmp" noborder;
  tooltip "USO ::lBoxSelect ACTIVADO"

  define button oBotBar3 of oBar file "butt1upD.bmp", "butt1do.bmp",nil,"butt1upL.bmp" noborder;
  tooltip "USO ::lBoxSelect DESACTIVADO" 

  define button oBotBar4 of oBar file "cara.bmp" noborder adjust;
  tooltip "Con ADJUST"

  define button oBotBar5 of oBar file "cara.bmp" noborder;
  tooltip "Sin ADJUST"

  oBotBar0:bClrGrad := { | lInvert | If( lInvert, ;
      { { 1/3, nRGB( 255, 253, 222 ), nRGB( 255, 231, 151 ) }, ;
        { 2/3, nRGB( 255, 215,  84 ), nRGB( 255, 233, 162 ) }  ;
      }, ;
      { { 1/2, nRGB( 219, 230, 244 ), nRGB( 207-50, 221-25, 255 ) }, ;
        { 1/2, nRGB( 201-50, 217-25, 255 ), nRGB( 231, 242, 255 ) }  ;
      } ) }

  oBotBar1:bClrGrad := bGrad
  oBotBar2:bClrGrad := bGrad
  oBotBar3:bClrGrad := bGrad
  

  oBotBar1:lBoxSelect := .f.
  oBotBar3:lBoxSelect := .f.

  @ 100, 5 BTNBMP oBot01 OF oDlgw SIZE 200, 70 WHEN lWhen ;
   font oFont file "off.bmp", "on.bmp","DIS.BMP" right //action msginfo( "si" )
  
  @ 250, 5 BTNBMP oBot02 OF oDlgw SIZE 200, 70 noborder ADJUST TRANSPARENT;
  file  "butt1upD.bmp", "butt1do.bmp",nil,"butt1upL.bmp" font oFont;
  action ( if( (lWhen := !lWhen), oBot01:SetText( "&Test" ), oBot01:SetText( "" ) ), oBot01:refresh() );
  tooltip "Presione para Activar/Desactivar Boton Anterior"

  @ 350, 5 BTNBMP oBot03 OF oDlgw SIZE 90, 70 noborder ;
  file  "butt3up.bmp", "butt3do.bmp" adjust tooltip "Activa/Descativa 1er boton de la barra";
  action ( if ( ! IsWindowEnabled( oBotBar0:hWnd ), oBotBar0:enable(), oBotBar0:disable() ) )

  @ 450, 5 BTNBMP oBot04 PROMPT "Test &2" OF oDlgw SIZE 200, 70 WHEN lWhen ;
  file  "butt2up.bmp", "butt2do.bmp", "dis.bmp" adjust font ofont 

  oBot02:bGotFocus := {|| ahOldBmp[ 1 ] := oBot02:hBitmap1, ;
                          ahOldBmp[ 2 ] := oBot02:hPalette1,;
                          oBot02:hBitmap1 := ahOver[ 1 ],;
                          oBot02:hPalette1 := ahOver[ 2 ],;
                          oBot02:refresh() }
                          
  oBot02:bLostFocus := {||oBot02:hBitmap1 := ahOldBmp[ 1 ],;
                          oBot02:hPalette1 := ahOldBmp[ 2 ],;
                          afill( ahOldBmp, NIL ),;
                          oBot02:refresh() }

  oBot01:SetColor( CLR_BLACK, CLR_CYAN )
  
ACTIVATE window oDlgw on init oBot02:setfocus()

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