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:

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.

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

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:
En el metodo NEW, inicializar esta variable nRoundBox:
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:
De esta forma:
Y para utilizar, esta nueva opcion, se haria de esta forma:
Saludos cordiales.
Carlos.
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:

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.

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

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:
DATA nRoundBoxEn el metodo NEW, inicializar esta variable nRoundBox:
...
::aPrompts = CheckArray( aPrompts )
::nStart = nStart
::nRoundBox := 5
IF l2013
::nRoundBox := 0
ENDY 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:
...
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:
...
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...
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:
DEFINE RIBBONBAR oRibbon PROMPTS " Tab01 "," Tab02 "," Tab03 "," Tab04 "," Tab05 " OF oWnd ;
HEIGHT 100 TOPMARGIN 25 2010
oRibbon:nRoundBox := 0Saludos cordiales.
Carlos.
