Top level architecture
The example application can be started in either of two ways. One way is by running a startup sub procedure in a basic library. This startup procedure could be called from a custom menu or toolbutton in OO.o or passed as a parameter on a command line. This command line approach allows the application to be launced from an icon on the users desktop or as a menu item on their statup menus.
The second way to start the application will be to open any form contained within the Base file. This is similar to the navigation screen option that is available in MSA (MS Access), and requested often from users familiar with this option. My idea is not a full solution by any means, as you will see.
Simply put my idea is that every form in the database file will call a specific function in the library from the Loading event. This function will check to insure that our application is running and if not start it. If the application is already running, it returns having done nothing.
What happens on startup? The database file is opened ( if needed ), a main launch pad style form is opened, required menus are created, other required steps as needed are preformed.
My idea is that the application should have a main launch pad form. From this one enters different sections of the application. One example might be
- Customer/Contact Maintanance
- Order Entry / Invoicing
Each section will have a main form also. This form will contain custom menus and toolbars appropriate for the functions supported in the section. From this main section screen other forms may be opened.
Each section form will have a menu that allows other sections to be opened.
When the launch pad form openes a section form it closes.
When a section main form closes, if there are no other forms open, the launch pad is again displayed.
It would be best where possible to use a schema that is directly from, or derived from, the table structures supplied with Base.