    This is another version of TLayoutPanel (Beta v. 1.3)
derived from TPanel.  Previous (Beta v.  1.2) was published as
freeware in October 1996.

    It was developed to provide functionality for defining the
layout metrics for child controls.  By using layout constraints
you can create control whose position and size depends on
sibling's or parent's coordinates (as well as on its own
coordinates - Width can be 50% of Height for instance) so that
one control influences on the coordinates of the other control.
This component helps to avoid difficulties related to Delphi's
native aligning techniques (though you can combine them, if you
will).

    I'm not very experienced Delphi programmer (in fact, this
is my first Delphi component), I have been developing software
using Borland C++ mostly.  I've rewritten TLayoutWindow OWL
class and added some code for managing the component at design
time, so if you want to get more information on how it works,
you can read documentation on BC4.x OWL.

    Two published properties were added (both must be used at
design time only):

Metrics :       TList, containing metrics for child controls

LayoutEnabled : Boolean, that should be set to False if you want to
                move controls inside TLayoutPanel at design time.

    Two events - BeforeLayout and AfterLayout - are added (see
example enclosed)

    Two exceptions can be raised : ELayoutBadRelCtl, which, I hope,
you will never see, and ELayoutIncomplete, which can easily appear in
three cases :

1.  Constraints are insufficient to implement layouting (for
example, Left = Top, Top = Left), i. e. the resulting matrix is
singular.

2.  Constraints lead to contradiction (for example, Left = Top
+ 5, Top = Left + 5).

3.  Constraints are too complicated and cannot be resolved one
after another (Panel1.Center = Parent.Center, Panel1.Width is
50% of Parent.Width ). The Gaussian elimination was not
supported in OWL 2.5 and I had no time to implement it (if you
do it, please send me a mail).

    Functions and properties that should be used at run time -
see source code.

    What was changed since v Beta 1.0:

1. Some bugs were caught (memory leaks, failures during
converting form into ASCII format, unavailability of some
constraints and other). Great thanks to my Beta-tester (the
best Beta-tester in fact) Mik Kvitchko for help and advices.

2. Some new features were added: now you can set minimal and
maximal sizes for control (this idea also comes from Mik
Kvitchko).

3. You can now move child controls having AsIs metrics without
setting LayoutEnabled property to False at design time.

4. Now the component is fully compatible with Delphi 2.0

    What was changed since v Beta 1.1:

Unfortunately version  Beta 1.1 didn't support form inheritance
(thanks to Michael Snell for informing me about this bery bad bug).
Now it works with it. You must convert your forms to new format.

    What is new in Beta 1.31:

In fact nothing. A very bad bug was caught: the one which caused
messing in storing LayoutMetrics - you could set metrics, save your project,
close it, and when reopening it you could receive a message 
"Too complicated layout metrics !". Now I hope this problem is solved.

Some more bugs were fixed also concerning LayoutMetrics storing. 
Those bugs are not dangerous at runtime, 

    Help features still aren't implemented, so if you have
questions or find a bug, please, contact me.

    Installation:

1. Save your COMPLIB.DCL or CMPLIB32.dcl (God saves those who save themselves)

2. Copy files LOPREG16.DCR, LOPREG32.DCR, ASKYN.PAS,
LOFORM.PAS, LOPANEL.PAS, LOPREG16.PAS, LOPREG32.PAS,
METREDIT.PAS, ASKYN.DFM, LOFORM.DFM to the directory in your
Delphi search path, add LOPREG16.PAS or LOPREG32.PAS (depends
on what Delphi you use) in Install Components dialog.
TLayoutPanel will appear on the Additional page of the
component palette.

NB! Forms conversion

3. If you used the version Beta 1.0 of TLayoutPanel, you have
to convert your forms with TLayoutPanel. Firstly you must apply
CVT.EXE to dfm-file. Then use CVT0.EXE the same way. You will get
forms compatible with Beta 1.1 version.

4. To upgrade a form to Beta 1.2 from Beta 1.1 you must
- open it in IDE;
- save it.
This must be done in order of form ancestory (eldest - first), so if
Form1 is an ancestor of Form2 you have to convert Form1 before Form2
(though I'm not sure Form2 will be converted properly)

    Please, let me know if any unpleasant thing happens (I'd be
glad to learn about any pleasant thing as well).

    License agreement : this component is freeware, distributed
with source code.

    Sorry for my poor English.

            Anna B. Sotnichenko
            E-mail : anna@xperts1.rtc.neva.ru
