[Lazarus] Docking manager implementation
Paul Ishenin
ip at kmiac.ru
Wed Jan 21 11:15:03 CET 2009
Hans-Peter Diettrich wrote:
> The question is, how to proceed. Should I provide a new Lazarus unit, as
> an alternative for LDockTree, or should I update LDockTree and Controls
> and submit an patch? Be warned: my implementation changes fields,
> methods and properties of TDockZone, and also parts of TDockTree, so
> that other docking managers will have to be updated. That's why a new
> unit might be a better introduction for this changed base classes.
Lets start with a new unit. Then we will see if we need our own
LazDockTree or we will replace it with yours.
> Still missing is the anchoring, as done in TLazDockTree, and the
> handling of messages and the display of the zone headers. It would be
> nice to have a true TDockHeader component, derived from a
> TCustomSplitter, so that only one additional component has to be managed
> (anchored...), instead of separate zone header and splitter components.
> Is this feasable?
Nice idea. Really dock header can be a splitter and a header at one
moment. If we use 2 controls they will be anyway placed one by one.
> The header part and message processing can be taken from LDockTree, but
> I'd suggest more changes to the anchoring of the docked components. IMO
> the anchors are affected only by InsertControl and RemoveControl, not by
> other changes like a resize of the docking site, so that the required
> changes to the anchors could be reduced to just the insertion and
> removal (docking and undocking) of a control.
ok
> For required size adjustments, after un/docking or a resize of the dock
> site, multiple algorithms are applicable. In the simplest case the space
> is distributed equally onto the docked controls. But the space also can
> be distributed proportionally, according to the current or undocked size
> of the controls. It might be a good idea to leave the choice to the
> user, by means of an OnResize handler, or by a dedicated virtual method.
> I'd like similar adjustments/selections for layout managers in general,
> so that a coder can use the simple Delphi or the complicated Lazarus
> anchors, or any other (Java like...) layout managers. Then a docking
> manager can be reduced to just the handling of un/docking controls,
> whereas the layout of the dock site could be delegated to an appropriate
> layout manager.
Yes, options are possible. But I have no idea how Java or any others
layout manager works. Maybe Mattias will help you here.
Best regards,
Paul Ishenin.
More information about the Lazarus
mailing list