Heut' nacht ist mir noch das eingefallen:
Delphi-Quellcode:
function ClientRangeRect(Sender: TObject): TRect;
var
O: TPoint;
begin
// Sender = Client, Parent = ScrollBox, Result in Client-Koordinaten;
O := TControl(Sender).ClientToParent(Point(0, 0), TControl(Sender).Parent);
Result.TopLeft := TControl(Sender).Parent.ClientRect.TopLeft;
Result.BottomRight := TControl(Sender).Parent.ClientRect.BottomRight;
Result.Top := Result.Top - O.Y;
Result.Left := Result.Left - O.X;
Result.Bottom := Result.Bottom - O.Y;
Result.Right := Result.Right - O.X;
end;