Sugerencia de cambio a clase: TRibbonBar

Sugerencia de cambio a clase: TRibbonBar

Postby csincuir » Sat Jun 11, 2016 1:19 pm

Hola a todos,
Dicen que "En gustos se rompen generos", y como he estado trabajando en hacer un nuevo menu, con la clase TRibbonBar, me gusta la opcion 2010, por sus separadores de los grupos, pero no me gusta que los pestañas de los tabs, esten redondeadas:
Image

Me gustan las pestañas rectas de la opcion 2013, pero no me gusta que tenga un fondo azul, ni tampoco me gusta el separador de los grupos.
Image

Me gusta mas la combinacion de las dos opciones 2010 y 2013:
Image

Asi, que si a Antonio le parece agregar el pequeño cambio que hice a la clase TRibbonBar, para escoger entre el redondeo en las pestañas de los tabs, les copio los cambios que hice en esta clase para tener esta funcionalidad en la TRibbonBar:

Agregue la variable nRoundBox en la defincion de los DATA de la clase, que contendra el numero de redendeo de las tabs:
Code: Select all  Expand view
DATA nRoundBox

En el metodo NEW, inicializar esta variable nRoundBox:
Code: Select all  Expand view
 
...
::aPrompts = CheckArray( aPrompts )
::nStart   = nStart

::nRoundBox := 5
IF l2013
   ::nRoundBox := 0
END
 

Y por último, cambiar en los metodos Paint(), y PaintFld(), en las funciones RoundBox(), las decisiones para colocar el numero del redondeo de las tabas, por esta nueva variable nRoundBox:
Code: Select all  Expand view

...
   if ::oBackStage == NIL .OR. ! ::oBackStage:lVisible
      RoundBox( hDCMem, 1, nTop-1, aRect[ 4 ]+1, aRect[ 3 ] - 2,;
               If( ::l2013, 0, 7 ), If( ::l2013, 0, 7 ), ::nClrBoxOut )
 

De esta forma:
Code: Select all  Expand view

...
METHOD Paint() CLASS TRibbonBar
...
if ::oBackStage == NIL .OR. ! ::oBackStage:lVisible
      RoundBox( hDCMem, 1, nTop-1, aRect[ 4 ]+1, aRect[ 3 ] - 2,;
                ::nRoundBox, ::nRoundBox, ::nClrBoxOut )
      RoundBox( hDCMem, 2, nTop  , aRect[ 4 ], aRect[ 3 ] - 3, ::nRoundBox,;
                ::nRoundBox, ::nClrBoxIn )
endif
 

Code: Select all  Expand view

