Sign in Join
Wiki copytemporary

MultiDoc: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11### About
22
33MultiDoc is a Lazarus component to replace the standard MDI interface.
44
55This component permit to write pseudo-MDI application with Lazarus. It is not a real implementation of the MDI interface but it give to your application the capability to use many resizable sub-form.
66
77There are two components:
88
99- TMultiDoc : the main form docking area.
1010- TChildDoc : the child container with resizeable border and button.
1111
1212I do them with a [graphical software](/wiki-images/3/3c/Media%3AMultidoc_skychart.jpg) in mind but they are probably useful for a range of applications.
1313
1414### Screen Shot
1515
16-<figure>
17-<img src="Multidoc_demo.png" title="Multidoc_demo.png" />
18-<figcaption>Multidoc_demo.png</figcaption>
19-</figure>
16+![](/wiki-images/b/b6/Multidoc_demo.png)
2017
2118### Author
2219
2320Patrick Chevalley
2421
2522### License
2623
2724Modified LGPL, see readme.txt
2825
2926### Download
3027
3128The component in version 0.1 and 0.2 and a demonstration program can be found on the [Lazarus-CCR sourceforge site](http://sourceforge.net/project/showfiles.php?group_id=92177&package_id=176905).
3229
3330The component in version 0.3 and 0.3.1 can be found [here](http://br.geocities.com/hipernetjr/lmdi/index.html). *(link is broken, is someone having the file can upload somewhere?)* but could be find [here](http://br.oocities.com/hipernetjr/lmdi/index_ptbr.html) :-)
3431
3532Another download link of MultiDoc & LMDI (working in June 2017): <https://github.com/mehmetulukaya/laz-components>
3633
3734**Last available version from SVN:** A number of small fix where added to version 0.2 over the last years. If you use this version that not depend on LMDI you can get the most current version from the Skychart project.\
3835Type the following command:\
3936
4037 <nowiki>svn co http://svn.code.sf.net/p/skychart/code/tags/V36/skychart/component/multidoc multidoc</nowiki>
4138
4239**New Multiframe component:**
4340
4441Since 2012 I replace the use of this component in Skychart project by Multiframe.\
4542It work almost the same but use frames for the child windows, so it no more require the main TPanel trick.
4643
4744To get this component:\
4845
4946 <nowiki>svn co http://svn.code.sf.net/p/skychart/code/trunk/skychart/component/multiframe multiframe </nowiki>
5047
5148### Change Log
5249
5350- The Multiframe SVN [changelog](http://sourceforge.net/p/skychart/code/3050/log/?path=/trunk/skychart/component/multiframe) can be read on Sourceforge.
5451- Since 2012 this component is replaced by [Multiframe](http://sourceforge.net/p/skychart/code/HEAD/tree/trunk/skychart/component/multiframe/), using docked frames for the same functionality.
5552- The SVN [changelog](http://sourceforge.net/p/skychart/code/2149/log/?path=/trunk/skychart/component/multidoc) can be read on Sourceforge.
5653- Version 0.3.1 2008/01/01 Fixed the following:
5754 1. Moved to public section some properties, to avoid exceptions in design-time
5855- Version 0.3 2007/12/31 Fixed the following:
5956 1. This version was developed by Júnior Gonçalves and depends on the [[LMDI]] package
6057 2. Through of {\$IFDEF}'s the component compiles into Lazarus/Delphi unchanged
6158 3. Great move. Now the mouse not "escape" while the cursor is dragged (Tested in GTK2 (Windows) and Windows XP)
6259 4. ChildDoc is now derived from TFormPanel (see suite [[LMDI]])
6360 5. No more code necessary on each component to focus child form
6461 6. It is possible to change the "skin" of the title bar, according to the OS (see component TTitleBar)
6562- Version 0.2 2007/01/06 Fix the following:
6663 1. BorderWidth property not working
6764 2. Wrong button order
6865 3. Center the cursor to the title bar when moving the panel
6966 4. Gtk2 and FPC 2.1.1 compatibility
7067 5. Crash when closing a child using the close button
7168 6. Change licensing to modified LGPL
7269- Version 0.1 2006/01/20 First beta release.
7370
7471### Dependencies / System Requirements
7572
7673This component is exclusively derived from high level standard component (TPanel, TCustomSplitter, TSpeedButton). It must work on all the Lazarus platform without change.
7774
7875Tested on Linux and Windows.
7976
8077### Notes
8178
8279You are not limited to show the docking area in the full main form. You can place the TMultiDoc anywhere you want or use multiple one! A combination with a TNotebook may give something similar to a multi-desktop.
8380
8481### Installation
8582
8683- Compile and install multidocpackage.lpk
8784- Open the example demo/demomultidoc.lpi
8885
8986This example can be used as a skeleton for a new application.
9087
9188### Usage
9289
9390At design time:
9491
9592- On the application main form place a TMultiDoc.
9693- Create a child form with a main TPanel.
9794- Put all the object you want for the child to the panel, write the event, etc...
9895- Do not rely on some TForm event as this form is never show.
9996
10097At run time:
10198
10299- Create a new child from TMultiDoc.NewChild
103100- Create a child form with the new childdoc as owner.
104101- Assign the main panel to the Dockedpanel property.
105102
106103### Convert a Delphi MDI application
107104
108105Converting a MDI application is simplified by the availability of the same component for Delphi and Kylix.
109106
110107Convert first your application to MultiDoc in Delphi,then convert to Lazarus. This require some work but among the advantage you avoid the ugly XP border around your child forms.
111108
112109Replace the standard MDI function as below:
113110
114111`  MDIChildCount   -> MultiDoc1.ChildCount`\
115112`  ActiveMdiChild  -> MultiDoc1.ActiveObject`\
116113`                  or MultiDoc1.ActiveChild`\
117114`  MDIChildren[i]  -> MultiDoc1.Childs[i].DockedObject`\
118115`                  or MultiDoc1.Childs[i]`\
119116
120117The Delphi component is include in the package. Unzip multidoc-delphi.zip and install MultiDocD6.dpk or MultiDocK3.dpk.
121118
122119---
123120*From the Free Pascal wiki, page "MultiDoc", as it stood on 2017-06-19 after a change by Wp, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
124121Category: Components
125122Category: Lazarus-CCR

Back to history