Quick Tip: Creating a Splitter control between panes of a window with Dexterity

David Meego - Click for blog homepageThis is a reposting of an article I originally wrote on my Developing for Dynamics GP blog.

For many years Dexterity developers have wanted to be able to add a splitter control to windows with “panes” created with lists, treeviews or listviews.

Using the window Object property Resizeable set to True-Per Field, developers have created windows which can be resized but the join between the panes has been fixed as either Stay Left, Stay Centered, or Stay Right.

The issue is that as the window size grows, the position of the join between the panes means that usually one pane on the window is of a less than optimal size.

The best example of this is the SmartList window where the left hand treeview pane grows much bigger than it needs to be and wastes a large amount of screen real estate. This screen real estate would be much better used by adding it to the right hand listview pane.


I knew that back in version 8.0, List windows were added to Microsoft Dynamics GP. These windows had fields in the a scrolling window which could be resized using a Splitter control. This Splitter control was created in Dexterity using a 1 pixel wide push button. For more information on the history and the Splitter control, see Pat’s article: Smartlist: Splitter control in Smartlist window doesn’t work.

Disclaimer: It is important to note that the Splitter control is untested, undocumented and unsupported. Use at your own risk. It also will not work with the upcoming Dynamics GP 2013 Web Client.

 

So last weekend, I decided to experiment with this control and add Splitter controls to the appropriate windows in the next build of the Support Debugging Tool.

To make the Splitter control work, you need three controls, one fixed on the left edge, one fixed on the right edge and a movable one in the middle where the panes join.

Below are the properties you need to set up the Splitter control for a two pane window (I have highlighted differences between the 3 splitters after setting properties based on the left splitter):

Left Splitter

Using global field FieldSplitter[1]:

Tab Property Value  
Object Editable False
Hyperspace True
Tabstop False
Visual Appearance 3D Highlight
Position-Left Left Edge of Left Pane
Position-Top Top Edge of Left Pane
Resize-Horizontal Stay Left
Resize-Vertical Grow
Size-Height Height of Left Pane
Size-Width 1
Visible False

Middle Splitter

Using global field FieldSplitter[2]:

Tab Property Value 
Object Editable True
Hyperspace True
Tabstop False
Visual Appearance 3D Highlight
Position-Left Left Edge of Right Pane less Size-Width
Position-Top Top Edge of Left Pane
Resize-Horizontal Stay Centered
Resize-Vertical Grow
Size-Height Height of Left Pane
Size-Width Width of space between Panes
Visible True

Right Splitter

Using global field FieldSplitter[3]:

Tab Property Value 
Object Editable False
Hyperspace True
Tabstop False
Visual Appearance 3D Highlight
Position-Left Right Edge of Right Pane
Position-Top Top Edge of Left Pane
Resize-Horizontal Stay Right
Resize-Vertical Grow
Size-Height Height of Left Pane
Size-Width 1
Visible False

To make sure the Splitter control works properly, make sure that the edges of the push button are adjacent to the controls you want to resize.

Check out the follow up post where I show how I used this concept to add a Splitter Control to the SmartList window using the Support Debugging Tool and Non-Logging Triggers.

Note: The link above will work once the post is published.

David

This article was originally posted on the Developing for Dynamics GP Blog and has been reposted on http://www.winthropdc.com/blog.

5 thoughts on “Quick Tip: Creating a Splitter control between panes of a window with Dexterity

Please post feedback or comments

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.