AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ScrollBox und FlowPanel richtig verknüpfen

Ein Thema von Nico B. · begonnen am 3. Nov 2020 · letzter Beitrag vom 4. Nov 2020
Antwort Antwort
Nico B.

Registriert seit: 16. Okt 2006
Ort: Riesa
60 Beiträge
 
Delphi XE7 Enterprise
 
#1

ScrollBox und FlowPanel richtig verknüpfen

  Alt 3. Nov 2020, 12:58
Hallo zusammen,

ich möchte ein FlowPanel mit Buttons füllen.
Sobald nicht mehr alle Buttons in das FlowPanel passen, soll das FlowPanel eine vertikale Scrollleiste bekommen.
Am liebsten hätte ich die Scrollleiste immer angezeigt, aber ich will nicht den zweiten Schritt vor dem ersten klären...
Die Größe des FlowPanels soll sich außerdem analog zur Fenstergröße ändern.
Und natürlich sollen dann auch die Buttons im FlowPanels entsprechend neu angeordnet werden.

Irgendwie bekomme ich das aber alles nicht richtig verknüppert.

Ich habe eine ScrollBox auf meine Form gepackt und anschließend ein FlowPanel in die ScrollBox.
In das FlowPanel packe ich zur Laufzeit die Buttons. Das geht soweit.

Die ScrollBox soll sich nun an Größenänderungen der Form anpassen.
Um die ScrollBox sollen 10 Pixel Platz bleiben. Ich habe dementsprechend Left- und Top-Eigenschaften der ScrollBox angepasst.
Die Height- und Width-Eigenschaften der ScrollBox habe ich auf Form.ClientHeight bzw. ClientWidth minus 20 gesetzt.
Außerdem habe ich für die ScrollBox Anchors auf [akLeft,akTop,akRight,akBottom] gesetzt.
Die ScrollBox wächst jetzt mit so wie sie soll.

Was muss ich jetzt machen, damit:
  • das FlowPanel immer genauso breit ist wie die ScrollBox?
  • das FlowPanel immer mindestens so hoch ist wie die ScrollBox?
  • das FlowPanel die Buttons zur Laufzeit bei Größenänderung selbständig neu anordnet?

Ich habe natürlich schon gelesen, gegoogelt, gesucht.
Immer wieder wird geschrieben, ich muss die Align-Eigenschaft des FlowPanel auf alTop stellen.
Autosize und Autowrap sollen auch true sein.
Aber irgendwie klappt es nicht richtig.

Mit Align=alTop Autosize=true und Autowrap true
erhalte ich eine vertikale Scrollleiste. So weit so gut.
Vergrößere ich dann zur Laufzeit mein Fenster zur Seite, rutschen die Buttons aber leider nicht nach.
Obwohl das FlowPanel zur Seite mit wächst.
Vergrößere ich dann zur Laufzeit mein Fenster nach unten, verschwindet die Scrollbar, wenn alle das gesamte FlowPanel und alle Buttons zu sehen sind.
Leider wächst das FlowPanel aber noch nicht mit.
Verkleinere ich dann zur Laufzeit mein Fenster wieder (Höhe), erscheint die Scrollbar wieder.
Der Teil funktioniert also schon mal ganz gut.
Nico Bäger
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.235 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: ScrollBox und FlowPanel richtig verknüpfen

  Alt 3. Nov 2020, 16:53
Wenn Du mit den zwei Controls nicht ganz zurecht kommst kann das vielleicht eine Alternative sein: https://www.delphipraxis.net/165177-scrollboxflow.html
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.796 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ScrollBox und FlowPanel richtig verknüpfen

  Alt 3. Nov 2020, 17:37
Eventuell bekommst du mehr Feedback, wenn du ein einfaches Beispielprojekt bereitstellst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.698 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: ScrollBox und FlowPanel richtig verknüpfen

  Alt 3. Nov 2020, 17:50
Ein Fenster hat die Eigenschaft "OnResize" meine ich. Die feuert immer, wenn das Fenster in der Größe verändert wird. In diesem Event kannst du evtl. auch eine Neuberechnung der Positionen vornehmen.
Ralph
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
5.742 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: ScrollBox und FlowPanel richtig verknüpfen

  Alt 3. Nov 2020, 18:27
Das FlowPanel kommt nicht damit klar wenn es z.B. Align = alTop und AutoSize = True gleichzeitig hat. Beide bestimmen ja die Größe des Panels und beide kommen sich irgendwie in die Quere.

Des Rätsels Lösung ist im OnResize-Event des FlowPanels das AutoSize einmal abzuschalten, Realign() aufzurufen und es danach wieder einzuschalten:

Delphi-Quellcode:
procedure TForm1.FlowPanel1Resize(Sender: TObject);
begin
   FlowPanel1.AutoSize := False;
   try
      FlowPanel1.Realign();
   finally
      FlowPanel1.AutoSize := True;
   end;
end;
Das sieht dann so aus:
https://imgur.com/a/CxZJCZd

Geändert von Der schöne Günther ( 3. Nov 2020 um 18:31 Uhr) Grund: Video hinzugefügt
  Mit Zitat antworten Zitat
Nico B.

Registriert seit: 16. Okt 2006
Ort: Riesa
60 Beiträge
 
Delphi XE7 Enterprise
 
#6

AW: ScrollBox und FlowPanel richtig verknüpfen

  Alt 4. Nov 2020, 07:46
Danke an alle für die Unterstützung.

Und vor allem vielen Dank an dich Günther.
Jetzt hast du mir schon wieder mein Problem gelöst!
Nico Bäger
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 04:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf