AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Firemonkey: Scrollbox mit skaliertem Inhalt (Paintbox)
Thema durchsuchen
Ansicht
Themen-Optionen

Firemonkey: Scrollbox mit skaliertem Inhalt (Paintbox)

Ein Thema von idontknow · begonnen am 2. Nov 2020 · letzter Beitrag vom 2. Nov 2020
Antwort Antwort
idontknow

Registriert seit: 21. Apr 2008
Ort: Schleswig-Holstein
60 Beiträge
 
Delphi 11 Alexandria
 
#1

Firemonkey: Scrollbox mit skaliertem Inhalt (Paintbox)

  Alt 2. Nov 2020, 12:58
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:
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;
Das ist nach dem Start sichtbar und kann prima gescrollt werden. Jetzt skaliere ich den Inhalt, indem ich

PaintBox1.Scale.Point := PointF(2.0, 2.0); 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.

Das geht doch aber sicher irgendwie, oder?

Ich hoffe, jemand hat einen Tipp für mich, schon mal vielen Dank im voraus...
Oliver

Geändert von idontknow ( 2. Nov 2020 um 12:59 Uhr) Grund: Firemonkey in Überschrift nachgetragen
  Mit Zitat antworten Zitat
idontknow

Registriert seit: 21. Apr 2008
Ort: Schleswig-Holstein
60 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Firemonkey: Scrollbox mit skaliertem Inhalt (Paintbox)

  Alt 2. Nov 2020, 17:32
Ich habe mein Testprojekt hier mal angehängt.
Angehängte Dateien
Dateityp: zip Test FMX Scrollbox mit skalierter Paintbox.zip (11,3 KB, 3x aufgerufen)
Oliver
  Mit Zitat antworten Zitat
idontknow

Registriert seit: 21. Apr 2008
Ort: Schleswig-Holstein
60 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Firemonkey: Scrollbox mit skaliertem Inhalt (Paintbox)

  Alt 2. Nov 2020, 18:15
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.
Oliver
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz