Nach langem Rumgefummel und erfolglosem googeln habe ich die Lösung selbst rausgefunden, vielleicht hilft es ja jemandem mit demselben Problem in Zukunft:
Die ScrollBox ruft, getriggert durch Skalieren ihres Inhalts, TScrollBox.OnCalcContentBounds() auf.
Mit
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
ScrollBox1.OnCalcContentBounds := CalcContentBounds;
end;
procedure TForm1.CalcContentBounds(Sender: TObject; var ContentBounds: TRectF);
begin
ContentBounds.Width := PaintBox1.Scale.X * PaintBox1.Width;
ContentBounds.Height := PaintBox1.Scale.Y * PaintBox1.Height;
end;
verhält sich die Scrollbox so, wie ich will (und wie ich eigentlich defaultmäßig erwartet habe). Bin mir nicht sicher, ob das der richtige Weg ist (erscheint mir fummelig), aber es funktioniert.