Add 2 toolbars in 1 line
Printed From: Codejock Forums
Category: Codejock Products
Forum Name: Command Bars
Forum Description: Topics Related to Codejock Command Bars
URL: http://forum.codejock.com/forum_posts.asp?TID=592
Printed Date: 23 May 2024 at 3:53pm Software Version: Web Wiz Forums 12.04 - http://www.webwizforums.com
Topic: Add 2 toolbars in 1 line
Posted By: Voha
Subject: Add 2 toolbars in 1 line
Date Posted: 01 April 2004 at 11:37am
Hi all!
I cannot find solution how to add 2nd toolbar near 1st. It always add next toolbar below the previous. I dock them all at the top.
In Infragistics ActiveToolBar there is a solution when DocRow and DockColumn properties should be specified.
May be i just missed somethig? But there is no any axample where tollbars whould be loaded in such way. But it is possible to move 2nd toolbar manualy . So i think sulution exist but i just cannot find it.
tnx.
Voha
|
Replies:
Posted By: SuperMario
Date Posted: 01 April 2004 at 11:58am
Look at CommandBars dynamic popup sample. Copy the code below to
a new project and add a CommandBars control and ImageList control if
you want images:
Private Sub DockRightOf(BarToDock As CommandBar, BarOnLeft As CommandBar)
Dim Left As Long
Dim Top As Long
Dim Right As Long
Dim Bottom As Long
CommandBars.RecalcLayout
BarOnLeft.GetWindowRect Left, Top, Right, Bottom
CommandBars.DockToolBar BarToDock, Right, (Bottom + Top) / 2, BarOnLeft.Position
End Sub
Private Sub Form_Load()
Dim Control As CommandBarControl
Dim ControlFile As CommandBarPopup
Set ControlFile = CommandBars.ActiveMenuBar.Controls.Add(xtpControlPopup, 0, "&File", -1,0)
With ControlFile.CommandBar.Controls
.Add xtpControlButton, ID_FILE_NEW, "&New", -1, False
End With
Dim ToolBar As CommandBar
Set ToolBar = CommandBars.Add("Standard", xtpBarTop)
With ToolBar.Controls
Set Control = .Add(xtpControlButton, ID_FILE_NEW, "&New", -1, False)
Control.DescriptionText = "Create a new document"
End With
Dim ExtendedBar As CommandBar
Set ExtendedBar = CommandBars.Add("Extended", xtpBarTop)
With ExtendedBar.Controls
Set Control = .Add(xtpControlSplitButtonPopup, ID_TOOLS_UNDO, "Undo")
Control.CommandBar.Controls.Add xtpControlButton, ID_TOOLS_UNDO, "Undo"
.Add xtpControlComboBox, ID_TOOLS_UNDO_COMBO, "Undo Combo"
End With
CommandBars.AddImageList imlToolbarIcons
DockRightOf ExtendedBar, ToolBar
End Sub
|
Posted By: MarcelN
Date Posted: 26 May 2005 at 7:41am
When using this method to dock a toolbar to the right, it's still positioned wrong. Although it is on the same line as the other toolbar, it's positioned too far to the right. (We're using C#, Visual Studio 2005 Beta 2)
I debugged our application and found the values returned from GetWindowRect to be very weird: left: 2700 top: 3330 right: 11070 bottom: 3735
Also, the width of the toolbar is too large. Width: 32767
Are these values in pixels? The values seem a bit high.
I do have a multi-monitor setup, but after disabling my second monitor it still wouldn't work correctly.
These toolbars should be aligned next to eachother, not that far apart. Is there a solution for this problem, or are we doing something wrong?
|
Posted By: SuperMario
Date Posted: 26 May 2005 at 9:51am
I don't have VS 2005 Beta 2 to test on, but here is the C# code I use:
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);
}
Also, make sure you are adding your icons BEFORE you use this function.
|
Posted By: MarcelN
Date Posted: 31 May 2005 at 6:06am
Thank you Mario (but our princess is in another castle...),
Since I don't know which icons belong to the toolbar items, I solved the problem another way.
By adding the toolbars from right to left, it's possible to dock the next toolbar on the left. For this the size of the toolbars doesn't matter :)
I do have another question though.
(still using C# in Visual Studio 2005 beta 2)
I copy some menu-items from a .net ToolStrip to a CodeJock CommandBar.
.net uses a ToolStripControlHost for custom controls, similar to the CommandBarControlCustom class.
The CommandBarControlCustom class needs the handle of a control, which can be assigned via a property.
The problem is this:
We have a dynamic toolbar, which can change over time. When it changes the entire CommandBar is cleared, and new controls are added. Whenever a CommandBarControlCustom item is present and the CommandBar is cleared + filled again, the custom control is still visible (but not usable)
By moving over the control with the mouse the application crashes with the following error: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt"
It only occurs when CommandBarControlCustom items are used.
Does the CommandBarControls.DeleteAll() method release all the handles to controls properly? Or could there be another problem (and solution)?
==== EDIT ====
By manually releasing the handles of CommandBarControlCustom items, it does work as expected.
for (int i = 1; i < this.m_BarDynamic.Controls.Count; i++)
{
if (!(this.m_BarDynamic.Controls is CommandBarControlCustom))
continue;
CommandBarControlCustom control = this.m_BarDynamic.Controls as CommandBarControlCustom;
IntPtr Handle = new IntPtr(control.Handle);
if (Handle == IntPtr.Zero)
continue;
NativeWindow window = NativeWindow.FromHandle(Handle);
window.DestroyHandle();
}
|
==== EDIT ====
More progress...
I created a CommandBarControlCustom object with a Handle to a .net TextBox. This worked, the textbox was shown correctly :)
One problem does occur though. When another CommandBarControl is added AFTER the Custom control, the backspace key doesn't work.
Even worse, there are some focus problems with custom .net UserControls in a CommandBarControlCustom object. This always occurs, even when the Custom control isn't followed by another control.
|
|