CommandBars Articles and Tutorials

Adding One or More ToolBars on the Same Row

Author: Mike Palmatier
Platform: Visual Basic 6.0, Visual C#

By default, when a toolbar is added, the toolbar appears on a separate row. Each toolbar added will then appear under the previous toolbar. However, many times it is useful to dock a toolbar next to another on the same row using code.

In the picture below, you can see that toolbar #2 has been docked next to toolbar #1. This was done using code.

Toolbars side by side

The code below provides a helper function that will dock a toolbar to the right of another, regardless of the order that the toolbars are added. This code will allow you to dock a toolbar next to another whether it is vertical or horizontal.

'Parameters:
'   BarToDock - ToolBar to be placed to 
'             - the RIGHT of another ToolBar
'   BarOnLeft - ToolBar that will be on the LEFT side of BarToDock
'   VerticalBar - Set to false if the toolbars are docked at the 
'                 top or bottom of the window (horizontal), set to 
'                 true if the toolbars are on the left or right of 
'                 the window (vertical).

'sample usage:
'   Dim ToolBar1 As CommandBar, ToolBar2 As CommandBar
'   ..........Add controls to toolbars
'   DockRightOf ToolBar2, ToolBar1, False
Private Sub DockRightOf(BarToDock As CommandBar, _
            BarOnLeft As CommandBar, VerticalBar As Boolean)
    Dim Left As Long
    Dim Top As Long
    Dim Right As Long
    Dim Bottom As Long
    Dim LeftBar As CommandBar

    Set LeftBar = BarOnLeft

    CommandBars.RecalcLayout
    BarOnLeft.GetWindowRect Left, Top, Right, Bottom

    LeftBar.GetWindowRect Left, Top, Right, Bottom

    If (VerticalBar = False) Then
        CommandBars.DockToolBar BarToDock, Right, _
                         (Bottom + Top) / 2, LeftBar.Position
    Else
        CommandBars.DockToolBar BarToDock, (Left + Right) _
                                / 2, Bottom, LeftBar.Position
    End If
End Sub
/*
Parameters:
   BarToDock - ToolBar to be placed to the RIGHT 
               of another ToolBar
   BarOnLeft - ToolBar that will be on the LEFT side of BarToDock
   VerticalBar - Set to false if the toolbars are docked at the 
                 top or bottom of the window (horizontal), set to 
                 true if the toolbars are on the left or right of 
                 the window (vertical)

Sample usage:
   XtremeCommandBars.CommandBar ToolBar1, ToolBar2;
   //..........Add controls to toolbars
   DockRightOf(ToolBar2, ToolBar1, false);
*/
private void DockRightOf(XtremeCommandBars.CommandBar BarToDock,
    XtremeCommandBars.CommandBar BarOnLeft, Boolean VerticalBar)
{
    int left, top, right, bottom;
    XtremeCommandBars.CommandBar LeftBar = BarOnLeft;

    CommandBars.RecalcLayout();
    LeftBar.GetWindowRect(out left, out top, out right, out bottom);

    if (VerticalBar == false)
        CommandBars.DockToolBar(BarToDock, right,
        (bottom + top) / 2, LeftBar.Position);
    else
        CommandBars.DockToolBar(BarToDock, (left + right) / 2,
        Bottom, LeftBar.Position);
}