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:
- 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.