I had a Delphi framework that went through a few incarnations from D5-D2007... I think I had a 2007 version. I did have both SDI/MDI versions of the thing... and here's a short list of features.
The main form had a datasource property used for all data navigation and interaction.
All the standard menu items (Edt: cut, copy; File: close, ext; Help: etc..)
There was a "main" data module that had an abstract user object for login... a descendant data module was used for specific database types, MQSQL, IB, etc.
The main datamodule had a "PrepareDataset" method that was generic, the descendant would then setup each dataset type with the right connection object.
I also had a generic "maintenance form", this was used to edit all the basic lookup tables with a grid on a form, like "PhoneNumberTypes" or "States".
The factory of the framework did the following...
- The main form contained a virtual factory for child forms.
- Each form had to make a "FormFactory.RegisterForm" call in it's initialization
of the unit.
- The registration call included a path, priv, caption
parameters
- Path: (i.e. 'File\Open\Contacts') the main form creates a
menu item in that location
- Caption: The caption of the menu item
- Priv: (i.e. 'TContanctForm') the factory checks it against the user
to allow the form's creation.
...well the list goes on... but it was really nice. I think the best part about its design was that each developer was able to develop a "form" without ever needing or having the latest framework code. As long as they made the registration call, and descendant from the TFrameWorkChild form... it all just worked.