====== 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'' → [[lyx_-_programmiersprache:vega:units|Alle Units]] · [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega|Vega VCL]] ---- ===== Klassen ===== ^ Klasse ^ Basis ^ Zweck ^ | [[lyx_-_programmiersprache:vega:controls:tcontrol|TControl]] | [[lyx_-_programmiersprache:vega:controls:tcomponent|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 [[lyx_-_programmiersprache:vega:units:dispatch|Vega.Dispatch]] das Fokussetzen einträgt | ===== Konstanten ===== ^ Name ^ Typ ^ Wert ^ Bedeutung ^ | ''VEGA_MAX_CHILDREN'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|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 [[lyx_-_programmiersprache:vega:units:dispatch|Vega.Dispatch]] beim Start | | ''NewControl(): TControl'' | Erzeugt ein rohes ''TControl'' als Container | ---- ===== Zu beachten ===== * **Setter zeichnen neu, Felder nicht.** ''c.Left := 20'' verschiebt 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 ist ''0''. * Ein Control kennt den Fokus nicht selbst; deshalb der Umweg über ''SetFocusSetter''. Derselbe Haken-Mechanismus trägt auch Kontextmenüs ein. * ''TFocusFn'' steht im Quelltext **vor** seiner ersten Verwendung — sonst macht lyxc still zwei Variablen daraus (#1665). * Kinder liegen in einer [[lyx_-_programmiersprache:vega:controls:tobjectlist|TObjectList]] mit Adressen, nicht in einem Inline-Array: ein ''[64]TControl'' würde Kopien statt Referenzen ablegen (#1646). ---- ===== Abhängigkeiten ===== **Importiert:** [[lyx_-_programmiersprache:vega:units:types|Vega.Types]], [[lyx_-_programmiersprache:vega:units:component|Vega.Component]], [[lyx_-_programmiersprache:vega:units:events|Vega.Events]], [[lyx_-_programmiersprache:vega:units:canvas|Vega.Canvas]], [[lyx_-_programmiersprache:vega:units:theme|Vega.Theme]], [[lyx_-_programmiersprache:vega:units:strings|Vega.Strings]], [[lyx_-_programmiersprache:vega:units:lists|Vega.Lists]], [[lyx_-_programmiersprache:vega:units:style|Vega.Style]], [[lyx_-_programmiersprache:vega:units:font|Vega.Font]] · Standardbibliothek: ''std.time'' **Wird importiert von:** [[lyx_-_programmiersprache:vega:units:actions|Vega.Actions]], [[lyx_-_programmiersprache:vega:units:calendar|Vega.Calendar]], [[lyx_-_programmiersprache:vega:units:chrome|Vega.Chrome]], [[lyx_-_programmiersprache:vega:units:colorctrls|Vega.ColorCtrls]], [[lyx_-_programmiersprache:vega:units:colordlg|Vega.ColorDlg]], [[lyx_-_programmiersprache:vega:units:datetimepicker|Vega.DateTimePicker]], [[lyx_-_programmiersprache:vega:units:dialogs|Vega.Dialogs]], [[lyx_-_programmiersprache:vega:units:dispatch|Vega.Dispatch]], [[lyx_-_programmiersprache:vega:units:editbtn|Vega.EditBtn]], [[lyx_-_programmiersprache:vega:units:edits|Vega.Edits]], [[lyx_-_programmiersprache:vega:units:extctrls|Vega.ExtCtrls]], [[lyx_-_programmiersprache:vega:units:extras|Vega.Extras]], [[lyx_-_programmiersprache:vega:units:filedlg|Vega.FileDlg]], [[lyx_-_programmiersprache:vega:units:fontdlg|Vega.FontDlg]], [[lyx_-_programmiersprache:vega:units:forms|Vega.Forms]], [[lyx_-_programmiersprache:vega:units:grids|Vega.Grids]], [[lyx_-_programmiersprache:vega:units:hints|Vega.Hints]], [[lyx_-_programmiersprache:vega:units:images|Vega.Images]], [[lyx_-_programmiersprache:vega:units:layout|Vega.Layout]], [[lyx_-_programmiersprache:vega:units:lfmclasses|Vega.LfmClasses]], [[lyx_-_programmiersprache:vega:units:lfmload|Vega.LfmLoad]], [[lyx_-_programmiersprache:vega:units:lfmsave|Vega.LfmSave]], [[lyx_-_programmiersprache:vega:units:listctrls|Vega.ListCtrls]], [[lyx_-_programmiersprache:vega:units:listview|Vega.ListView]], [[lyx_-_programmiersprache:vega:units:maskedit|Vega.MaskEdit]], [[lyx_-_programmiersprache:vega:units:menus|Vega.Menus]], [[lyx_-_programmiersprache:vega:units:stdctrls|Vega.StdCtrls]], [[lyx_-_programmiersprache:vega:units:trees|Vega.Trees]], [[lyx_-_programmiersprache:vega:units:valuelist|Vega.ValueList]] Letzte Aktualisierung: 2026-08-20 — Klassen, Aufzählungen, Konstanten und freie Funktionen maschinell aus ''Vega/Control.lyx'' erhoben.