Compañeros:
La clase Sbutton es de terceros (de manuel mercado) y la podeis encontrar en las Utilidades de este foro.
En cuanto al código es relativamente simple:
Con photoshop creo los BMP que luego me servirán de BRUSH en los SButton:
DEFINE BRUSH OFamilia FILE ltrim(Camino+'\graficos\botones\brush\'+botonfam->nombre)
DEFINE BRUSH OArticulo FILE ltrim(Camino+'\graficos\botones\brush\'+botonart->nombre)
De esta manera el usuario puede crear sus propias presentaciones de botones.
Luego defino los sbutton de las familias:
REDEFINE SBUTTON obtnF[ 1] ID 4005 OF oDialog brush ofamilia NOBOXTR COLORS { |oBtnF| If( ! oBtnF:lActive, CLR_WHITE, If( oBtnF:lMouseOver, CLR_HRED, If( oBtnF:lPressed, CLR_HRED, CLR_WHITE ) ) ) }
REDEFINE SBUTTON obtnF[ 2] ID 4008 OF oDialog brush ofamilia NOBOXTR COLORS { |oBtnF| If( ! oBtnF:lActive, CLR_WHITE, If( oBtnF:lMouseOver, CLR_HRED, If( oBtnF:lPressed, CLR_HRED, CLR_WHITE ) ) ) }
REDEFINE SBUTTON obtnF[ 3] ID 4011 OF oDialog brush ofamilia NOBOXTR COLORS { |oBtnF| If( ! oBtnF:lActive, CLR_WHITE, If( oBtnF:lMouseOver, CLR_HRED, If( oBtnF:lPressed, CLR_HRED, CLR_WHITE ) ) ) }
...
Luego defino los Sbutton de los articulos:
REDEFINE SBUTTON obtnA[ 1] ID 4018 OF oDialog brush oarticulo NOBOXTR COLORS { |oBtnA| If( ! oBtnA:lActive, CLR_WHITE, If( oBtnA:lMouseOver, CLR_HRED, If( oBtnA:lPressed, CLR_HRED, CLR_WHITE ) ) ) }
REDEFINE SBUTTON obtnA[ 2] ID 4021 OF oDialog brush oarticulo NOBOXTR COLORS { |oBtnA| If( ! oBtnA:lActive, CLR_WHITE, If( oBtnA:lMouseOver, CLR_HRED, If( oBtnA:lPressed, CLR_HRED, CLR_WHITE ) ) ) }
REDEFINE SBUTTON obtnA[ 3] ID 4024 OF oDialog brush oarticulo NOBOXTR COLORS { |oBtnA| If( ! oBtnA:lActive, CLR_WHITE, If( oBtnA:lMouseOver, CLR_HRED, If( oBtnA:lPressed, CLR_HRED, CLR_WHITE ) ) ) }
...
Luego defino los sbutton de la calculadora:
REDEFINE SBUTTON ocal [ 1] ID 4053 OF oDialog prompt '0' brush ocalculadora font oFont2 ROUNDRECT NOBOXTR COLOR { |oCal| If( oCal:lPressed, CLR_HRED, CLR_BLACK ) } action calc('0')
REDEFINE SBUTTON ocal [ 2] ID 4052 OF oDialog prompt '1' brush ocalculadora font oFont2 ROUNDRECT NOBOXTR COLOR { |oCal| If( oCal:lPressed, CLR_HRED, CLR_BLACK ) } action calc('1')
...
Luego hay que asignarle el bAction, el cCaption de las familias/articulos y en mi caso también el brush a cada botton porque el usuario puede asignarle solo texto o texto y BMP a cada boton:
" Parte del codigo lo teneis publicado en
http://fivetechsoft.com/forums/viewtopi ... light=gabo... el resto es codigo simple...
Un saludo y mil gracias a todos
LORENZO.