Delphi Firemonkey的DoRealign是否正确实现?

时间:2016-09-04 14:29:53

标签: delphi firemonkey

这是原始的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大小?

0 个答案:

没有答案