<div dir="ltr">I should zoom a form, so that all its controls (and their fonts) get bigger by X%. The recursion is trivial and it mostly works, but ...<div><br></div><div>I'm doing it in a moment when not everything is visible (and can't see how to postpone it). Despite that, it works fine for all controls with Anchors = [akLeft, akTop]. For controls with other anchors, nothing works: Even a trivial change like increasing left or width by one makes the control lose its anchoring (and behave like left-top-anchored) and move to a strange position.</div><div><br></div><div>The problem seems to lie in TControl.UpdateBaseBounds when the FBaseParentClientSize gets stored, which happens to be (0, 0) at this point. If I hack it to keep the previously stored value, it somehow works.</div><div><br></div><div>The zero-client-size parent is a TPage, but I can't claim it guilty as I couldn't reproduce my problem in a small example.</div><div><br></div><div>So I wonder:</div><div><ul><li>Is it forbidden to change position and/or size of a component when it's not shown?<br></li><li>If not, how can I deal with right-aligned controls? Simply setting c.Left := c.Left * Factor doesn't seem to work (though it should as in this step all positions and all sizes simply get scaled up; anchoring is used when the parent resizes and not the component itself, right?).</li></ul><div>But actually any help is appreciated.</div></div><div><br></div><div>I'm stuck with Lazarus 1.4.2, but the trunk code seems to do the same.</div></div>