Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TScrollBox: Range automatisch ändern?? (https://www.delphipraxis.net/181488-tscrollbox-range-automatisch-aendern.html)

romber 19. Aug 2014 17:38

TScrollBox: Range automatisch ändern??
 
Hallo!

Sicherlich bin ich nicht der Erste, der dieses Problem hat. Allerding habe ich im Forum nichts dazu gefunden.

Ich habe eine TScrollBox, die als Container für mehrere Grids fungiert. Die Grids werden dynamisch befült, die Höhen der Gridsd werden automatisch angepasst (AutoSize = true). Dabei ändert sich auch der Range der ScrollBox nur bei Größenänderung der sichtbaren Grids. Liegt das geänderte Grid unterhalb des sichtbaren Bereichs der ScrollBox, bleibt der Range der ScrollBox ungeändert. Erst wenn man nach unten scrollt und der obere Rand des Grids sichtbar wird ändert sich der Range.

Wie bringe ich der ScrollBox bei, auch auf die Veränderungen der unsichtbaren Komponenten zu reagieren?

romber 20. Aug 2014 08:37

AW: TScrollBox: Range automatisch ändern??
 
Hat keiner Ideen?

Perlsau 20. Aug 2014 08:58

AW: TScrollBox: Range automatisch ändern??
 
Wenn ich dynamische Komponenten in einer Scrollbox unterbringe, verwende ich dazu immer ein Panel, das seine Größe nach den Komponenten richtet und direkt auf der Scrollbox liegt. Natürlich muß ich im Code jeweils vor dem Zeichnen bzw. Platzieren ausrechnen, wie hoch und wie breit das Panel sein muß, um alles aufzunehmen.

Da sich die Breite eines Stringgrids nicht automatisch dem Inhalt der breitesten Textzeile anpaßt, mußt du sowieso Berechnungen anstellen. Am Ende hast du Breite und Höhe des Stringgrids. Danach platzierst du das nächste Stringgrid unter dem ersten usw. Der Top-Wert des letzten Stringgrids plus seines Heightwertes plus sagen wir mal 30 Pixel Rand ergibt dann die Höhe des Panels. Ebenso richtest du die Breite des Panels, das selbstbverständlich immer auf der Position 0/0 liegt, nach der Breite des breitesten Stringgrids plus Rand rechts und links.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:20 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