Welcome to the SRP Forum! Please refer to the SRP Forum FAQ post if you have any questions regarding how the forum works.
MDI?
Admittedly asking a question before attempting anything but...
The documentation naturally talks about the ribbonbar in relation to forms but is there any recommendations for or against placing one on the mdi itself?
Is there anything about the control that might prevent it from playing nicely with the mdi?
Of course I'm going to try it anyway but any heads up of potential problems would be appreciated.
The documentation naturally talks about the ribbonbar in relation to forms but is there any recommendations for or against placing one on the mdi itself?
Is there anything about the control that might prevent it from playing nicely with the mdi?
Of course I'm going to try it anyway but any heads up of potential problems would be appreciated.
Comments
There are no conflicts that we have come across but your expectations of how it will all look and feel may vary. The ribbon style of UI was introduced by MS when they were moving away from traditional MDI design. In order to achieve the most compatible look you might want to launch your MDI children offset into negative space and sized larger than the MDI Client to hide the borders and caption bar.
I'm happy to experiment with the look and feel. I was more looking to use the ribbonbar to launch the MDI children and figure they can still live within the client area. Like I said, happy to experiment and I'll include your suggestions in my experimentation.
For some reason I had the flickerfree property of the tab control in my mind when I started this post and was wondering if there were any caveats like that.
My word of caution is to think twice before using the Ribbon control as a substitute for a tab control. Ribbon interfaces are primarily meant to be substitutes for menus and toolbars. Using them as alternatives for application form launching and navigation will quickly result in a mismatched UI. If I placed a Ribbon control in an MDI Frame, I would still launch MDI Child forms using another control (like the ShortcutBar) and then the Ribbon control would be configured for the currently active MDI Child.
We purchase our icons from axialis. We use the "Pure Flat" icons, but you can get the non-flat if you like. I recommend going through all of their libraries and picking one that has the most options you like. Then you can add more libraries as needed. The Basic Set is a good one to start with.
I need to revisit this comment. I said that I would not use the Ribbon control to launch MDI Child forms in my haste and desire to discourage abuse. However, if the Ribbon control is an alternative menu then obviously it should be useful as a form launcher. I still stand by my other comment, however, regarding the problems of using the Ribbon control to navigate forms as an alternative to a proper Tab control.
As suggested in the Ribbon Tab documentation, I recommend that each tab of the Ribbon control represent a top-level menu item that would ordinarily represent different modules within an application (i.e., Accounting, Sales, Inventory, Floor Control, Shipping, etc.). Then as each tab is selected it would present the user with the relevant groups and controls that enable the user to connect with the assets of each module.
To give the user custom features that are form specific, you can add additional tabs as "context tabs" but make them invisible during the Init process. Then use the TabVisible property to show/hide these tabs as needed. You can also use the ContextColor attribute to help visually set them apart.
Hopefully this offers you some better ideas on implementing the Ribbon control.
Now we're more on the same wavelength. The intent was never to replace tabs on the child forms, simply to use an MDI ribbon to replace the existing menu with the basic concept of tabs for top level menus or modules, groups for 2nd level menus and buttons for launching of the MDI children.
Obviously not simple in implementation as there will be many factors to consider but that's the general idea/starting point.
I only mentioned the flickerfree property of the tab originally as an example of something you shouldn't do on the most persistent window.
I likely read your FlickerFree comment and walked away with a misunderstanding. We have seen an implementation of the Ribbon control where form data is being displayed in the Ribbon control itself and we think that is stretching the bounds of how the control should be used. In my opinion, the Ribbon control can reflect the state of the content but not the data of the content, if that makes sense.
Rest assured, I'll find one :-)
Just some ideas for an entire record:
If you are navigating a control that represents multiple bits of data (EditTable, ReportTable, Schedule, Tree), then states relating to the selected row, column, appointment, or item could also be dynamically represented and possibly updated through the Ribbon control.
Before/After screenshots (when completed) would be helpful to this forum.
tia
My first use of this is for a new requirement so there will be no before shots.
I will still upload some after shots once it's finished if you like.
You can check my other thread on redraw issues for a glimpse of how it is looking at the moment though.
One thing I'm really liking about it is in the form designer, I've only placed two OLE controls and even then only one of them needs to be actually drawn to size. With just two controls, (a ribbon and a reporttable) there is so much user functionality available.
Once you understand the XML, then coding for the ribbon events is pretty simple as well.
Just take Kevin's XML and initialisation code and put it in the create event of a new window.
Start the window.
Once you see that result. Change the icon pointers in the xml to images you have somewhere and run the window again and then you'll see the same stuff but with pretty pictures.
Then you'll know enough to change it to your heart's content.