Uff, die sauberste Variante ist wahrscheinlich wenn Du TAniCalculations zu verwenden. Da bin ich aber ehrlich gesagt dran verzweifelt. Ich hab dann für mein Problem einfach folgendes gemacht:
Delphi-Quellcode:
const
BOUNDS_WIDTH = 10000;
BOUNDS_HEIGHT = 10000;
TMyClass = class(TCustomScrollBox)
protected
..
function DoCalcContentBounds: TRectF; override;
procedure ViewportPositionChange(const OldViewportPosition,
NewViewportPosition: TPointF; const ContentSizeChanged: Boolean);
override;
function GetDefaultStyleLookupName: string; override;
..
function TMyClass.GetDefaultStyleLookupName: string;
begin
result := 'framedscrollboxstyle';
end;
function TMyClass.DoCalcContentBounds: TRectF;
begin
result := RectF(0, 0, BOUNDS_WIDTH, BOUNDS_HEIGHT);
end;
procedure TMyClass.ViewportPositionChange(const OldViewportPosition,
NewViewportPosition: TPointF; const ContentSizeChanged: Boolean);
begin
FImage.Position.Point := NewViewportPosition; //FImage ist mein Bild mit den Maßen der TMyClass (ohne Scrollbars)
//virtual_x = NewViewportPosition.x/BOUNDS_WIDTH*RealXVal <- damit kannst du dann die Werte virtualisieren
...
Glücklich bin ich mit der Lösung nicht. Vielleicht hat jemand ja eine bessere Idee. :Wub:
Christian