Different Results of TScrollBox Population in Delphi and Lazarus

281 Views Asked by At

I populate ScrollBoxin the alike way:

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;

When the code is run under Delphi I get the follwong result:

enter image description here

The order of items is proper. But when I call the same code under Lazarus I get:

enter image description here

The order of items is reverse. I can solve the issue by reverse creation of ScrollBox children and/or adding {IFDEF ...} but I suspect this is not reliable. Adding compiler switches will double the volume of code making it bulky and difficult to read.

Is there a way to do unified reliable Delphi-Lazarus code for this purpose?

APPENDED

explanation on comment of @TomBrunberg

If I create chidren in reverse order (for instance for i := 3 downto 1) I get the opposite result: Delphi produces reverse and Lazarus - direct order. That is why I was saying about doubling of code.

APPENDED 2

on note of Tom Brunberg

When the same code is called from a Button onClick event handler the code behaviour becomes opposite (and again different in Lazarus and in Delphi).

APPENDED 3

Can I trust for i := 1 to 3... Top := 1000 + i; as it gives the expected result?

0

There are 0 best solutions below