Author: David Kawliche
All versions of Access are oriented around programming Windows using MDI techniques. MDI stands for Multiple Document Interface. In MDI a single parent window contains related child windows within its frame. The parent window visually contains all primary child windows. These child windows can not be moved outside of their parent, nor can they be sized larger than the parent window. Note that this containment is purely visual and different parent windows can provide a view to the same underlying data.
All of Access' regular, non-popup forms, reports and datasheets are all primary child windows. Child windows share the menu bar of their parent, which is has an empty grey background. To make things juicier, Access' pop-up forms are not children of the main Access parent window. Access pop-ups are of an entirely different window class that floats on top of the regular Access app and any previously opened pop-up forms. These special forms can be moved out of the parent window frame altogether. Another practical implication of MDI is that no matter how many Access forms you open in a database, you have only one entry on the Windows taskbar for the parent window. You can programatically set the parent window caption in a number of ways in Access. Choose a name that represents the application or work area displayed by the parent window.
The fact that MDI creates Windows in Windows has led to a great deal of user confusion over the years. Indeed, the relationship between the files and their windows in MDI is admittedly abstract. In the future, expect to see more and more data-centric window or task-oriented techniques and less and less application centered MDI programs. However, whatever the disadvantages of MDI as a user interface convention, it is still the Access standard, and there is little point to try and "trick it" into behaving otherwise. Novice programmers unfamiliar with MDI behavior and experienced programmers who dislike the MDI aesthetic have already spent countless hours coming to grips with Access' stubborn refusal to act in any other way (usually by throwing lots of Maximize commands around). Although alternatives are possible the solutions are generally not air tight and often needlessly non-standard in their use (or lack) of basic interface conventions.