Delphi和Lazarus中TScrollBox种群的不同结果

时间:2017-11-22 07:39:02

标签: delphi lazarus itemscontrol tscrollbox

我以同样的方式填充ScrollBox

procedure TForm1.FormCreate(Sender: TObject);
var
  i: word;
begin
  for i := 1 to 3 do
  begin
    with TLabel.Create(ScrollBox1) do
    begin
      Parent := ScrollBox1;
      Top := 1000;
      AutoSize := False;
      Align := alTop;
      Height := 25;
      Caption := 'Label' + IntToStr(i);
    end;
  end;
    ScrollBox1.Realign;
end;

当代码在Delphi下运行时,我得到以下结果:

enter image description here

物品的顺序是正确的。 但是当我在Lazarus下调用相同的代码时,我得到了:

enter image description here

项目的顺序是相反的。我可以通过反向创建ScrollBox子项和/或添加{IFDEF ...}来解决问题,但我怀疑这不可靠。添加编译器开关会使代码量翻倍,使其变得庞大且难以阅读。

有没有办法为此目的做统一可靠的Delphi-Lazarus代码?

所附

关于@TomBrunberg评论的解释

如果我以相反的顺序创建chidren(例如for i := 3 downto 1),我会得到相反的结果:Delphi产生反向和Lazarus - 直接顺序。这就是为什么我说的是代码加倍。

附录2

关于Tom Brunberg的说明

当从Button onClick事件处理程序调用相同的代码时,代码行为变得相反(在Lazarus和Delphi中也是如此)。

附录3

我能相信for i := 1 to 3 ... Top := 1000 + i;因为它会给出预期的结果吗?

0 个答案:

没有答案