Ein TPanel, das seine Kinder selbst anordnet: eins nach dem anderen in Fließrichtung, mit Umbruch am Rand. Nützlich überall dort, wo die Zahl der Elemente erst zur Laufzeit feststeht — Schaltflächenreihen, Merkmalslisten, Werkzeugsammlungen.
Unit: vega.extctrls · Basis: TPanel
→ Alle Steuerelemente · Klassenbaum · Guide: Komponenten
Kette: TComponent → TControl → TPanel → TFlowPanel
Direkte Nachfahren: keine — diese Klasse wird nicht weiter abgeleitet.
Quelle: vega/extctrls.lyx
var fp: TFlowPanel := new TFlowPanel();
fp.SetBounds(8, 8, 320, 120);
fp.SetSpacing(6);
fp.SetAutoWrap(true);
fp.SetParent(f);
var i: int64 := 0;
while (i < 8) {
var b: TButton := new TButton("Knopf");
b.SetBounds(0, 0, 70, 26); // Groesse zaehlt, Position ordnet das Panel
b.SetParent(fp as TControl);
i := i + 1;
}
Die Kinder brauchen keine Position — nur eine Größe. Wer die Reihenfolge ändern will, greift über ControlList zu.
AutoWrap entscheidet über den Umbruch. Ohne ihn laufen die Kinder über den Rand hinaus — das ist Delphis Verhalten und manchmal genau richtig (eine Werkzeugreihe, die abgeschnitten wird).Spacing sitzt an der Fläche, nicht am Kind. Delphi kennt das nicht und lässt jedes Kind seinen eigenen Abstand tragen; ein Wert am Panel ist das einfachere Mittel und wirkt sichtbar.FlowStyle bestimmt die Richtung — von links nach rechts, von oben nach unten und die jeweiligen Gegenrichtungen.ControlList ist die Reihenfolge, nicht die Kinderliste des Controls: dort steht, in welcher Folge angeordnet wird.Alle Eigenschaften, auch die geerbten.
| Name | Typ | Bedeutung | Herkunft |
|---|---|---|---|
ComponentState | int64 | Zustand als Bitmaske (csLoading, csDestroying …) | TComponent |
ComponentStyle | int64 | Stil als Bitmaske; Vorgabe csInheritable | TComponent |
Name | pchar | Name der Komponente — für FindComponent und beim Laden aus LFM | TComponent |
OwnedComponents | TObjectList | Die Komponenten, die DIESER gehoeren. Delphis Components[]. Zeigerliste, keine Kopien: TObjectList hält int64-Adressen | TComponent |
Owner | TComponent | Wer diese Komponente wegraeumt. Nicht der Elternteil im Zeichenbaum — das ist bei TControl `Parent` | TComponent |
Tag | int64 | Freier Wert für eigene Zwecke; die Bibliothek fasst ihn nicht an | TComponent |
Alignment | int64 | Beschriftung mittig auf der Flaeche, wie in Delphi | TPanel |
BevelColor | TColor | Eigene Kantenfarbe. Durchsichtig heißt „Farben des Themes nehmen“ — hell oben links, dunkel unten rechts | TPanel |
BevelInner | int64 | Innere Kante: erhaben, vertieft oder keine | TPanel |
BevelOuter | int64 | Delphis Kanten: aussen, innen, Breite jeder Kante, Abstand dazwischen | TPanel |
BevelWidth | int64 | Breite der Kanten in Pixeln | TPanel |
Border | int64 | Der aeltere Vega-Rahmen. Er bleibt, weil bestehende Formulare ihn setzen; PB_RAISED/PB_SUNKEN sind dasselbe wie BevelOuter, PB_SINGLE ist eine Linie, die Delphi so nicht kennt | TPanel |
ParentBackground | bool | Hintergrund nicht selbst fuellen, sondern den des Elternteils nehmen | TPanel |
ShowAccelChar | bool | & im Text als Tastenkürzel deuten statt anzuzeigen | TPanel |
TextLayout | int64 | Senkrechte Ausrichtung der Beschriftung | TPanel |
AutoWrap | bool | Umbrechen, wenn die Reihe voll ist? Ohne AutoWrap laufen die Kinder über den Rand hinaus — das ist Delphis Verhalten und manchmal genau das, was man will (eine Werkzeugreihe, die … | eigen |
ControlList | TFlowPanelControls | Reihenfolge der angeordneten Kinder | eigen |
FlowStyle | int64 | Fließrichtung der Anordnung | eigen |
Spacing | int64 | Abstand zwischen den Kindern. Delphi hat ihn nicht und laesst jedes Kind seinen eigenen BorderSpacing tragen; hier ist ein Wert an der Flaeche das einfachere Mittel, und er wirkt sichtbar | eigen |
Alle Methoden, auch die geerbten.
| Signatur | Zweck | Herkunft |
|---|---|---|
ClearState(bits: int64): void | Zustandsbits löschen | TComponent |
ComponentCount(): int64 | Anzahl der eigenen Komponenten | TComponent |
ComponentIndex(): int64 | Delphis ComponentIndex: der eigene Platz in der Liste des Besitzers | TComponent |
Components(index: int64): TComponent | Eigene Komponente an dieser Stelle | TComponent |
Destroy(): void | Raeumt die eigene Liste ab, aber NICHT die Einträge — welche Komponenten ihre Besitztuemer mitnehmen, entscheidet die Ableitung über DestroyComponents() | TComponent |
DestroyComponents(): void | Baut die Besitztuemer ab. Von hinten, weil jedes Destroy() sich selbst aus der Liste austraegt | TComponent |
FindComponent(name: pchar): TComponent | Sucht unter den EIGENEN Komponenten, eine Ebene tief — wie in Delphi | TComponent |
GetName(): pchar | Namen lesen | TComponent |
GetNamePath(): pchar | Der eigene Name. Delphi hängt bei Unterkomponenten den des Besitzers davor; Vega hat keine, also ist es der Name selbst | TComponent |
GetTag(): int64 | Tag lesen | TComponent |
HasState(bits: int64): bool | Sind diese Zustandsbits gesetzt | TComponent |
InitComponent(): void | Kein Konstruktor: lyxc vererbt Konstruktoren nicht, jede Ableitung ruft InitComponent() im eigenen Create() | TComponent |
InsertComponent(c: TComponent): void | Komponente in Besitz nehmen; ein bisheriger Besitzer gibt sie ab | TComponent |
RemoveComponent(c: TComponent): void | Komponente aus dem Besitz nehmen | TComponent |
SetName(v: pchar): void | Setzt Name | TComponent |
SetState(bits: int64): void | Zustand setzen | TComponent |
SetTag(v: int64): void | Setzt Tag | TComponent |
BorderStyle(): int64 | Delphis BorderStyle kennt genau zwei Werte: kein Rahmen oder eine Linie. Das ist ein Ausschnitt aus Border (PB_*), und beide zeigen hier auf dasselbe Feld | TPanel |
ContentRect(): TRect | Die Flaeche innerhalb aller Kanten und Raender. Dahin gehört die Beschriftung — und wer Kinder von Hand setzt, rechnet damit. BorderWidth ist das geerbte Feld von TControl; die … | TPanel |
Create(): void | Anlegen; new TFlowPanel() | TPanel |
SetAlignment(v: int64): void | Setzt Alignment | TPanel |
SetBevelColor(v: TColor): void | Setzt BevelColor | TPanel |
SetBevelInner(v: int64): void | Setzt BevelInner | TPanel |
SetBevelOuter(v: int64): void | Setzt BevelOuter | TPanel |
SetBevelWidth(v: int64): void | Setzt BevelWidth | TPanel |
SetBorderStyle(v: int64): void | Fensterrahmen setzen | TPanel |
SetCaptionText(s: pchar): void | Text setzen und neu zeichnen | TPanel |
SetTextLayout(v: int64): void | Setzt TextLayout | TPanel |
AddFlowChild(c: TControl): TFlowPanelControl | Ein Kind aufnehmen UND in die Flussreihenfolge eintragen | eigen |
ArrangeFlow(): void | Die Kinder verteilen. Gerechnet wird IMMER links-oben-vorwaerts, und erst zum Schluss gespiegelt — sonst stuenden acht Faelle als acht Schleifen da, und sieben davon wären ungetestet | eigen |
Create(): void | Anlegen; new TFlowPanel() | eigen |
Destroy(): void | Gibt eigene Ressourcen frei | eigen |
FlowChild(i: int64): TControl | Angeordnetes Kind Nummer i | eigen |
FlowCount(): int64 | Das n-te Kind in Flussreihenfolge. Ohne Einträge gilt die Reihenfolge im Baum — so verhaelt sich die Flaeche auch dann sinnvoll, wenn jemand seine Kinder mit dem gewoehnlichen AddChild … | eigen |
ReihenRueckwaerts(): bool | Und die Nebenrichtung — die, in der die Reihen aufeinander folgen | eigen |
Rueckwaerts(): bool | Laeuft die Hauptrichtung rueckwaerts? Bei waagerechtem Fluss heißt das rechts-nach-links, bei senkrechtem unten-nach-oben | eigen |
Waagerecht(): bool | Ob waagerecht gerollt wird | eigen |
WrapsAfter(i: int64): bool | Ob nach diesem Kind umgebrochen wird | eigen |
Letzte Aktualisierung: 2026-09-05 — Seite neu angelegt; erhoben aus vega/extctrls.lyx im Repo lyx-vcl.