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 TForm, 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 TControl), 113 Klassen in 53 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 | 136 Seiten: 15 Guides, 55 Detailseiten (51 Steuerelemente und Bausteine + 4 Hilfsklassen), 54 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
- Guides — hier anfangen: erste Anwendung, Eigenschaften, Ereignisse, Komponenten
- Architektur — die vier Schichten und warum es sie gibt
- Bauen und Testen — Übersetzen, Ziele, Testlauf
- Steuerelemente — was es gibt, nach Units geordnet
- Units — eine Seite je Quelldatei: Thema, Inhalt, Fallstricke, Abhängigkeiten
- Backends — X11, Win32, Null und die Auswahl nach Ziel
- LFM-Formularformat — Oberflächen aus Dateien statt aus Code
- Themes — Aussehen ohne Codeänderung
- Lyx-Eigenheiten — vor dem ersten Beitrag lesen
- Werkzeuge — Testlauf und statische Prüfungen
- Anwendungen aufbauen — Layout, eigene Steuerelemente, Timer, Dialoge
- 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: Sprachreferenz · Standard Library · 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.
