On Sun, 8 Nov 2015 18:05:10 +0100
Krzysztof <dib...@wp.pl> wrote:

> Hi,
> 
> I have form which has a lot of panels created at runtime. These panels have
> controls and splitters (inside). The problem is with setting initial
> splitters position when user open form. I want that spliiters should have
> center position of its parent (parent = runtime created panel) but it is
> tricky because parents of splitters are not fully initialized and have
> Width and Height = 0 so I can't calculate splitter position on creation
> stage. Whole layout is based on Aligns.
> I solved this by overriding AdjustSize/InvalidatePreferredSize method.
> There I'm checking if widths and heights are <> 0, if yes then setting up
> splitters. It is working fine but I'm wondering if there is more clear
> solution. What I'm looking is virtual method like
> "ThisIsCalledWhenControlIsCompletelyAdjustedAndReadyWithAllChildrens" .

If you need to change the Splitter position, then apparently the
control is not completely adjusted.
Every time some layout property changes the LCL has to recompute the
layout. To avoid overhead, you should react early instead of late.

If your splitter depends on the client size of its parent, then you can
use the parent's DoOnChangeBounds/OnChangeBounds or AlignControls.


Mattias

--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to