colores en BUTTON

colores en BUTTON

Postby colthop » Tue Mar 03, 2009 9:08 am

Hola que tal:

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

Code: Select all  Expand view
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.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: colores en BUTTON

Postby Daniel Garcia-Gil » Tue Mar 03, 2009 2:36 pm

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

Re: colores en BUTTON

Postby colthop » Wed Mar 04, 2009 10:59 am

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.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: colores en BUTTON

Postby dobfivewin » Thu Mar 05, 2009 8:25 am

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
dobfivewin
 
Posts: 325
Joined: Sun Feb 03, 2008 11:04 pm
Location: Argetnina

Re: colores en BUTTON

Postby Daniel Garcia-Gil » Thu Mar 05, 2009 4:25 pm

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 los caracteres 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 muchos cambios 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  Expand view
#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
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: colores en BUTTON

Postby empresoft » Thu Mar 05, 2009 5:26 pm

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

Re: colores en BUTTON

Postby Daniel Garcia-Gil » Thu Mar 05, 2009 8:31 pm

Esta clase no dibuja bordes redondeados, porque creo que hace el boton "a mano", no depende de window
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: colores en BUTTON

Postby empresoft » Fri Mar 06, 2009 2:08 am

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

Abraços

Luiz Fernando
FWH 804,XHARBOUR 1.1,XDEV,PELLES
empresoft
 
Posts: 37
Joined: Mon Nov 12, 2007 12:46 pm
Location: BRAZIL

Re: colores en BUTTON

Postby colthop » Fri Mar 06, 2009 8:07 am

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.
colthop
 
Posts: 505
Joined: Sat Apr 22, 2006 9:09 am
Location: Madrid - España

Re: colores en BUTTON

Postby Daniel Garcia-Gil » Sat Mar 07, 2009 3:53 am

Carlos....

Son muchas modificaciones y ajustes que que le he hecho...
Code: Select all  Expand view
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 los cambios implementados, por ser tantos, no me es posible publicar los cambios...

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot], LuisPonce and 41 guests