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

  • Guideshier 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-Eigenheitenvor 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.