![]() |
TScrollBox dynamischer Inhalt
Hallo zusammen
Ich habe eine ScrollBox in der ich dynamisch Frames anzeige. Nun möchte ich folgendes erreichen: - Der Frame soll im Normalfall die gesamte ScrollBox ausfüllen (Align = alClient). - Der Frame hat eine Mindestgröße die ich vorgeben möchte, damit diese nie kleiner werden kann. - Wird die ScrollBox kleiner als die Mindestgröße des Frames soll gescrollt werden (ScrollBars erscheinen). Das Verhalten entspricht in etwa dem des Option-Dialogs der IDE. Ist der Dialog zu klein um alle Elemente anzuzeigen, dann werden ScrollBars eingeblendet. Ansonsten wird der Client-Bereich (mehr oder weniger) ausgefüllt. Wenn ich die Mindestgröße des Frames mit Constraints limitiere, dann werden keine ScrollBars angezeigt, sondern die ScrollBox ebenfalls in ihrer Mindestgröße limitiert. Also: Wie erreiche ich, dass der Frame größendynamisch ist aber seine Mindestgröße limitiert ist (Align = alClient bzw. alTop) und das die ScrollBox in der der Frame angezeigt wird trotzdem kleiner als die Mindestgröße des Frames werden kann. In dem Fall sollen dann natürlich ScrollBars angezeigt werden. Ich hoffe ich konnte das Ganze einigermaßen verständlich beschreiben. Schonmal Danke für Eure Antworten. Alex |
AW: TScrollBox dynamischer Inhalt
Setze bei dem Frame das Align auf alNone. Dann fügst du folgenden Code im OnResize Event der ScrollBox ein:
Delphi-Quellcode:
var
H: Integer; W: Integer; begin W := Max(MyFrame.Constraints.MinWidth, MyScrollBox.ClientWidth); H := Max(MyFrame.Constraints.MinHeight, MyScrollBox.ClientHeight); MyFrame.SetBounds(0, 0, W, H); end; |
AW: TScrollBox dynamischer Inhalt
Zitat:
Aber: Ich darf im Frame nicht die Constraints verwenden, da diese mir ja wieder die ScrollBox in ihrer Mindestgröße limitieren... Update: Ne, geht trotzdem :-) Vielen Dank Uwe! |
AW: TScrollBox dynamischer Inhalt
Zitat:
|
AW: TScrollBox dynamischer Inhalt
Hallo Uwe,
hast Du auch noch eine Idee wie man das "flackern" der ScrollBars wegbekommt? Das Problem ist das beim Verkleinern der eingebettete Frame erstmal zu groß ist, daher werden ScrollBars aktiviert. Sobald der Frame dann angepasst wurde sind die zwar wieder weg, aber der Frame wird einmal mit dem minimierten Bereich (Client area - ScrollBar size) berechnet. Somit stimmt die Größe der dynamischen controls im Frame nicht... Ich habe schon versucht im "OnCanResize" das AutoScroll abzuschalten oder die ScrollBars.Visible auf False zu setzen und dann nach der Größenanpassung im "OnResize" wieder zu aktivieren. Das haut aber alles nicht hin. Alex |
AW: TScrollBox dynamischer Inhalt
Du könntest es mal mit einem LockDrawing/UnlockDrawing bei dem Frame versuchen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 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