From 115a83d49e8080f4736b7c18a8d982927999003f Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 24 Mar 2011 11:21:04 +0200 Subject: docs: new additional help topic regarding embedded forms. --- docs/xml/fpgui_topic_embedded_forms.xml | 45 +++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 docs/xml/fpgui_topic_embedded_forms.xml (limited to 'docs') diff --git a/docs/xml/fpgui_topic_embedded_forms.xml b/docs/xml/fpgui_topic_embedded_forms.xml new file mode 100644 index 00000000..4472ce4d --- /dev/null +++ b/docs/xml/fpgui_topic_embedded_forms.xml @@ -0,0 +1,45 @@ + + + + +Additional Topics + + +Embedded Forms as reusable Frames + +

fpGUI allows you to embed a Form inside another Form. This is similar +to the Delphi-like TFrame idea. This is very handy if you want to reuse a UI design +in multiple places in your application. +

+

At first you will be tempted to design a "frame" using a TfpgForm descendant, +because that is what the UI Designer will create for you by default. Please refrain +from using TfpgForm descendants as "frames" because there are quite a few pitfalls. +Instead, use TfpgBevel as the base class for a UI Frame design. This eliminates +all the possible problems you might get. You can still use the UI Designer because, +the UI Designer simply ignores the base class of any UI design - it only care about +what is inside the designer comment markers. +

+

What are the problems when you descend from TfpgForm

+
    +
  • Drag-n-Drop under X11 will stop working for those forms. The XDND protocol needs +to speak to the top-level form. When you use a TfpgForm as an embedded form or frame, +it will find the wrong TfpgForm, and DND will simply not work.
  • +
  • You could display an embedded form as modal, meaning it will block all other +input to the application, making the outer parent form look like it is frozen.
  • +
  • A TfpgForm has a WindowPosition property which is by default set to wpAuto. This +means, fpGUI leaves it up to the OS or Window Manager to decide where that form mast +first appear. This also means that your Top/Left position you specify for the embedded +form will most likely be ignored - giving undesired results.
  • +
+ +

+Simply using TfpgBevel (or soon to appear TfpgFrame) as your base class for embedded forms/frames +will resolve all these issues for you. For an example of this, take a look at the demo +project in [fpgui]/examples/embedded_form/ directory. +

+
+ +
+
+
+
-- cgit v1.2.3-54-g00ecf