Object Classes (navigation)

These are the components from which functional windows are derived. They are not actual windows themselves. By having rich features defined once in classes that are used by actual windows DUO can ensure consistency and stability.

Here we describe the user functionality provided by these classes and how to operate windows that use them.


This is the base class for all windows. It extends the system menu (left click the icon top right of the title-bar).

System Menu

This class adds system menu entries:

·         Save Position/Restore Default Position – stored window position

·         Show/Hide Hints – showing yellow pop-up hints

·         Shrink (Compact View)/Grow. – a minimal display of the top left corner of a form

Essentials - Classes - Form - System Menu

Saving Window Positions

Some screens enable you to save screen positions and states. Exo also has this capability and the registry storage method is compatible with Exo.

Save Position: Creates a registry entry containing the windows coordinates, size and state (e.g. minimised).  These are reused every time this window opens.

Restore Default: Position: Deletes the registry entry and reapplies the coordinates, size and state specified at program design time.


Show/Hide Hints: This is a toggle that activates or deactivates the popup hints that can occur on mouse hover (those little yellow ones).

·         By default, hints are not shown and the system menu entry reads Show Hints.  The setting is not preserved when the window closes so defaults to not hinting when reopened.  If the Save Position function has been used then the hint toggle status is also preserved as at the last save.

Compact View

Shrink/Grow: This is a toggle between setting the form size to minimum (Shrink) or back to the last known window size. It does not change the position of the top left corner.

·         Shrink (Compact View): The window size is set to the minimum window size set at design time.

o   If the window state is minimised, maximised or full screen then it is restored before saving the window size settings.

o   The window size prior to resizing is stored for the duration of the windows existence (for use by Grow).

o   When the window is closed the size settings are discarded opening a fresh window will size to either the design time setting or the last Save Position (if the later exists).

o   The Compact view of the main menu form is similar to Exos /LEGACY_MAXATOOLBAR command line parameter vis

Essentials - Classes - Form - Compact View (Shrink/Grow)

·         Grow (normal View): Reset the window size to the last known settings stored by a shrink.

This can be thought of as functionally analogous to Exos information panel that can appear at the bottom of the screen.  The form itself also has a hint when hovering in an area not occupied by a control. In Exo the information footer panel is toggled by the circular blue information button located at the right hand end of the menu bar.


This inherits epForm and adds significant properties and functions common to most items found on the base menu.

All windows of class epAppForm have some consistent screen elements:

·         Screen Header

o   Toolbar / Ribbon

o   Identification Bar (grey, under toolbar)

·         Screen Footer

o   Splash Colour (line above status bar)

o   Status Bar

o   Navigation Button (left of status bar)

§  Left Click =Active Window List

§  Right Click =Main menu

·         Screen Body (variable content)

It also has understanding of Exo entities (companies, stock items, etc) and keeps a list of entity IDs for a real window (e.g. a company knows about its debtor, contacts etc). These IDs can be passed to other associated (child) windows such as docked widgets so that they ‘follow’ a logical relationship.

Screen Header

Essentials - Classes - AppForm - Screen Header




Essentials - Classes - AppForm - Toolbar

This contains buttons to perform various actions.  Buttons may appear/disappear or be active (coloured)/inactive (greyed) depending on current screen content. Dividers will appear between button groups.



Essentials - Classes - AppForm - Ribbon

The (Classic) Toolbar can be toggled for a Ribbon style toolbar using an entry on the screen’s system menu which will be either:

·         Show Ribbon – displayed when the classic toolbar is visible. Select to swap the toolbar for a ribbon.

·         Hide Ribbon (Classic) – displayed when the ribbon is visible. Select to swap the ribbon for a toolbar.

Button groups will appear in separate ribbon panes. One or more tabs may appear, especially on forms which are also of class epSearchForm.

Note: A new user profile setting Use Ribbon controls if a screen will initially open with a Toolbar or a Ribbon.

Identification bar

Essentials - Classes - AppForm - Identification Bar

This is the grey bar below the toolbar. It shows identification information for the currently selected record.

A narrative icon might appear at the left hand end. Alerts might appear in yellow at the right hand end.

The background colour may change to indicate some exception condition. The alternate colour will depend on what entity type the identified record is e.g. red for a customer on stop credit.

Essentials - Classes - AppForm - Identification Bar (Colour)

Screen Footer

Essentials –AppForm - Screen Footer

Splash Colour

The coloured stripe above the information area (black in the above example). This is altered by the profile setting splash colour. This is useful for differentiating between training and live copies of your database (which will have the same company name).

Status Bar

This shows (from left to right):

·         Company Name

·         Connection Name

·         Run Date (usually today’s date but can be manually overridden)

·         Login ID

·         Staff Name from LoginID.

Navigation Button

 The checkerboard icon in the screen footer is the application navigation button and is designed to quickly navigate to other screens without having to return to the base form.

Active Window List: Left clicking this button brings up a list of active windows from which you can select an entry and have it brought to the front of the desktop.


Essentials –AppForm - Screen Footer - Navigation Button – Active Window List

The entries have the most recently accessed screens at the top, therefore entry 0 is the current screen and entry 1 is the one that had focus immediately prior to this one etc. Some screens may exist but are visible only at certain times so are shown between {}. They are not selectable when in a non-visible state. Where the window contains widgets the > symbol shows an expandable note listing those widgets.


Main Menu: Right clicking this button will pop-up a (vertical) menu containing the same choices as on the base form main (drop down) menu. When launching a new function then it can be done from here rather than having to return to the base form.



