Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Komponente TScrollBoxFlow (https://www.delphipraxis.net/117765-komponente-tscrollboxflow.html)

stahli 24. Jul 2008 11:42


Komponente TScrollBoxFlow
 
Liste der Anhänge anzeigen (Anzahl: 4)
Hallo Gemeinde,

ich will auch einmal Gutes tun und meine neue Komponente im Forum hinterlegen...

Das ist eine TScrollBox, die alle enthaltenen Controls automatisch "optimal" anordnet und dabei einige Optionen anbietet:


TScrollBoxFlow = class(TScrollBox)

procedure Flow;
- aktualisiert die Anordnungen
- wird automatisch bei Resize und Propertyänderungen durchgeführt

property FlowSort;
- legt fest, wie die Controls zuvor sortiert werden
- das beste Ergebnis (geringste Zwischenräume) ist mit ControlBreite-Absteigend zu erreichen
- das führt allerdings dazu, dass die größten Komponenten alle möglichst oben links stehen

property FlowMargin;
- legt den freien Bereich um jedes Control fest

globale Variable TestMode:
- ermöglicht die schrittweise Anzeige der Berechnungen


Die Arbeitsweise:
- die Anordnung erfolgt derzeit immer vertikal
- eine Erweiterung auf horizontale Anordnung wäre aber auch leicht möglich
- die Komponenten werden nacheinander möglichst weit oben und links positioniert
- ist ein Platz gefunden, wird dieser festgelegt
- eine rekursive Suche oder ein nachträglier Tausch von positionierten Komponenten zwecks einer evtl. Optiomierung erfolgt nicht
- (die Ableitung von TsScrollBox (AlphaSkins) statt von TScrollBox ist problemlos möglich)


Gruß Stahli

mimi 24. Jul 2008 16:14

Re: Komponente TScrollBoxFlow
 
ich schreibe gerade auch an einer scrollbox die in etwa nach diser Technik die ich hier vorgestellt habe(als pluto)
http://www.delphigl.com/forum/viewtopic.php?t=7669
das meiste geht auch schon recht gut, arbeitet deine nach dem selben Grund Prinzip ?

stahli 24. Jul 2008 16:32

Re: Komponente TScrollBoxFlow
 
Nein, ich denke nicht.

Ich benutze eine ganz normale TScrollBox und habe der lediglich die Fähigkeit hinzugefügt, die in ihr bereits enthaltenen Controls so anzuordnen, dass möglichst wenig Freiräume entstehen.
Die Positionen berechne ich "virtuell", indem ich für jedes Control ein Rect verwalte und diese Rects nacheinander möglichst sinnvoll anordne.
Dann werden die Rect-Positionen einfach den zugehörigen Controls zugewiesen.

Das funktioniert schnell und gut, aber eigentlich ist es eine ganz normale ScrollBox.

Stahli

mimi 24. Jul 2008 16:35

Re: Komponente TScrollBoxFlow
 
ach so, hatte mir dein Soruce-Code nicht angeschaut !


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