这是原始的TControl.DoRealign:
procedure TControl.DoRealign;
begin
if not FNeedAlign then
Exit;
AlignObjects(Self, FPadding, FSize.Width, FSize.Height, FLastWidth, FLastHeight, FDisableAlign);
end;
但我认为它应该写成
procedure TControl.DoRealign;
var aSize: TpointF;
begin
aSise := Size.Size;
if not FNeedAlign then
Exit;
AlignObjects(Self, FPadding, FSize.Width, FSize.Height, FLastWidth, FLastHeight, FDisableAlign);
if not aSize.EqualsTo(Size.Size) then DoRealign;
end;
因为我们经常将一些事件分配给一些控件onresize(比如带有autosize = True的TText),以将其父控件的大小调整为与它们相同的大小。但是这样问题就是如果我们在它的dorealign过程中调整父控件的大小,那么它就不会再调用dorealign
我做得好还是我错过了什么?或者通过为它们分配onresize,它们是一种更好的方法来使父控件适合它的childreen大小?