Essentials –AppForm - Screen Footer - Navigation Button – Active Window List

Screen Body

The contents of the screen body will vary depending on the individual module function. Typically it will be either a search screen with a tabbed layout, or a dockable widget.

epSettings {non-visual}

This gets database and operating environment settings such as profile settings, registry settings, and DUO configuration / connection settings, etc.

epClarity {non-visual}

Provides an interface to launch Clarity Business Forms and Reports via either ExoProtocolHandler to Exonet.exe or just launch Clarity.exe. It is aware of the Exo *.CLF classes (see Clarity manual for I= parameter) and handles all requests for in-workflow printing e.g. packing slips etc.


Builds content for menus (main and pop-up), toolbars, and Ribbons.


Provides a grid with options (right click popup menu) such as visible column settings, copy to clipboard, grid print, grid print (to printer), print preview (to screen), and printer setup.

DUO uses a common grid component. This is different from but similar to the ExoGrids used in Exo.

Essentials - Grid

Columns can be resized and moved around using the mouse.  Hidden columns (column width = zero) are shown with a vertical green line and can be resized by dragging.

The grid component used in DUO is more powerful in its layout capabilities than Exogrids and includes functions such as cell merging.  Presentation of data in some functions may take advantage of this but most grids will be of the ‘classic’ layout.

Right clicking anywhere on the grid brings up a popup menu. The first entry in this menu is always Grid Options and this has a submenu. Left clicking in the grid’s home cell will bypass the pop-up menu and open the Grid Options dialogue.


Essentials - Grid - Popup Menu

Left click the home cell to navigate directly t Grid Options.

Hide Column

When taking this right-click choice then the column you clicked on is hidden (its width is set to zero)


Not implemented yet

This function searches the grid contents for a string keyed into a pop-up dialogue.

Grid Options

This offers a Grid Settings option functionally similar to Exos Select Visible Columns but also including the Save settings within the column list dialogue


Essentials - Grid - Options (Save Settings)

Un-checking a visible column in the dialogue simply sets its column width to zero.

The toolbar contains buttons corresponding to the functions appearing on the right-click menu.

Send To

The Send To leaf opens a sub-menu

Essentials - Grid – Send To

Clipboard: This function copies the grid contents to the clipboard. It is a silent function so, unlike Exo, there is no confirmation dialogue.  The clipboard can then be pasted to other applications such as Microsoft Excel ™
Worksheet: DUO incorporates an inbuilt light weight Workbook screen. This function will open a DUO Workbook screen and paste the contents of the grid into it.
Email: This will create an email with a copy of the grid contents in the body.  The grid data is a <DIV></DIV> structured table. 


This offers printing choices for the grid. These are also not available in Exogrids.

The Print leaf opens a sub-menu

Essentials - Grid – Print


Print: Print directly to the default printer (Quick Print).

Print Options:  This opens a print output dialogue in which you can configure a number of options including selection a non-default output device and adding a title.


Essentials - Grid - Page Setup

Preview: Opens a preview screen from where the print image may also be printed.


Essentials - Grid - Print preview


Not implemented yet


This function shows a dialogue containing the SQL used to populate the grid.

It is especially useful in debugging user designed grids.


DUO supports searching for things like accounts and stock items with a generic search grid.

and adds search capabilities, a multi tab layout, and tabs with dashboard workspaces into which widgets can be docked to provide additional information about the selected record. In some inheritances of this class, the second tab might house some explicit processing functionality e.g. Scan pick

A search form is a tabbed form with a search grid on the first tab plus additional tabs when a record is selected. The additional tabs house functions associated with the item selected from the search grid.  One or more additional tabs can be dashboards to house dockable widgets.

Essentials - Search Grid

Search grids can apply in two different workflows

·         As the basis for a window to maintain or process the item that is being searched. In this mode, additional tabs contain dockable widgets for the various details or processes applicable after a search selection is made. These windows are typically launched from the base form menu.

·         As a lookup to complete a field or grid cell. This is the classic Select and Close workflow.

The grid can be navigated:

·         By mouse

·         Using the Up, Down, Home, and End keyboard keys (even when the focus is in the edit box)

·         Using the blue navigation buttons on the toolbar

Double click to select a row and move to the details tabs.

Enter text into the edit box and click the Search button to filter the grid contents. 

Some screens will have additional inbuilt filters to the right of the search button. When these are changed they automatically activate the Search button and apply the additional filtering.

A search form inherits epAppForm and epForm and has all the functionality provided by those classes.


This is the container class for a dockable Widget. It is a derivative of epAppForm so has all the attributes of that class including a toolbar.

Essentials - DockForm

Here you can see a Companies Widget docked in the Debtor tab of a window of class epSearchForm.

This example is from Scan Pick after a Sales order has been selected from the Search tab. This Widget is automatically aware that it needs to follow the debtor code associated with the sales order selected in the parent/host form.

Note: We feel that using widgets in this way is a better presentation than having to drill to another window such as a separate Debtor Accounts screen window (which would also be modal).  However, the toolbar will also usually contain a button to drill to a separate screen. In this case the  button calls MYOB Exo (via ExoProtocolHandler) to open its debtor account screen at this account.


A dashboard form inherits epAppForm and epForm and has all the functionality provided by those classes.

DUO for EXO     DUO for EXO     © Dyameta Technology Ltd                     Previous Topic           Next Topic           Home