MDI (Multiple document interface)

BONO

Member
Hello,
I've to change our application menu and search what is possible even if it's only on windows client. I'm interested about MDI to open window from a main window without a new item on taskbar. In order to simulate a single window for all window call. There is a progress KB P10913 by using adm2 frame but it's not exactly what i want.

Someone have some experience on it ?

PROGRESS VERSION 9.1E
 

gcampbell

Member
There is an overview of how to accomplish this on www.global-shared.com.

The overview raises some limitations/issues and I don't know if they have been fixed or can be overcome ... but it's worth a look anyway.

Later,
Gordon
 

markhope

New Member
We have a MDI which uses the approach of frames within a single window - not sure how Progress 'recommend' you do it but it works fine.

Each application module is effectively an ADM2 frame contained by the window.

With some effort it is possible to give the users a windows-feel UI eg.

Window->..... select running window menu options
Moveable+Resizeable application modules

Due to the complexity its not something I can post up but if you have any specific questions when you try it please drop another question in.


In essence :
- developer constructs client side UI for each app module as a 'Smart-Frame'
- your main application is a single window that acts as a container for all frames
- when a user selects a module to run ( from menu/toolbar/btn ) you instantiate the frame, make its parent the main window and do any initialisation required
- frame modules can then communicate with the parent window and visa-versa using the respective handles
- this allows the window to maintain knowledge of what frames are running


Its as close as we ever came to a true Windows MDI with Progress standard objects developed within AppBuilder.
 

BONO

Member
Thanks, i will try what is possible to use existing windows too because all windows are not adm2 frame. I've seen Show-in-Taskbar attribute for window also. But for Moveable+Resizeable application modules, you need a procedure who replace and resize object on frame (or window). What is the way you've choose to do that ?
 

markhope

New Member
An ADM2 smartframe object has the ability/triggers for reposition/resize within the parent window.

You can detect the user interactions with :
END-MOVE OF frFRAME
END-RESIZE OF frFRAME

Obviously you need to control the relative size/position of objects in the frame as the object resizes. We found it best to force a minimum size to keep the object useable but allow frames to grow if they contained readily resizeable widgets like browsers/images .

Try using END-RESIZE trigger to capture changes in x-y sizes - then apply differences in size to objects you wish to resize.

Im afraid its nowhere as easy as using resizeable web forms !
 

BONO

Member
Thanks, i will try to write this kind of procedure first by don't changing size but position in first .
 
Top