![]() |
Firemonkey: Scrollbox mit skaliertem Inhalt (Paintbox)
Hallo Community,
ich stehe gerade etwas auf dem Schlauch. Ich habe ein FMX-Projekt mit einer Scrollbox, in der eine Paintbox liegt (1000 x 1000 Pixel). In die Paintbox male ich ein Rechteck und ein Kreuz:
Delphi-Quellcode:
Das ist nach dem Start sichtbar und kann prima gescrollt werden. Jetzt skaliere ich den Inhalt, indem ich
procedure TForm1.PaintBox1Paint(Sender: TObject; Canvas: TCanvas);
begin Canvas.Stroke.Kind := TBrushKind.Solid; Canvas.DrawRect(RectF(10, 10, 990, 990), 0.0, 0.0, [], 1.0); Canvas.DrawLine(PointF(10, 10), PointF(990, 990), 1.0); Canvas.DrawLine(PointF(10, 990), PointF(990, 10), 1.0); end;
Delphi-Quellcode:
ausführe. Prima. Der Inhalt wird doppelt so groß, die Scrollbars verändern sich jedoch nicht und ich kann nur noch bis zur Mitte scrollen.
PaintBox1.Scale.Point := PointF(2.0, 2.0);
Das geht doch aber sicher irgendwie, oder? Ich hoffe, jemand hat einen Tipp für mich, schon mal vielen Dank im voraus... |
AW: Firemonkey: Scrollbox mit skaliertem Inhalt (Paintbox)
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mein Testprojekt hier mal angehängt.
|
AW: Firemonkey: Scrollbox mit skaliertem Inhalt (Paintbox)
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:
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.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz