====== TApplication — die Anwendung ====== Hält Backend, Fenster, Zeitgeber und Befehlslisten und dreht die Ereignisschleife. Jede Vega-Anwendung hat genau eine. Unit: ''Vega.Forms'' · Basis: [[lyx_-_programmiersprache:vega:controls:tcontrol|TControl]] → [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega:guides:komponenten|Guide: Komponenten]] ---- ===== Verwendung ===== var app: TApplication := new TApplication(NewPlatformBackend()); if (!app.Ready) { PrintLn("Kein Fenstersystem erreichbar."); return 1; } var f: TForm := new TForm(400, 240, "Fenster"); if (!app.ShowForm(f)) { return 2; } var t: TTimer := NewTimer(20); t.OnTimer := OnTick; t.Start(); app.AddTimer(t); app.Run(); // kehrt nach Terminate() zurueck app.Shutdown(); ---- ===== Besonderheiten ===== * **''Ready'' immer prüfen.** Ohne erreichbares Fenstersystem (kein ''DISPLAY'') schlägt sonst später etwas fehl, das nichts damit zu tun hat. * ''Run()'' läuft, bis ''Terminate()'' gerufen wird; ''Shutdown()'' räumt danach auf. * ''ProcessOnce()'' verarbeitet einen Durchlauf — die Grundlage von ''ShowModal'' und der Weg für eigene Schleifen. * **Zeitgeber müssen angemeldet werden**: ''AddTimer(t)'', sonst feuert der Timer nie. * ''AddActionList(al)'' meldet eine [[lyx_-_programmiersprache:vega:guides:befehle|Befehlsliste]] an — ohne sie laufen weder ''OnUpdate'' noch Tastenkürzel. * Dialoge brauchen die Anwendung als erstes Argument; wer Dialoge in einer eigenen Unit hält, muss ihr die ''TApplication'' bekannt machen. ---- ===== Eigenschaften ===== Alle Eigenschaften, auch die geerbten. ^ Name ^ Typ ^ Bedeutung ^ Herkunft ^ | ''Backend'' | [[lyx_-_programmiersprache:vega:backends|IVegaBackend]] | Fenstersystem: X11, Win32 oder Null | eigen | | ''MainForm'' | [[lyx_-_programmiersprache:vega:controls:tform|TForm]] | Hauptfenster — mit ihm endet die Anwendung | eigen | | ''ScreenMargin'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Randabstand, den ein Fenster zum Schirmrand hält | eigen | | ''ModalForm'' | [[lyx_-_programmiersprache:vega:controls:tform|TForm]] | Das gerade modal gezeigte Fenster, sonst ''0'' | eigen | | ''Forms'' | [[lyx_-_programmiersprache:vega:controls:tobjectlist|TObjectList]] | Alle offenen Fenster | eigen | | ''FormCount'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Anzahl der offenen Fenster | eigen | | ''ActionLists'' | [[lyx_-_programmiersprache:vega:controls:tobjectlist|TObjectList]] | Angemeldete Befehlslisten ([[lyx_-_programmiersprache:vega:units:actions|Vega.Actions]]) | eigen | | ''timers'' | [[lyx_-_programmiersprache:vega:controls:tobjectlist|TObjectList]] | Angemeldete Zeitgeber | eigen | | ''timer_count'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Zahl der Zeitgeber | eigen | | ''Running'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Die Hauptschleife läuft | eigen | | ''Ready'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Backend ist bereit — sonst gibt es kein Fenster | eigen | ---- ===== Methoden ===== Alle Methoden, auch die geerbten. ^ Signatur ^ Zweck ^ Herkunft ^ | ''Create(b: IVegaBackend): void'' | Anlegen; ''new TApplication(NewPlatformBackend())'' | eigen | | ''Init(b: IVegaBackend): bool'' | Vorgaben von ''TControl'' setzen — in eigenen Klassen als erste Zeile im ''Create'' | eigen | | ''ShowForm(f: TForm): bool'' | Fenster zeigen (nicht-modal) | eigen | | ''ShowModal(f: TForm): int64'' | Modal zeigen, liefert ''ModalResult'' | eigen | | ''AddComponent(c: TComponent): void'' | Nichtsichtbare Komponente in die Anwendungsschleife aufnehmen — sie wird nur über ''Tick''/''NextDueIn'' angesprochen | eigen | | ''AddTimer(t: TTimer): void'' | Zeitgeber anmelden | eigen | | ''NextTimeout(now: int64): int64'' | Nächste Fälligkeit | eigen | | ''TickTimers(now: int64): bool'' | Fällige Zeitgeber auslösen | eigen | | ''MonitorAt(x: int64, y: int64): int64'' | Monitor an einer Position | eigen | | ''ReferenceForm(f: TForm): TForm'' | Bezugsfenster | eigen | | ''MonitorForForm(f: TForm): int64'' | Monitor eines Fensters | eigen | | ''ApplyDock(f: TForm): bool'' | Andocken anwenden | eigen | | ''PlaceForm(f: TForm): TPoint'' | Fenster platzieren | eigen | | ''ClampToMonitor(x: int64, y: int64, f: TForm, mon: TRect): TPoint'' | Auf den Monitor begrenzen | eigen | | ''ComponentAt(i: int64): TComponent'' | Aufgenommene Komponente an dieser Stelle, sonst ''0'' | eigen | | ''TimerAt(i: int64): TTimer'' | Zeitgeber über den Index | eigen | | ''FormAt(i: int64): TForm'' | Fenster über den Index | eigen | | ''FormByHandle(h: int64): TForm'' | Fenster über die Kennung | eigen | | ''CloseForm(f: TForm): bool'' | Fenster schließen | eigen | | ''DispatchEvent(e: TEvent): bool'' | Ereignis verteilen | eigen | | ''RepaintDirty(): void'' | Anstehende Neuzeichnungen ausführen | eigen | | ''ProcessOnce(): bool'' | Einen Durchlauf verarbeiten | eigen | | ''AddActionList(al: TActionList): void'' | Befehlsliste anmelden | eigen | | ''UpdateActions(now: int64): void'' | ''OnUpdate'' der Befehle ausführen | eigen | | ''TickHints(now: int64): void'' | Kurztexte aktualisieren | eigen | | ''Run(): void'' | Ereignisschleife starten | eigen | | ''Terminate(): void'' | Ereignisschleife beenden | eigen | | ''Shutdown(): void'' | Aufräumen | eigen | ---- ===== Ereignisse ===== Keine. Letzte Aktualisierung: 2026-08-19 — API maschinell aus ''Vega/Forms.lyx'' erhoben, Beispiel mit ''lyxc 1.1.3I'' übersetzt.