Hi Roger
In the sample program below, Is it possible to add a dropdown menu to the toolbar button ?
Thanks
Joe
#INCLUDE "dcdialog.CH"
#INCLUDE "XCodeJock.CH"
#INCLUDE "CommandBars.CH"
#INCLUDE "Definitions.CH"
#INCLUDE "Appevent.CH"
#INCLUDE "fileio.CH"
#INCLUDE "dcbitmap.CH"
#DEFINE TRUE .t.
#DEFINE FALSE .f.
FUNCTION Main()
LOCAL Getlist[0], Getoptions, oCommandBars, oStatic, nTheme, oDlg, nHandle, ;
aDir := Directory(), oBrowse
nHandle := DllLoad('..\..\..\BIN19\DCRES.DLL')
DC_BitmapResourceFile( nHandle )
nTheme := xtpThemeWhidbey
CJCOMMANDBARS oCommandBars ;
VISUALTHEME nTheme ;
SHOWTEXTBELOWICONS TRUE ;
SCALEMODE xtpScalePixel
@0,0 DCSAY '' OBJECT oStatic COLOR GRA_CLR_RED, GRA_CLR_WHITE ;
SIZE 120, 20 ;
FONT '16.Arial Bold' SAYWORDBREAK ;
SAYOPTIONS XBPSTATIC_TEXT_VCENTER + XBPSTATIC_TEXT_CENTER + XBPSTATIC_TEXT_WORDBREAK ;
EVAL {|o|o:setCaption('Mini Toolbar Test Program')}
*/
@ 2.5,0 DCBROWSE oBrowse DATA aDir PARENT oStatic ;
FONT '10.Lucida Console';
SIZE DCGUI_PARENTWIDTH, DCGUI_PARENTHEIGHT-2.5 PIXEL //;
// RESIZE DCGUI_RESIZE_RESIZEONLY
DCBROWSECOL ELEMENT 1 HEADER 'File Name' WIDTH 25 PARENT oBrowse //250
DCBROWSECOL ELEMENT 2 HEADER 'File Size' WIDTH 10 PARENT oBrowse //100
DCBROWSECOL ELEMENT 3 HEADER 'File Date' WIDTH 10 PARENT oBrowse //100
DCBROWSECOL ELEMENT 4 HEADER 'File Time' WIDTH 10 PARENT oBrowse //100
DCBROWSECOL ELEMENT 5 HEADER 'File Time 1' WIDTH 10 PARENT oBrowse //100
DCBROWSECOL ELEMENT 6 HEADER 'File Time 2' WIDTH 10 PARENT oBrowse //100
DCGETOPTIONS; // PIXEL
CLOSEQUERY MSG {||SaveState(oCommandBars),.t.} ;
COLOR GRA_CLR_WHITE RESIZEDEFAULT DCGUI_RESIZE_RESIZEONLY;
HIDE
DCREAD GUI TITLE 'CodeJock Command Bar w/ToolBar' OPTIONS GetOptions ;
EVAL {|o|oDlg := o, ;
BuildToolBar( oCommandBars, oDlg, GetList ), ;
o:show()} ;
SETAPPWINDOW
RETURN nil
* -----------
PROC appsys ; RETURN
* -----------
STATIC FUNCTION BuildToolbar( oCommandBars, oDlg, GetList )
LOCAL oControl, oMenuBar, iCount, cIconPath, aIconArray[5], oOptions, ;
oToolBar1, oToolBar2, oImageManager
oOptions := oCommandBars:getProperty("options")
// Re-Add the Menu Bar
CJADDTOOLBAR oToolBar1 NAME 'ToolBar1' PARENT oCommandBars ;
ALIGN xtpBarTop ICONSIZE 16,16 ; // 32,32
ShowGripper TRUE ;
TEXTORIENTATION xtpBarTextHorizontal
// oToolBar1:enableDocking(xtpFlagStretchedShared)
// oOptions:showExpandButtonAlways := .t.
cIconPath := '.\icons\'
//Add buttons
FOR iCount := ID_STANDARD_1 TO ID_STANDARD_19
CJADDTOOLBUTTON oControl ;
ID iCount ;
PARENT oToolBar1 ;
CATEGORY "Standard" ;
TOOLTIP 'Standard Button ' + Alltrim(Str(iCount)) ;
CAPTION "Standard " + Alltrim(Str(iCount)) ;
ACTION ActionBlock(iCount,oCommandBars,oDlg) ;
ICON cIconPath + "standard_" + Alltrim(Str(iCount - 500)) + ".ico" ;
DESCRIPTIONTEXT 'Just Testing' ;
STYLE xtpButtonIconAndCaptionBelow
NEXT
CJADDTOOLBAR oToolBar2 NAME 'ToolBar 2' PARENT oCommandBars ALIGN xtpBarBottom ICONSIZE 24,16 ShowGripper TRUE
oToolBar2:enableDocking(xtpFlagStretchedShared)
FOR iCount := ID_STANDARD_16 TO ID_STANDARD_19
CJADDTOOLBUTTON oControl ;
ID iCount ;
PARENT oToolBar2 ;
CATEGORY "Small" ;
TOOLTIP 'Small Button ' + Alltrim(Str(iCount)) ;
CAPTION "Small " + Alltrim(Str(iCount)) ;
ACTION ActionBlock(iCount,oCommandBars,oDlg) ;
ICON cIconPath + "standard_" + Alltrim(Str(iCount - 500)) + ".ico"
NEXT
CJADDTOOLBUTTON oControl ;
ID BITMAP_BUG_M ;
PARENT oToolBar1 ;
CATEGORY "Small" ;
TOOLTIP "I am a normal Bug" ;
CAPTION "Bug" ;
HOTKEY 0, VK_F12 ;
ACTION {||DC_WinAlert('test')} ;
ICON BITMAP_BUG_M
CJADDTOOLBUTTON oControl ;
ID BITMAP_OBJECT_M ;
PARENT oToolBar2 ;
CATEGORY "Small" ;
TOOLTIP "I am a small Object" ;
CAPTION "Small Object" ;
HOTKEY FSHIFT + FCONTROL, Asc('Z') ;
ACTION {||DC_SpawnUrl('http://donnay-software.com')} ;
ICON BITMAP_OBJECT_M
aIconArray[1] := ID_STANDARD_15
aIconArray[2] := ID_STANDARD_16
aIconArray[3] := ID_STANDARD_17
aIconArray[4] := ID_STANDARD_18
aIconArray[5] := ID_STANDARD_19
CJLoadBitmap cIconPath + 'usertools.bmp' ;
ID aIconArray STATE xtpImageNormal PARENT oCommandBars:icons
oOptions:UseDisabledIcons := .T.
oCommandBars:EnableCustomization(.T.)
oOptions:updatePeriod := 1000
oCommandBars:update := {||oCommandBars:ResizeDrawingArea(oDlg,.t.,GetList)}
RestoreState(oCommandBars)
oMenuBar := oCommandBars:AddMenuBar("Menu")
oMenuBar:visible := .f.
oCommandBars:recalcLayout()
oCommandBars:ResizeDrawingArea(oDlg,.t.,GetList)
RETURN nil
* ---------------
STATIC FUNCTION ActionBlock( nId, oCommandBars, oDlg )
RETURN {||DC_MsgBox('You clicked on ' + Alltrim(Str(nId))), ;
oCommandBars:resizeDrawingArea(oDlg)}
/*
* ---------------
STATIC FUNCTION SaveState( oCommandBars )
LOCAL cXml, nHandle
cXml := oCommandBars:SaveStateToXmlString( 'ToolBar1')
nHandle := FCreate('ToolbarDemo.Xml')
FWrite(nHandle,cXml )
FClose(nHandle)
RETURN nil
* ---------------
STATIC FUNCTION RestoreState( oCommandBars )
LOCAL cXml, cFileName
cFileName := 'ToolbarDemo.Xml'
IF Fexists(cFileName)
cXml := MemoRead(cFileName)
oCommandBars:LoadStateFromXmlString('ToolBar1',cXml)
ENDIF
RETURN nil
*/
* ------------
STATIC FUNCTION SaveState( oCommandBars )
LOCAL cTxt, nHandle
cTxt := oCommandBars:SaveStateToString( .t.,.t.,.t.)
nHandle := FCreate('ToolbarDemo.txt')
FWrite(nHandle,cTxt )
FClose(nHandle)
RETURN nil
* ---------------
STATIC FUNCTION RestoreState( oCommandBars, oRibbonbar )
LOCAL cTxt, cFileName
cFileName := 'ToolbarDemo.txt'
IF Fexists(cFileName)
cTxt := MemoRead(cFileName)
oCommandBars:LoadStateFromString(cTxt ,.t.,.t.,.t.)
ENDIF
RETURN nil
CodeJock ToolBar
Re: CodeJock ToolBar
DCPUSHBUTTONXP has a menu (dropdown) option. Use that instead of CJ!
And please use the "code" tag to mark the code in your messages, Joe. It's much easier to read then.
And please use the "code" tag to mark the code in your messages, Joe. It's much easier to read then.
Best regards,
Tom
"Did I offend you?"
"No."
"Okay, give me a second chance."
Tom
"Did I offend you?"
"No."
"Okay, give me a second chance."
Re: CodeJock ToolBar
I use DCPUSHBUTTONXP extensively and I am aware of that feature but just want to know if Donnay implemented it in Codejock Toolbar.
Joe
Joe
Re: CodeJock ToolBar
hi,
i wonder why you want to use Codejock Toolbar and not XbpToolbar while both are same ("ToolbarWindow32")
Xbase++ XbpToolbar() have XbpToolBarButtonMenuItem()
native DXE_Toolbar use same Constante XBPTOOLBAR_BUTTON_DROPDOWN and Snytax.
p.s. DXE LIB also have REBAR() to enhance Toolbar(s)
i wonder why you want to use Codejock Toolbar and not XbpToolbar while both are same ("ToolbarWindow32")
Yes ... but i don't know how with CodejockIs it possible to add a dropdown menu to the toolbar button ?
Xbase++ XbpToolbar() have XbpToolBarButtonMenuItem()
native DXE_Toolbar use same Constante XBPTOOLBAR_BUTTON_DROPDOWN and Snytax.
p.s. DXE LIB also have REBAR() to enhance Toolbar(s)
greetings by OHR
Jimmy
Jimmy
Re: CodeJock ToolBar
I haven't done anything with XCodeJock in a long time.
I found that just about any kind of GUI look or function could be written using DC* commands in Xbase++.
This requires no ActiveX.
I always hated command bars.
They are complicated to write and maintain and have always seemed to be convuluted and
Most likely, a menu can be added because you can add anything to a push button.
Look at \exp20\samples\menu\buttonmenu.prg
I found that just about any kind of GUI look or function could be written using DC* commands in Xbase++.
This requires no ActiveX.
I always hated command bars.
They are complicated to write and maintain and have always seemed to be convuluted and
Most likely, a menu can be added because you can add anything to a push button.
Look at \exp20\samples\menu\buttonmenu.prg
The eXpress train is coming - and it has more cars.
Re: CodeJock ToolBar
Thanks all
I examined the xcodejock.ch and made ONE line modification and I got it working as shown below.
I examined the xcodejock.ch and made ONE line modification and I got it working as shown below.