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/)
-   -   Delphi primäre Form vertikal scrollen (https://www.delphipraxis.net/82799-primaere-form-vertikal-scrollen.html)

little_budda 19. Dez 2006 16:03


primäre Form vertikal scrollen
 
Hallo,

ich erzeuge dynamisch Inhalte in meiner Form.
Wenn ich mit meinem erzeugten Elementen den unteren Rand der Form überschreite
werden die Elemente zwar weiterhin erzeugt aber ich kann sie nicht mehr sehen
weil ich nicht nach unten scrollen kann.

Ich habe in den Eigenschaften der Form die Eigenschaft "AutoScroll" auf true sehen
aber es erscheint kein Scollbar.

Wenn ich die Clienthöhe anpasse wird meine Form immer größer ...

Ich wäre für einen Lösungsansatz sehr dankbar.

Gruß Holger.

:gruebel:

RavenIV 19. Dez 2006 16:09

Re: primäre Form vertikal scrollen
 
hast Du vielleicht den Wert Visible von VertScrollBar oder HorzScrollBar des Forms auf False stehen?

little_budda 19. Dez 2006 17:13

Re: primäre Form vertikal scrollen
 
Hallo.

Nein.
Die Visible Eigenschaften stehen für beide Scrollbars auf true.
Woran merkt die Form eigentlich das die aktive Fläche nicht ausreicht um den Inhalt darzustellen?
Kann ich da vielleicht ein Ereignis verwenden?

Die Eigenschaft "isScrollBarVisible" bleibt auch brav auf false stehen.


Gruß Holger.

TStringlist 19. Dez 2006 17:46

Re: primäre Form vertikal scrollen
 
Hallo, ein ähnliches Problem gibt es übrigens auch bei den ScrollBoxen. Der Knackpunkt ist hier wie da die Property "Range" der VertScrollBar. Wenn diese (wie hier der Fall) nicht automatisch mit eingestellt wird, dann muss man das eben jeweils selbst 'per Hand' tun, etwa so:


Delphi-Quellcode:
procedure TForm1.niceVertScrollBar;
var I, RangeMin : integer;
begin
  RangeMin := ClientHeight;
  for I := 0 to ControlCount-1 do
    if (Controls[I] is TWinControl) then
      with Controls[I] as TWinControl do
        if Top + Height > RangeMin then
          RangeMin := Top + Height;
  VertScrollBar.Range := RangeMin +10; // +10 = Abstandspuffer;
end;

little_budda 19. Dez 2006 18:24

Re: primäre Form vertikal scrollen
 
Hallo,

der Code klappt super.
Nun bekomme ich auch einen Scrollbalken.

Der Nachteil daran ist das meine Statusleiste
nach unten verschwindet sobald der Scrollbalken eingeblendet wird.

Wenn ich die Eigenschaft Align von "alBottom" auf "alNone" ändere
bleibt der Statusbar zwar am Boden aner wenn ich dann scrolle
verschiebt er sich mit dem Hintergrund.

Kann ich die Position der Statusbar irgendwie einfrieren?

Gruß Holger.

:(

TStringlist 19. Dez 2006 19:02

Re: primäre Form vertikal scrollen
 
Zitat:

Zitat von little_budda
Kann ich die Position der Statusbar irgendwie einfrieren?

Also dass ein direktes Einfrieren der Pos möglich ist, kann ich mir wenigstens im Moment nicht so ohne weiteres vorstellen.

Das einzigste was man in dieser Richtung aber machen könnte ist, gleich nach einer anfänglichen StatusBar noch eine ScrollBox mit auf die Form zu ziehen und deren Align auf "alClient" einzustellen. Alle weiteren Controls kämen dann einfach anstatt auf die Form auf die ScrollBox. DENN: Was ist eine Form mit ScrollBars im Grunde genommen schon anderes als eben auch nur wieder eine ScrollBox. Die Unterschiede dürften da jedenfalls kaum auffallen, imo :-D .

little_budda 19. Dez 2006 19:38

Re: primäre Form vertikal scrollen
 
Hallo,

mit der Scrollbox klappt das super.

Danke.

Gruß Holger.


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