====== Lyx — Vega VCL ====== > Diese Seiten beschreiben die **Oberflächenbibliothek** Vega. Sie liegt in einem eigenen Repository (''lyx-vcl'') und gehört nicht zur Standardbibliothek — alle Beispiele werden aus dessen Wurzel übersetzt, mit ''-I .'' und dem passenden Plattformpfad. Eine Komponentenbibliothek für grafische Oberflächen, geschrieben in **Lyx**. Aufbau und Benennung folgen Delphis VCL — wer [[lyx_-_programmiersprache:vega:controls:tform|TForm]], [[lyx_-_programmiersprache:vega:controls:tbutton|TButton]] und ''OnClick'' kennt, findet sich sofort zurecht. Vega zeichnet **alles selbst**. Es gibt keine Systemwidgets, keine GTK-, keine Qt-Abhängigkeit. Vom Betriebssystem braucht die Bibliothek genau zwei Dinge: ein Fenster und einen Ereignisstrom. Alles andere — Rahmen, Schrift, Knöpfe, Menüs, Bildlaufleisten — entsteht Pixel für Pixel im eigenen Puffer. ===== Stand ===== ^ Bereich ^ Stand ^ | Steuerelemente | 54 Controlklassen (37 direkt an [[lyx_-_programmiersprache:vega:controls:tcontrol|TControl]]), 115 Klassen in 54 Units | | Backends | X11 (Linux), Win32 (Windows), Null (Tests) | | Formularformat LFM | Kern vollständig: Werte, Parser, Registry, Lader, Schreiber | | Themes | ''.vtheme''-Dateien, Kaskade, Fünf-Achsen-Selektor | | Tests | 67 unter Linux, 2 weitere nur für Windows; dazu 4 statische Prüfungen | | Beispiele | 33 lauffähige Programme | | Doku hier | 153 Seiten: 15 Guides, 71 Detailseiten (67 Steuerelemente und Bausteine + 4 Hilfsklassen), 55 Unit-Seiten (Einstieg, Layout, Zeichnen, Dialoge, Listen, Befehle, LFM, Themes, Fenster, Drag&Drop, Portabilität, eigene Steuerelemente, Praxis), dazu Architektur, Controls, Backends, LFM-Referenz, Themes, Werkzeuge, Beispiele, Lyx-Eigenheiten | ===== Wo anfangen ===== * [[lyx_-_programmiersprache:vega:guides|Guides]] — **hier anfangen**: erste Anwendung, Eigenschaften, Ereignisse, Komponenten * [[lyx_-_programmiersprache:vega:architektur|Architektur]] — die vier Schichten und warum es sie gibt * [[lyx_-_programmiersprache:vega:bauen|Bauen und Testen]] — Übersetzen, Ziele, Testlauf * [[lyx_-_programmiersprache:vega:klassenbaum|Klassenbaum]] · [[lyx_-_programmiersprache:vega:controls|Steuerelemente]] — was es gibt, nach Units geordnet * [[lyx_-_programmiersprache:vega:units|Units]] — eine Seite je Quelldatei: Thema, Inhalt, Fallstricke, Abhängigkeiten * [[lyx_-_programmiersprache:vega:backends|Backends]] — X11, Win32, Null und die Auswahl nach Ziel * [[lyx_-_programmiersprache:vega:lfm|LFM-Formularformat]] — Oberflächen aus Dateien statt aus Code * [[lyx_-_programmiersprache:vega:themes|Themes]] — Aussehen ohne Codeänderung * [[lyx_-_programmiersprache:vega:lyx-eigenheiten|Lyx-Eigenheiten]] — **vor dem ersten Beitrag lesen** * [[lyx_-_programmiersprache:vega:werkzeuge|Werkzeuge]] — Testlauf und statische Prüfungen * [[lyx_-_programmiersprache:vega:praxis|Anwendungen aufbauen]] — Layout, eigene Steuerelemente, Timer, Dialoge * [[lyx_-_programmiersprache:vega:beispiele|Beispiele]] — was man ausprobieren kann ===== Das erste Programm ===== unit Main; import vega.types; import vega.events; import vega.canvas; import vega.theme; import vega.control; import vega.font; import vega.strings; import vega.lists; import vega.style; import vega.stdctrls; import vega.backend; import vega.backendauto; import vega.forms; import std.io; var g_app: TApplication; fn OnEnde(sender: TControl): void { g_app.Terminate(); } fn main(): int64 { g_app := new TApplication(NewPlatformBackend()); if (!g_app.Ready) { PrintLn("Kein Fenstersystem erreichbar."); return 1; } var f: TForm := new TForm(320, 200, "Hallo Vega"); var l: TLabel := new TLabel("Guten Tag."); l.SetBounds(16, 16, 280, 20); l.SetParent(f); var b: TButton := new TButton("Schliessen"); b.SetBounds(16, 60, 120, 30); b.OnClick := OnEnde; b.SetParent(f); g_app.ShowForm(f); g_app.Run(); g_app.Shutdown(); return 0; } Übersetzen und starten — aus der Wurzel des ''lyx-vcl''-Repositorys: lyxc hallo.lyx -I . -I platform/linux -o hallo # Linux/X11 ./hallo lyxc hallo.lyx -I . -I platform/win64 --target=win64 --format=pe -o hallo.exe Der Plattformpfad entscheidet, welches Backend ''Vega.BackendAuto'' liefert; ohne ihn meldet der Compiler ''Modul nicht gefunden … Vega.BackendAuto''. Nachgemessen mit ''lyxc 1.1.3I'': das obige Programm übersetzt zu rund 770 KB. ===== Grundregeln ===== * **Die Bibliothek zeichnet, das Betriebssystem zeigt an.** Was in der HAL steht, ist bewusst wenig — 21 Methoden. Alles andere ist geteilter Code und läuft überall gleich. * **Ein Fehler ist laut oder er ist keiner.** Unbekannte Eigenschaften, nicht eingetragene Handler, falsche Signaturen: alles meldet sich mit Zeilennummer, statt still nichts zu tun. * **Keine Bibliothek für den Regelzyklus.** Vega alloziert, zeichnet in Puffer und ruft Handler indirekt — für eine Oberfläche genau richtig, unter ''@flight_crit'' genau falsch. Wo beides in einem Programm vorkommt, gehören Anzeige und Regelung getrennt; Einzelheiten im Abschnitt [[lyx_-_programmiersprache:vega:guides:lfm#lfm_und_flight_crit|LFM und @flight_crit]]. * **Kein Feld ohne Wirkung.** Lieber eine fehlende Eigenschaft mit Begründung als eine vorhandene, die niemand liest. ---- **Weiterführend:** [[lyx_-_programmiersprache:sprache|Sprachreferenz]] · [[lyx_-_programmiersprache:units|Standard Library]] · [[lyx_-_programmiersprache:guides|Guides]] Letzte Aktualisierung: 2026-08-19 — Seiten aus ''lyx-vcl/doku/dokuwiki/vega'' in die Lyx-Doku übernommen; Übersetzungsbefehl und Binärgröße mit ''lyxc 1.1.3I'' nachgemessen. Codebeispiele geprüft: gegen **lyxc 1.2.5C** übersetzt (Prüflauf 2026-09-08 über die gesamte Doku: 574 Vollprogramme, 0 echte Fehler; zusätzlich 5159 Aufrufe gegen die ''pub fn''-Signaturen in ''aurum/std'' gehalten, 0 Abweichungen).