[Lazarus] TControlSizing.Size is not symmetric!?

Mattias Gaertner nc-gaertnma at netcologne.de
Wed Sep 28 15:20:28 CEST 2011


On Wed, 28 Sep 2011 07:04:34 +0200
Hans-Peter Diettrich <DrDiettrich1 at aol.com> wrote:

> Reading the TControlSizing.Size property does not return the written 
> value, instead it increases it by Around.
> 
> This will cause
>    cs.Size[side] := cs.Size[side];
> to increment the stored size by Around, for every invocation!
> 
> Is this really intended behaviour???

Good grief. No.

 
> While GetSpace and SetSpace have equivalent names, GetSpace adds Around. 
> GetSideSpace (called by GetSpace) returns the stored values instead.

GetSpace should be the counterpart of SetSpace.
Gladfully it was never documented, so probably no one used them except
the LCL. I swapped them and will add it to the release notes. Currently
the wiki server is very slow.

Thanks for pointing this out.

>  
> Also:
>      procedure Change(InnerSpaceChanged: Boolean); virtual;
> ignores the argument. The method is virtual, of course, but where is it 
> ever overridden?

Since the new autosize algorithm the parameter is no longer used
by the LCL.
As far as I know no one uses it at the moment. Of course this might
change, when we add the mechanism to implement your own layout engine.

Mattias




More information about the Lazarus mailing list