Inhaltsverzeichnis

TComponent — Wurzel aller Vega-Objekte

Die gemeinsame Wurzel: sie trägt Besitz, Namen, Tag und den Zustand einer Komponente — aber keine Geometrie und kein Zeichnen. Das kommt erst bei TControl dazu.

Unit: Vega.Component · Basis: keine

Alle Steuerelemente · TControl


Wer hängt woran

Vega zieht die Trennlinie anders als Delphi, und zwar an der Frage, wer selbst in den Rahmenpuffer malt:

Zeichnet selbst Zeichnet nie, hält oder tickt nur
TControl und alles darunter TTimer, TImageList

In Delphi sind auch Menüs und Dialoge nichtsichtbare Komponenten — aber nur, weil Windows sie selbst zeichnet und die VCL-Klasse ein Umschlag um HMENU bzw. GetOpenFileName ist. Vega zeichnet alles selbst, also bleiben TPopupMenu und die Dialoge im Control-Ast.


Verwendung

var f: TForm := new TForm(320, 200, "Fenster");
var b: TButton := new TButton("OK");
b.SetName("BtnOk");
b.SetParent(f as TControl);
f.InsertComponent(b as TComponent);      // siehe Besonderheiten

Print(IntToStr(f.ComponentCount()));                      // 1
Print(IntToStr(b.ComponentIndex()));                      // 0
var g: TComponent := f.FindComponent("BtnOk");            // findet den Knopf
Print(b.GetName());                                       // BtnOk
Print(IntToStr(b.HasParent() as int64));                  // 1

b.SetState(csDesigning);
Print(IntToStr(b.HasState(csDesigning) as int64));        // 1
b.ClearState(csDesigning);

var oc: TControl := b.OwnerControl();                     // das Fenster


Besonderheiten

 
SetParent trägt die Komponente nicht in OwnedComponents ein. AddChild setzt das Feld Owner direkt, statt InsertComponent zu rufen. Nachgemessen mit lyxc 1.1.4A: nach b.SetParent(f) ist b.Owner das Formular, aber f.ComponentCount() ist 0, b.ComponentIndex() ist -1 und f.FindComponent(„BtnOk“) liefert null.

Bis das zusammengeführt ist: wer über FindComponent suchen will — der Delphi-Weg — ruft nach dem SetParent zusätzlich InsertComponent. Dann stimmen alle vier Werte.
Zustand Wert Bedeutung
csLoading 1 Liest gerade aus einer Formulardatei
csReading 2 Einzelne Eigenschaft wird gelesen
csWriting 4 Wird gerade geschrieben
csDestroying 8 Abbau läuft
csDesigning 16 Im Entwurf, nicht zur Laufzeit
csAncestor 32 Aus einem geerbten Formular
csUpdating 64 Sammeländerung läuft
csFixups 128 Verweise werden nachgetragen
csFreeNotification 256 Will vom Verschwinden anderer erfahren
csInline 512 Eingebettetes Formular
Stil Wert Bedeutung
csInheritable 1 Vorgabe, wie in Delphi
csCheckPropAvail 2 Eigenschaften vor dem Zugriff prüfen
csSubComponent 4 Gehört fest zu einer anderen Komponente
csTransient 8 Wird nicht gespeichert

Letzte Aktualisierung: 2026-08-20 — API maschinell aus Vega/Component.lyx erhoben, Beispiel mit lyxc 1.1.4A übersetzt und ausgeführt.

Eigenschaften

Alle Eigenschaften, auch die geerbten.

Name Typ Bedeutung Herkunft
Owner TComponent Wer diese Komponente wegräumt — nicht das Elternteil im Zeichenbaum eigen
OwnedComponents TObjectList Die Komponenten, die dieser gehören (Delphis Components[]) eigen
Name pchar Name der Komponente, für FindComponent und Formulardateien eigen
Tag int64 Freier Wert für die Anwendung eigen
ComponentState int64 Zustand als Bitmaske: csLoading, csDestroying, csDesigning eigen
ComponentStyle int64 Stil als Bitmaske; Vorgabe csInheritable eigen

Methoden

Alle Methoden, auch die geerbten.

Signatur Zweck Herkunft
InitComponent(): void Grundzustand herstellen — von jeder Ableitung im Create zu rufen, da Lyx Konstruktoren nicht vererbt eigen
Destroy(): void Gibt eigene Ressourcen frei eigen
ComponentCount(): int64 Anzahl der eigenen Komponenten eigen
Components(index: int64): TComponent Eigene Komponente an dieser Stelle eigen
ComponentIndex(): int64 Eigener Platz in der Liste des Besitzers, -1 ohne Besitzer eigen
InsertComponent(c: TComponent): void Komponente in Besitz nehmen; ein bisheriger Besitzer gibt sie ab eigen
RemoveComponent(c: TComponent): void Komponente aus dem Besitz nehmen eigen
FindComponent(name: pchar): TComponent Eigene Komponente über ihren Name suchen — eine Ebene tief eigen
DestroyComponents(): void Alle Besitztümer abbauen, von hinten nach vorn eigen
SetName(v: pchar): void Namen setzen eigen
GetName(): pchar Namen lesen eigen
SetTag(v: int64): void Tag setzen eigen
GetTag(): int64 Tag lesen eigen
HasState(bits: int64): bool Sind diese Zustandsbits gesetzt eigen
SetState(bits: int64): void Zustandsbits setzen eigen
ClearState(bits: int64): void Zustandsbits löschen eigen
HasParent(): bool Hängt die Komponente in einem Baum eigen
GetParentComponent(): TComponent Übergeordnete Komponente im Baum eigen
GetNamePath(): pchar Voller Name für Formulardateien; in Vega der Name selbst eigen
Tick(now: int64): bool Einmal je Bild aus der Fensterschleife; true = es hat sich etwas getan, also neu zeichnen eigen
NextDueIn(now: int64): int64 Wie lange die Schleife höchstens schlafen darf, bis diese Komponente wieder dran ist; -1 = nie von selbst eigen

Ereignisse

Keine.

Letzte Aktualisierung: 2026-08-20 — API maschinell aus Vega/Component.lyx erhoben, Beispiel mit lyxc 1.1.4A übersetzt und ausgeführt.