AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TScrollbox mit dynamischem Inhalt sorgt für Chaos
Thema durchsuchen
Ansicht
Themen-Optionen

TScrollbox mit dynamischem Inhalt sorgt für Chaos

Offene Frage von "berens"
Ein Thema von berens · begonnen am 24. Apr 2007 · letzter Beitrag vom 26. Apr 2007
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

TScrollbox mit dynamischem Inhalt sorgt für Chaos

  Alt 24. Apr 2007, 12:12
Moin!

Ich habe eine TScrollbox. Kann auch eine TLMDScrollbox sein.
Diese enthält unbekannt viele TPanel, die unterschiedlich hoch sein können und ihre Höhe auch während der Laufzeit ändern können (Einklappen zwecks Übersichtlichkeit).
Alle TPanel haben Align = alTop. Über eine Funktion kann ich ermitteln, wie hoch VertScrollbar.Range sein müsste.

Sobald ein Panel zusammen- oder auseinandergeklappt wird löst es meine eigene OnBlaBla Funktion aus, woraufhin das TForm die benötige VertScrollbar.Range neu berechnet diesen Wert auch setzt.

Soweit, sogut.

Probleme:
Die VertScrollbar wird nicht immer angezeigt, obwohl Range immer > Scrollbox.Height. Auch mit Scrollbox.AutoScroll = true/false getestet.

Ausserdem werden nach dem zusammenklappen eines Panels die anderen Panele teilweise nicht mehr (richtg) dargestellt, aber ich denke, das ist ein anderes Thema.


* Gibt es eine bessere Komponente für dynamische Inhalte?
* Was kann das mit der blöden VertScrollbar?

Thx für Antworten im Vorraus!
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#2

Re: TScrollbox mit dynamischem Inhalt sorgt für Chaos

  Alt 25. Apr 2007, 19:09
Hast Du es mal mit einem TFlowPanel versucht?

Das Flopanel in die Scrollbox legen.
FlowPanel.Align := altop;
FlowPanel.autosize := true;

Dann die Panels im Flowpanel erzeugen.

Das funktioniert bei mir wunderbar.

Gruß EarlyBird
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#3

Re: TScrollbox mit dynamischem Inhalt sorgt für Chaos

  Alt 25. Apr 2007, 21:59
Also auf den ersten Blick macht das einen super genialen Eindruck und scheint tatsächlich genau das zu machen, was ich verzweifelt suche...

Mal schauen, ob es in meinem "richtigem" Programm dann auch so funzt, wie es soll

Super Tip, vielen Dank!
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#4

Re: TScrollbox mit dynamischem Inhalt sorgt für Chaos

  Alt 26. Apr 2007, 11:03
Hm... Irgendwie klappt das doch nicht so, wie ich mir das vorstelle.

Meine Panels innerhalb von dem FlowPanel haben alle alTop.

Abgesehen davon, dass das Flowpanel die Komponenten nicht wirklich mit alTop ausrichten lässt (naja, ist ja ein Teil seiner Funktion), bringt es z.B. Probleme wenn ich 2 Clientpanels habe, beide volle Breite, beide alTop, und jetzt erst AutoSize auf true setzen. Nun hat das komplette Panel die Höhe von nur einem Clientpanel.

Beispiel:

Client_1 (TPanel) Height = 50, alTop
Client_2 (TPanel) Height = 50, alTop
FlowPanel Height = 50 <-- falsch, müsste 100 sein
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#5

Re: TScrollbox mit dynamischem Inhalt sorgt für Chaos

  Alt 26. Apr 2007, 13:01
Versuch es mal damit:
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  panel : TPanel;
  I : Integer;
begin
FlowPanel1.AutoWrap := False;
FlowPanel1.AutoSize := True;
FlowPanel1.Align := alTop;
FlowPanel1.FlowStyle := fsTopBottomLeftRight;


    for I := 0 to 20 do
      begin
        panel := TPanel.Create(self);
        panel.Width := FlowPanel1.Width;
        panel.Height := 26;
        panel.Parent := FlowPanel1;
        panel.Show;
        panel.Caption := 'No.: ' + IntToStr(I) + ' / height= ' + inttostr(panel.Height);
      end;

   FlowPanel1.Controls[1].Height := 50;
   TPanel(FlowPanel1.Controls[1]).Caption := 'No.: 1 / height= ' + IntToStr(FlowPanel1.Controls[1].Height);

   FlowPanel1.Controls[2].Height := 5;
   TPanel(FlowPanel1.Controls[2]).Caption := 'No.: 2 / height= ' + IntToStr(FlowPanel1.Controls[2].Height);

   FlowPanel1.Controls[3].Height := 100;
   TPanel(FlowPanel1.Controls[3]).Caption := 'No.: 3 / height= ' + IntToStr(FlowPanel1.Controls[3].Height);

    Caption := IntToStr(FlowPanel1.Height);
end;
Gruß
EarlyBird
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#6

Re: TScrollbox mit dynamischem Inhalt sorgt für Chaos

  Alt 26. Apr 2007, 13:08
Hm, komisch...

Vielleicht darf ich einfach die Client-Panels nicht mit alTop machen?

Deine Demo funzt super, danke
  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 08:46 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