#INCLUDE "FiveWin.CH" //FWH10.2
#include "Ribbon.ch"
static oRBar
static oBtn101, oBtn102, oBtn103
FUNCTION Main()
LOCAL aArea := GETWORKAREA()
public oWnd
Define Window oWnd;
FROM aArea[1], aArea[2] TO aArea[3], aArea[4];
PIXEL;
STYLE nOr( WS_POPUP, WS_VISIBLE )
//NEW RIBBON
DEFINE RIBBONBAR oRBar OF oWnd;
PROMPTS " Archivos ";
HEIGHT 230;
TOPMARGIN 52
//Buttons
@ 1, oWnd:nWidth()-48 BTNBMP oBtn101;
OF oRBar ;
SIZE 48, 48 ;
PROMPT "Exit";
PIXEL;
ACTION ( oWnd:End() )
@ 1, oWnd:nWidth()-96 BTNBMP oBtn102;
OF oRBar ;
PROMPT "Max" + CRLF + "Rest";
SIZE 48, 48 ;
PIXEL;
ACTION ( oWnd:Move( aArea[1], aArea[ 2 ], aArea[4], aArea[ 3 ] ), oRBar:refresh() )
@ 1, oWnd:nWidth()-144 BTNBMP oBtn103;
OF oRBar ;
PROMPT "Min";
SIZE 48, 48 ;
PIXEL;
ACTION ( oWnd:Minimize() )
//Grupo 1
ADD GROUP oGr20;
RIBBON oRBar;
TO OPTION 1;
PROMPT "Trabajando con Camareros...";
WIDTH 180
@ 15, 15 ADD BUTTON oBtn20;
GROUP oGr20;
SIZE 150, 130;
ROUND;
action Ribbon( oWnd )
activate window oWnd maximized;
on init oWnd:Move( aArea[1], aArea[ 2 ], aArea[4], aArea[ 3 ] )
RETURN NIL
//***********************************************************************//
FUNCTION fhTaskBar() //Of Daniel Garcia-Gil
local hTaskBar := FindWindow("Shell_TrayWnd", 0)
local aClientRect := GetClientRect( hTaskBar )
RETURN aClientRect[ 3 ]
Function Ribbon( oWnd )
local oDlg
local aBtn := Array( 20 )
local aGrp := Array( 5 )
local oBrush
local oMenu
local oBlur
oBlur = BlurEffect( oWnd )
MENU oMenu POPUP 2007
MENUITEM "Style Set" FILE "..\bitmaps\styleset161.BMP"
MENUITEM "Colors"
MENUITEM "Font"
ENDMENU
DEFINE BRUSH oBrush FILE "..\bitmaps\backgrnd\boards.bmp"
DEFINE DIALOG oDlg title "Test RibbonBar Own Control " + FWVERSION SIZE 600,600 PIXEL BRUSH oBrush
@ 010, 010 RBGROUP aGrp[ 1 ] PROMPT "Test" of oDlg SIZE 90, 40
@ 010, 060 RBGROUP aGrp[ 2 ] PROMPT "Transparent" of oDlg SIZE 90, 40 TRANSPARENT
@ 010, 110 RBGROUP aGrp[ 3 ] PROMPT "Own Color" of oDlg SIZE 90, 40 ;
GRADIANT { { 0.1, RGB( 254, 154, 128 ), RGB( 254, 154, 128 ) }, ;
{ 0.9, RGB( 252, 85, 40 ), RGB( 181, 61, 29 ) } };
LINECOLORS RGB( 249, 194, 179 ), RGB( 181, 61, 29 );
CAPTIONGRAD { { 1, RGB( 239, 56, 6 ), RGB( 239, 56, 6 ) } };
TEXTCOLOR CLR_WHITE
@ 100, 05 RBBTN aBtn[ 1 ] PROMPT "Say Button" SAYBUTTON OF oDlg SIZE 50, 15 CENTER ROUND BORDER;
ACTION( MsgInfo( "Say Button" ) )
@ 100, 60 RBBTN aBtn[ 2 ] PROMPT "Button" OF oDlg SIZE 50, 15 CENTER ROUND BORDER;
GRADIANT { { 1/3, nRGB( 254, 154, 128 ), nRGB( 254, 154, 128 ) } , ;
{ 2/3, nRGB( 252, 85, 40 ), nRGB(181, 61, 29 ) } } ;
LINECOLORS RGB( 249, 194, 179 ), RGB( 181, 61, 29 )
@ 120, 005 RBBTN aBtn[ 4 ] PROMPT "Most Left" OF oDlg SIZE 70, 15 MOSTLEFT ROUND BORDER ;
BITMAP "..\bitmaps\textalignleft16.bmp"
@ 120, 080 RBBTN aBtn[ 5 ] PROMPT "Left" OF oDlg SIZE 70, 15 LEFT ROUND BORDER ;
BITMAP "..\bitmaps\textalignleft16.bmp"
@ 140, 005 RBBTN aBtn[ 6 ] PROMPT "Center" OF oDlg SIZE 70, 20 CENTER ROUND BORDER ;
BITMAP "..\bitmaps\textaligncenter16.bmp"
@ 165, 005 RBBTN aBtn[ 7 ] PROMPT "Most Right" OF oDlg SIZE 70, 15 MOSTRIGHT ROUND BORDER ;
BITMAP "..\bitmaps\textalignright16.bmp"
@ 165, 080 RBBTN aBtn[ 8 ] PROMPT "Right" OF oDlg SIZE 70, 15 RIGHT ROUND BORDER ;
BITMAP "..\bitmaps\textalignright16.bmp"
@ 100, 165 RBBTN aBtn[ 9 ] PROMPT "Rect Corner" OF oDlg SIZE 50, 15 CENTER BORDER
@ 100, 220 RBBTN aBtn[ 10 ] OF oDlg BITMAP "..\bitmaps\select16.BMP" ;
SIZE 35, 10 PROMPT "Popup" MOSTLEFT ROUND POPUP BORDER
@ 130, 165 RBBTN aBtn[ 11 ] PROMPT "SplitPopup" OF oDlg SIZE 35, 50;
SPLITPOPUP ROUND BORDER MENU oMenu BITMAP "..\bitmaps\textaligncenter16.bmp"
@ 110, 220 RBBTN aBtn[ 12 ] OF oDlg BITMAP "..\bitmaps\select16.BMP" MENU oMenu;
SIZE 70, 10 PROMPT "Action" MOSTLEFT ROUND POPUP BORDER ;
ACTION( MsgInfo( "Action" ) )
@ 130, 220 RBBTN aBtn[ 13 ] PROMPT "Popup" OF oDlg SIZE 35, 50;
SPLITPOPUP ROUND BORDER MENU oMenu BITMAP "..\bitmaps\textaligncenter16.bmp";
ACTION( MsgInfo( "Action" ) ) CENTER
@ 200, 005 RBBTN aBtn[ 14 ] PROMPT "Transparent" OF oDlg SIZE 50, 15 CENTER BORDER TRANSPARENT
@ 200, 080 RBBTN aBtn[ 15 ] OF oDlg BITMAP "..\bitmaps\AlphaBmp\TEXT.BMP" ;
SIZE 40, 60 PROMPT "ALPHA" TOP TRANSPARENT
@ 200, 150 RBBTN aBtn[ 16 ] OF oDlg BITMAP "..\bitmaps\textalignleft16.bmp" GROUPBUTTON FIRST SIZE 12, 10 ROUND ;
ACTION( ChangeSelect( { aBtn[ 16 ], aBtn[ 17 ], aBtn[ 18 ], aBtn[ 19 ] } ) )
@ 200, 162 RBBTN aBtn[ 17 ] OF oDlg BITMAP "..\bitmaps\textaligncenter16.bmp" GROUPBUTTON SIZE 12, 10 ROUND ;
ACTION( ChangeSelect( { aBtn[ 17 ], aBtn[ 16 ], aBtn[ 18 ], aBtn[ 19 ] } ) )
@ 200, 174 RBBTN aBtn[ 18 ] OF oDlg BITMAP "..\bitmaps\textalignright16.bmp" GROUPBUTTON SIZE 12, 10 ROUND;
ACTION( ChangeSelect( { aBtn[ 18 ], aBtn[ 17 ], aBtn[ 16 ], aBtn[ 19 ] } ) )
@ 200, 186 RBBTN aBtn[ 19 ] OF oDlg BITMAP "..\bitmaps\textalignjustify16.bmp" GROUPBUTTON END SIZE 12, 10 ROUND;
ACTION( ChangeSelect( { aBtn[ 19 ], aBtn[ 18 ], aBtn[ 17 ], aBtn[ 16 ] } ) )
ACTIVATE DIALOG oDlg CENTERED
AEval( aGrp, { | o | if( o != NIL, o:End(), ) } )
oBrush:End()
oBlur:End()
return nil
Procedure ChangeSelect( aObj )
local n
aObj[ 1 ]:lSelected := .t.
for n = 2 to len( aObj )
aObj[ n ]:lSelected := .f.
aObj[ n ]:Refresh()
next
return
Function ChangeBmp( oBmp )
static lWork
if lWork == nil
lWork := .f.
endif
if !lWork
lWork := .t.
nIndex+=nAvance
if nIndex > LEN( aBmp )
nAvance := -1
nIndex := LEN( aBmp ) + nAvance
elseif nIndex == 0
nAvance := 1
nIndex := 1 + nAvance
endif
oBmp:hBitmap = aBmp[ nIndex ]
oBmp:Refresh()
lWork := .f.
endif
return nil
//----------------------------------------------------------------------------//
Function BackStage( oRBar )
local oBackStage
DEFINE BACKSTAGE oBackStage
DEFINE BSBUTTON OF oBackStage PROMPT "Save" ;
BITMAP "..\bitmaps\alphabmp\bs_save.bmp" ACTION Msginfo( oOpt:cPrompt );
GRADIENT { { 1, nRGB( 255, 255, 0 ), nRGB( 255, 255, 255 ) } }
DEFINE BSBUTTON OF oBackStage PROMPT "Save As" ;
BITMAP "..\bitmaps\alphabmp\bs_saveas.bmp" ACTION Msginfo( oOpt:cPrompt );
GRADIENT { { 1, nRGB( 242, 96, 96 ), nRGB( 195, 37, 37 ) } };
COLORTEXT CLR_BLACK, CLR_WHITE
DEFINE BSBUTTON OF oBackStage PROMPT "Open" ;
BITMAP "..\bitmaps\alphabmp\bs_open.bmp" ACTION Msginfo( oOpt:cPrompt )
DEFINE BSBUTTON OF oBackStage PROMPT "Close";
BITMAP "..\bitmaps\alphabmp\bs_close.bmp" ACTION Msginfo( oOpt:cPrompt )
DEFINE BSSELECT OF oBackStage PROMPT "Information";
COLORTEXT NIL, CLR_HRED ACTION Msginfo( oOpt:cPrompt )
DEFINE BSSELECT OF oBackStage PROMPT "New" ACTION Msginfo( oOpt:cPrompt )
DEFINE BSSELECT OF oBackStage PROMPT "Print" ACTION Msginfo( oOpt:cPrompt )
DEFINE BSSELECT OF oBackStage PROMPT "Save / Send" ACTION Msginfo( oOpt:cPrompt );
GRADIENT { { 1, nRGB( 255, 255, 0 ), nRGB( 255, 255, 255 ) } }
DEFINE BSSELECT OF oBackStage PROMPT "Help" ACTION Msginfo( oOpt:cPrompt );
COLORS nRGB( 242, 96, 96 ), nRGB( 195, 37, 37 )
DEFINE BSBUTTON OF oBackStage PROMPT "Option" ;
BITMAP "..\bitmaps\alphabmp\bs_options.bmp" ACTION Msginfo( oOpt:cPrompt )
DEFINE BSBUTTON OF oBackStage PROMPT "Exit" ;
BITMAP "..\bitmaps\alphabmp\bs_exit.bmp" ACTION Msginfo( oRBar:oWnd:End() )
SET BACKSTAGE oBackStage TO oRBar
return nil
//----------------------------------------------------------------------------//
Function TestRes( oWnd )
local oDlg
local oBtn5, oBtn6, obtn7, oBtn8, oBtn9, oBtn10, oBtn11
DEFINE DIALOG oDlg RESOURCE "TEST"
REDEFINE RBBTN ID 100 OF oDlg BITMAP "..\bitmaps\PASTE32.BMP" ;
ACTION ( RIBBON() ) ;
SPLITPOPUP ROUND
REDEFINE RBBTN ID 101 OF oDlg BITMAP "..\bitmaps\cut16.BMP" ;
MOSTLEFT ROUND ;
ACTION ( msginfo( "Cut" ) )
REDEFINE RBBTN ID 102 OF oDlg BITMAP "..\bitmaps\copy16.BMP" ;
PROMPT "Copy" MOSTLEFT ROUND ;
ACTION( msginfo( "Copy" ) )
REDEFINE RBBTN ID 103 OF oDlg BITMAP "..\bitmaps\paste16.BMP" ;
PROMPT "Paste" MOSTLEFT ROUND ;
ACTION( msginfo( "Paste" ) )
REDEFINE RBBTN ID 104 OF oDlg SAYBUTTON
REDEFINE RBBTN oBtn5 ID 105 OF oDlg BITMAP "..\bitmaps\bold16.bmp" GROUPBUTTON FIRST ROUND ;
ACTION( oBtn5:lSelected := !oBtn5:lSelected )
REDEFINE RBBTN oBtn6 ID 106 OF oDlg BITMAP "..\bitmaps\italic16.bmp" GROUPBUTTON ROUND ;
ACTION( oBtn6:lSelected := !oBtn6:lSelected )
REDEFINE RBBTN oBtn7 ID 107 OF oDlg BITMAP "..\bitmaps\underline16.bmp" GROUPBUTTON ROUND Popup
REDEFINE RBBTN oBtn8 ID 108 OF oDlg BITMAP "..\bitmaps\strikethru16.bmp" GROUPBUTTON ROUND;
ACTION( oBtn8:lSelected := !oBtn8:lSelected )
REDEFINE RBBTN oBtn9 ID 109 OF oDlg BITMAP "..\bitmaps\subindex16.bmp" GROUPBUTTON ROUND;
ACTION( oBtn9:lSelected := !oBtn9:lSelected, oBtn10:lSelected := .f., oBtn10:Refresh() )
REDEFINE RBBTN oBtn10 ID 110 OF oDlg BITMAP "..\bitmaps\superindex16.bmp" GROUPBUTTON ROUND ;
ACTION( oBtn10:lSelected := !oBtn10:lSelected, oBtn9:lSelected := .f., oBtn9:Refresh() )
REDEFINE RBBTN oBtn11 ID 111 OF oDlg BITMAP "..\bitmaps\casing16.bmp" GROUPBUTTON END ROUND POPUP
ACTIVATE DIALOG oDlg
return nil
//----------------------------------------------------------------------------//
function AddResource( nHResource, cType )
AAdd( aResources, { cType, nHResource, ProcName( 3 ), ProcLine( 3 ) } )
return nil
//----------------------------------------------------------------------------//
function DelResource( nHResource )
local nAt
if ( nAt := AScan( aResources, { | aRes | aRes[ 2 ] == nHResource } ) ) != 0
ADel( aResources, nAt )
ASize( aResources, Len( aResources ) - 1 )
endif
return nil
//----------------------------------------------------------------------------//
Function BlurEffect( oDialog )
LOCAL hBmp, i
LOCAL hBlur
LOCAL oWnd
LOCAL aRect := GetClientRect( oDialog:hWnd )
local aCoor := GetCoors( oDialog:hWnd )
local nTop := 0//GetSysMetrics( 51 ) + GetSysMetrics( 33 ) + 4
local nLeft := 0//GetSysMetrics( 32 )
oDialog:GetDC()
hBmp := MakeBkBmp( oDialog:hWnd , oDialog:hDC )
hBlur := Blur( hBmp , 4 )
DEFINE WINDOW oWnd STYLE nOr( WS_POPUP, WS_VISIBLE ) ;
FROM aCoor[ 1 ] + nTop, aCoor[ 2 ] + nLeft TO aCoor[ 3 ] - GetSysMetrics( 33 ), aCoor[ 4 ] - nLeft PIXEL
ACTIVATE WINDOW oWnd;
ON PAINT ( PalBmpDraw( hDC , 0 , 0 , hBlur ) );
VALID ( DeleteObject( hBlur ), DeleteObject( hBmp ), .T. )
oWnd:REFRESH()
oDialog:ReleaseDC()
return oWnd
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
HB_FUNC( GETWORKAREA )
{
RECT rect;
memset( &rect, 0x00, sizeof( RECT ) );
SystemParametersInfo( SPI_GETWORKAREA, 0, &rect, 0 );
hb_reta( 4 );
hb_storvnl( ( LONG ) rect.top, -1, 1 );
hb_storvnl( ( LONG ) rect.left, -1, 2 );
hb_storvnl( ( LONG ) rect.bottom, -1, 3 );
hb_storvnl( ( LONG ) rect.right, -1, 4 );
}
#pragma ENDDUMP