Vega.Control — Wurzel aller sichtbaren Elemente
Das Herz der VCL: Baum, Geometrie, Zeichnen, Ereignisse, Fokus, Anker. Vega arbeitet im Retained Mode — der Baum bleibt bestehen und wird neu gezeichnet, wenn sich etwas ändert; die Anwendung beschreibt nicht jedes Bild neu. Hier stehen außerdem die Handler-Typen, die jedes Control benutzt.
Quelldatei: Vega/Control.lyx
→ Alle Units · Alle Steuerelemente · Vega VCL
Klassen
| Klasse | Basis | Zweck |
|---|---|---|
| TControl | TComponent | Basisklasse und zugleich roher Container |
Schnittstellen
| Name | Zweck |
|---|---|
IControlProps | Kleiner Vertrag über Lage, Größe und Elternteil — damit Layoutcode nicht die ganze Klasse kennen muss |
Typaliase
| Name | Ist | Zweck |
|---|---|---|
TNotifyEvent | fn(sender: TControl): void | Handler ohne Zusatzangaben: fn(sender: TControl): void |
TMouseEvent | fn(sender: TControl, x: int64, y: int64, button: int64): void | Maus: Position, Taste, Zusatztasten |
TKeyEvent | fn(sender: TControl, key: int64, modifiers: int64): void | Taste gedrückt oder losgelassen |
TCharEvent | fn(sender: TControl, cp: int64): void | Eingegebenes Zeichen |
TWheelEvent | fn(sender: TControl, delta: int64): void | Mausrad mit Drehrichtung |
TPaintEvent | fn(sender: TControl, canvas: TCanvas): void | Zeichnen auf einem übergebenen TCanvas |
TDragOverEvent | fn(sender: TControl, source: TControl,
x: int64, y: int64): bool | Über einem möglichen Ziel; Rückgabe true nimmt an |
TDragDropEvent | fn(sender: TControl, source: TControl,
x: int64, y: int64): void | Etwas wurde abgelegt |
TDragEndEvent | fn(sender: TControl, target: TControl,
x: int64, y: int64): void | Ziehgeste beendet; target ist 0 bei Abbruch |
TFocusFn | fn(c: TControl): bool | Haken, über den Vega.Dispatch das Fokussetzen einträgt |
Konstanten
| Name | Typ | Wert | Bedeutung |
|---|---|---|---|
VEGA_MAX_CHILDREN | int64 | 64 | Höchstzahl der Kinder eines Controls |
Freie Funktionen
| Signatur | Zweck |
|---|---|
SetFocusSetter(f: TFocusFn): void | Trägt die Funktion ein, die den Fokus setzen kann — gerufen von Vega.Dispatch beim Start |
NewControl(): TControl | Erzeugt ein rohes TControl als Container |
Zu beachten
- Setter zeichnen neu, Felder nicht.
c.Left := 20verschiebt still,c.SetLeft(20)zeichnet neu. Für Berechnungen ist der direkte Feldzugriff richtig. - Handler sind freie Funktionen, keine Methodenzeiger:
b.OnClick := AufKlick— ohne Klammern. Ein nicht gesetzter Handler ist0. - Ein Control kennt den Fokus nicht selbst; deshalb der Umweg über
SetFocusSetter. Derselbe Haken-Mechanismus trägt auch Kontextmenüs ein. TFocusFnsteht im Quelltext vor seiner ersten Verwendung — sonst macht lyxc still zwei Variablen daraus (#1665).- Kinder liegen in einer TObjectList mit Adressen, nicht in einem Inline-Array: ein
[64]TControlwürde Kopien statt Referenzen ablegen (#1646).
Abhängigkeiten
Importiert: Vega.Types, Vega.Component, Vega.Events, Vega.Canvas, Vega.Theme, Vega.Strings, Vega.Lists, Vega.Style, Vega.Font · Standardbibliothek: std.time
Wird importiert von: Vega.Actions, Vega.Calendar, Vega.Chrome, Vega.ColorCtrls, Vega.ColorDlg, Vega.DateTimePicker, Vega.Dialogs, Vega.Dispatch, Vega.EditBtn, Vega.Edits, Vega.ExtCtrls, Vega.Extras, Vega.FileDlg, Vega.FontDlg, Vega.Forms, Vega.Grids, Vega.Hints, Vega.Images, Vega.Layout, Vega.LfmClasses, Vega.LfmLoad, Vega.LfmSave, Vega.ListCtrls, Vega.ListView, Vega.MaskEdit, Vega.Menus, Vega.StdCtrls, Vega.Trees, Vega.ValueList
Letzte Aktualisierung: 2026-08-20 — Klassen, Aufzählungen, Konstanten und freie Funktionen maschinell aus Vega/Control.lyx erhoben.
