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 procedure (ChildProc). 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.
Psyclops ·) |