Различные результаты популяции TScrollBox в Delphi и Lazarus

Я заселяю 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, я получаю следующий результат:

введите описание изображения здесь

Порядок товаров правильный. Но когда я вызываю тот же код в Lazarus, я получаю:

введите описание изображения здесь

Заказ товаров в обратном порядке. Я могу решить эту проблему путем обратного создания ScrollBox дети и / или добавление {IFDEF ...} но я подозреваю, что это не надежно. Добавление переключателей компилятора удвоит объем кода, делая его громоздким и трудным для чтения.

Есть ли способ сделать единый надежный код Delphi-Lazarus для этой цели?

прилагаемая

объяснение комментария @TomBrunberg

Если я создаю детей в обратном порядке (например, for i := 3 downto 1) Я получаю противоположный результат: Delphi производит реверс, а Lazarus - прямой порядок. Вот почему я говорил об удвоении кода.

ПРИЛОЖЕНО 2

на ноте Тома Брунберга

Когда тот же код вызывается из обработчика события Button onClick, поведение кода становится противоположным (и снова разным в Lazarus и Delphi).

ПРИЛОЖЕНО 3

Могу ли я доверять for i := 1 to 3... Top := 1000 + i; как это дает ожидаемый результат?

0 ответов

Другие вопросы по тегам