[Lazarus] Autosize behaviour

Hans-Peter Diettrich DrDiettrich1 at aol.com
Mon Apr 5 11:29:30 CEST 2010


Michael Van Canneyt schrieb:

> In Delphi, you can make dock zones along the edges of your
> form by dropping 4 panels and aligning them along the edges of the form. 
> If autosize=true, then they have size 0 when the app is run (not when 
> designed), but you can dock controls on them, since there is a "fuzzy" 
> zone of 10 pixels.

Such DockSites should work without AutoSize, because their extent is 
determined by the DockManager - which is not involved in autosizing. The 
free extent of an elastic docksite should be user-adjustable, by means 
of an splitter. They worked until now, at least with the Win32 and gtk2 
widgetsets.

The influence rectangle of a docksite is the control's rectangle, 
extended by 10 pixels in every direction. It it used only in the 
determination of the target site, not in the layout.

> No code is needed, and you can then dock toolbars etc. along the edges 
> of the form.

Code is needed to extend and shrink the sites - also in Delphi. The 
docked size of the controls is not normally useful to determine the 
extent of a docksite, instead the DockManager controls the layout of the 
site, by adjusting all docked controls to the given extent of the site.


> Unless someone has a better idea for dock zones around the edge of a form
> without having to write code...

I already asked for an (user selectable) layout manager some time ago. 
Such a manager would replace or include docking managers, that 
essentially control the *layout* of a docksite, while docking itself is 
only a minor addition. Then AutoSize should be handled by the applicable 
layout manager, and anchor docking will become just another layout 
manager. A stable algorithm and protocol (API) has to be established, 
that allows all layout managers to work together.

DoDi





More information about the Lazarus mailing list