...
METHOD PaintFld( nPrompt, hDCMem, nType )  CLASS TRibbonBar
...
do case
      case nType == 1
         FillRect( hDCMem, { nRow - 2, nCol - 3, nRow + ::nHeightFld - 1,  nCol + ::aSizes[ nPrompt ] + 3 }, hBrush2 )
         GradientFill( hDCMem, nRow, nCol + 1, nRow + ::nHeightFld - 1, nCol +  ::aSizes[ nPrompt ], aGradFld )
         RoundBox( hDCMem, nCol - 1, nRow - 1,  nCol+::aSizes[ nPrompt ] + 1, nRow + ::nHeightFld + 3,;
                  ::nRoundBox, ::nRoundBox, ::nClrBoxOut )
         RoundBox( hDCMem, nCol, nRow,  nCol + ::aSizes[ nPrompt ], nRow + ::nHeightFld + 3,;
                 ::nRoundBox, ::nRoundBox, ::nClrBoxIn )

      case nType == 2
         if ! ::l2010 .and. nPrompt != ::nStart
            GradientFill( hDCMem, nRow, nCol - 3, nRow + ::nHeightFld - 2, nCol +  ::aSizes[ nPrompt ] + 3, ::aGradHigh )
         endif
         GradientFill( hDCMem, nRow + 1, nCol, nRow + ::nHeightFld + 1, nCol +  ::aSizes[ nPrompt ], aGradFld )
         RoundBox( hDCMem, nCol - 1, nRow - 1,  nCol+::aSizes[ nPrompt ] + 1,;
                   nRow + ::nHeightFld + 3, ::nRoundBox, ::nRoundBox, ::nClrBoxSelOut )
         RoundBox( hDCMem, nCol, nRow,  nCol + ::aSizes[ nPrompt ], nRow + ::nHeightFld + 3,;
                  ::nRoundBox, ::nRoundBox, ::nClrBoxSelIn )

      case nType == 3
         if ::aEnable[ nPrompt ]
            if ::l2010 .or. nPrompt == ::nStart
               GradientFill( hDCMem, nRow + 1, nCol, nRow + ::nHeightFld + 1,nCol +  ::aSizes[ nPrompt ], aGradFld )
            else
               GradientFill( hDCMem, nRow + 1, nCol, nRow + ::nHeightFld + 1,nCol +  ::aSizes[ nPrompt ], ::aGradOver )
            endif
            if nPrompt != ::nStart
               RoundBox( hDCMem, nCol - 1, nRow - 1,  nCol+::aSizes[ nPrompt ] + 1, nRow + ::nHeightFld + 3, ::nRoundBox, ::nRoundBox, ::nClrBoxOut )
               RoundBox( hDCMem, nCol, nRow,  nCol + ::aSizes[ nPrompt ], nRow + ::nHeightFld + 3, ::nRoundBox, ::nRoundBox, ::nClrBoxIn )
            else
               RoundBox( hDCMem, nCol - 1, nRow ,  nCol+::aSizes[ nPrompt ] + 1, nRow + ::nHeightFld + 3, ::nRoundBox, ::nRoundBox, ::nClrBoxOut )
            endif

         else
            FillRect( hDCMem, { nRow - 2, nCol - 2, nRow + ::nHeightFld - 1,  nCol + ::aSizes[ nPrompt ] + 2 }, hBrush2 )
         endif

      case nType == 4 // unselect
         if nPrompt == ::nStart
            GradientFill( hDCMem, nRow + 1, nCol, nRow + ::nHeightFld + 1,nCol +  ::aSizes[ nPrompt ], aGradFld )
            RoundBox( hDCMem, nCol - 1, nRow ,  nCol+::aSizes[ nPrompt ] + 1, nRow + ::nHeightFld + 3, ::nRoundBox, ::nRoundBox, ::nClrBoxOut )
            FillRect( hDCMem, { nRow + ::nHeightFld - 1, nCol - 1, nRow + ::nHeightFld + 3, nCol + ::aSizes[ nPrompt ] + 1 }, hBrush3 )
...
 

Y para utilizar, esta nueva opcion, se haria de esta forma:
Code: Select all  Expand view

 DEFINE RIBBONBAR oRibbon PROMPTS " Tab01 "," Tab02 "," Tab03 "," Tab04 "," Tab05 " OF oWnd ;
          HEIGHT 100 TOPMARGIN 25 2010
         
   oRibbon:nRoundBox := 0        
 


Saludos cordiales.

Carlos.
csincuir
 
Posts: 396
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: Sugerencia de cambio a clase: TRibbonBar

Postby csincuir » Sat Jun 11, 2016 1:45 pm

Se me olvido comentar, que estoy utilizando la version de FWH 1604.

Saludos.

Carlos.
csincuir
 
Posts: 396
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: Sugerencia de cambio a clase: TRibbonBar

Postby cnavarro » Mon Jun 13, 2016 11:09 am

Me parece buena implementación, como tú dices "para gustos, los colores"

También se puede cambiar la DATA ::aGradFld
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Sugerencia de cambio a clase: TRibbonBar

Postby José Luis Sánchez » Tue Oct 25, 2016 3:20 pm

Hola Carlos,

Me ha gustado mucho el efecto y lo he implementado en mis programas. Me gustaría saber como cambiar el pintado del botón seleccionado de la cinta, para poner un color plano al estilo de PicPick, tal como aparece en la imagen. Los colores que se usa son azul fuerte y claro.

Image

Saludos
User avatar
José Luis Sánchez
 
Posts: 539
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: Sugerencia de cambio a clase: TRibbonBar

Postby Antonio Linares » Tue Oct 25, 2016 4:32 pm

José Luis,

Prueba asi:

oRBar:aGradFld = { | nOpt | { { 1, CLR_WHITE, CLR_WHITE } } }
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 79 guests