Creating MDI Apps in RapidQ
Well, I finally cracked the MDI solution for RapidQ. Hah! This is an extreme overstatement.
RapidQ does not implement even half the code necessary to create a true MDI application.
However, it IS possible to force a good deal of the functionality necessary to get it going.
In this code, I have attempted to provide the code you'll need to get started. An MDI app
consists of three parts: the "frame", or parent window, the "client", the part that occupies
the client area of the frame window and owns the child windows, and the "child" windows.
The fsMDIParent style does work, although not all messages are translated. You can't press
Ctrl+F6 to tab to the next child, and menu shortcuts don't apply to the currently active
child. Stuff like that. Otherwise, a QFORM is a good MDI Parent. From the Delphi help file,
I've found that the "EInvalidOperation" message (for fsMDIChild) means: "EInvalidOperation
is raised when an application attempts an operation that requires a window handle on a
component [that] does not have a parent (Parent = nil)." Of course, I've tried setting the
parent of the child, nesting the child, and everything else I could think of, but nothing
works. So for now, you'll have to create your own child windows. This makes it a lot harder,
though not impossible, to manipulate the child. Using RQ components on the child is out of
the question. MDIApp.bas demonstrates creating forms with a multiline edit, it tiles,
cascades, etc. It also opens files. It is uncommented but it should be fairly easy to follow
using this code as a guide. Most of the extra work is done in the menu subs and the child
Anyway, I hope this helps...If you have any specific questions about the code, post them to
the group and I'll try to answer them the best I can.