Различные результаты популяции 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;
как это дает ожидаемый результат?