====== Vega.Forms — Fenster, Zeitgeber, Anwendung ====== Das Dach der VCL: hier laufen alle Schichten zusammen. ''TApplication'' besitzt das Backend, hält die Zeichenfläche, den Control-Baum und den Dispatcher; ''TForm'' ist ein Fenster samt Inhalt; ''TTimer'' der Zeitgeber ohne eigenen Systemaufruf. Anwendungen sehen im Alltag nur diese Unit und die Widgets. Quelldatei: ''Vega/Forms.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:tapplication|TApplication]] | — | Hauptschleife, Fensterverwaltung, Zeitgeber, modale Abläufe | | [[lyx_-_programmiersprache:vega:controls:tform|TForm]] | [[lyx_-_programmiersprache:vega:controls:tcontrol|TControl]] | Ein Fenster: Titel, Rahmenart, Position, Fensterzustand, modales Ergebnis | | [[lyx_-_programmiersprache:vega:controls:ttimer|TTimer]] | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | Zeitgeber, von der Schleife über ''Tick'' bedient | ===== Typaliase ===== ^ Name ^ Ist ^ Zweck ^ | ''TTimerEvent'' | ''fn(sender: TControl): void'' | Handler eines Zeitgebers | ===== Aufzählungen ===== ^ Enum ^ Werte ^ Zweck ^ | ''TFormBorderStyle'' | ''BS_NONE'' (0), ''BS_SINGLE'' (1), ''BS_SIZEABLE'' (2), ''BS_DIALOG'' (3), ''BS_TOOLWINDOW'' (4), ''BS_SIZETOOLWIN'' (5) | Rahmenart des Fensters — eigener Satz, trotz gleicher ''BS_''-Vorsilbe | | ''TFormPosition'' | ''POS_DESIGNED'' (0), ''POS_SCREEN_CENTER'' (1), ''POS_TOP_LEFT'' (2), ''POS_TOP_RIGHT'' (3), ''POS_BOTTOM_LEFT'' (4), ''POS_BOTTOM_RIGHT'' (5), ''POS_MAIN_CENTER'' (6) | Wo das Fenster aufgeht | | ''TWindowState'' | ''WS_NORMAL'' (0), ''WS_MINIMIZED'' (1), ''WS_MAXIMIZED'' (2), ''WS_FULLSCREEN'' (3) | Normal, minimiert, maximiert, Vollbild | ===== Konstanten ===== ^ Name ^ Typ ^ Wert ^ Bedeutung ^ | ''VEGA_MAX_TIMERS'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''16'' | Höchstzahl der Zeitgeber | | ''VEGA_IDLE_TIMEOUT_MS'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''50'' | Längste Wartezeit der Schleife, wenn nichts ansteht | | ''VEGA_MONITOR_AUTO'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''0 - 1'' | Monitor automatisch wählen | | ''VEGA_SCREEN_MARGIN'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''0'' | Randabstand, den ein Fenster zum Schirmrand hält | | ''mrNone'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''0'' | Modales Ergebnis: noch keins — die Schleife läuft weiter | | ''mrOk'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''1'' | Modales Ergebnis: bestätigt | | ''mrCancel'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''2'' | Modales Ergebnis: abgebrochen | | ''mrYes'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''3'' | Modales Ergebnis: ja | | ''mrNo'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''4'' | Modales Ergebnis: nein | | ''BI_SYSTEMMENU'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''1'' | Titelleiste: Systemmenü (Bitmaske) | | ''BI_MINIMIZE'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''2'' | Titelleiste: Minimieren (Bitmaske) | | ''BI_MAXIMIZE'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''4'' | Titelleiste: Maximieren (Bitmaske) | | ''BI_HELP'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''8'' | Titelleiste: Hilfeknopf (Bitmaske) | | ''VEGA_MAX_FORMS'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | ''16'' | Höchstzahl gleichzeitiger Fenster | ===== Freie Funktionen ===== ^ Signatur ^ Zweck ^ | ''NewTimer(interval_ms: int64): TTimer'' | Erzeugt einen Zeitgeber mit diesem Abstand | | ''NewForm(w: int64, h: int64, caption: pchar): TForm'' | Erzeugt ein Fenster in dieser Größe mit diesem Titel | | ''NewApplication(b: IVegaBackend): TApplication'' | Erzeugt die Anwendung über diesem Backend | | ''AppOfForm(f: TForm): TApplication'' | Die Anwendung, zu der dieses Fenster gehört | | ''AppOfControl(c: TControl): TApplication'' | Die Anwendung, zu der dieses Control gehört — der Weg zu ''ShowModal'' aus einem Handler | | ''RegisterApp(app: TApplication): void'' | Die Anwendung als die laufende eintragen | | ''InitFocusHooks(): void'' | Trägt die Fokus- und Menühaken ein; beim Start einmal zu rufen | ---- ===== Zu beachten ===== * ''ShowModal'' braucht die ''TApplication''. Aus einem Handler führt ''AppOfControl(sender)'' dorthin, ohne sie durchzureichen. * Das **erste gezeigte Fenster wird MainForm**; schließt es, endet die Anwendung. * ''mrNone'' ist der Wert, mit dem ein modales Fenster startet — die Schleife läuft, bis er sich ändert. * Die ''BS_*''-Werte hier gehören zu ''TFormBorderStyle'' und sind nicht dieselben wie die Rahmenarten der Controls in [[lyx_-_programmiersprache:vega:units:extras|Vega.Extras]]; gemeinsam ist nur die Vorsilbe. * ''BorderIcons'' ist eine Bitmaske aus ''BI_*''; Werkzeugfenster zeigen unabhängig davon nur das Schließen. * Zeitgeber laufen über die Hauptschleife (''Tick''/''NextDueIn''), nicht über Systemzeitgeber — eine Anwendung ohne laufende Schleife tickt nicht. ---- ===== Abhängigkeiten ===== **Importiert:** [[lyx_-_programmiersprache:vega:units:types|Vega.Types]], [[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:component|Vega.Component]], [[lyx_-_programmiersprache:vega:units:control|Vega.Control]], [[lyx_-_programmiersprache:vega:units:style|Vega.Style]], [[lyx_-_programmiersprache:vega:units:chrome|Vega.Chrome]], [[lyx_-_programmiersprache:vega:units:dispatch|Vega.Dispatch]], [[lyx_-_programmiersprache:vega:units:hints|Vega.Hints]], [[lyx_-_programmiersprache:vega:units:actions|Vega.Actions]], [[lyx_-_programmiersprache:vega:units:menus|Vega.Menus]], [[lyx_-_programmiersprache:vega:units:edits|Vega.Edits]], [[lyx_-_programmiersprache:vega:units:backend|Vega.Backend]] · Standardbibliothek: ''std.time'' **Wird importiert von:** [[lyx_-_programmiersprache:vega:units:colordlg|Vega.ColorDlg]], [[lyx_-_programmiersprache:vega:units:dialogs|Vega.Dialogs]], [[lyx_-_programmiersprache:vega:units:editbtn|Vega.EditBtn]], [[lyx_-_programmiersprache:vega:units:filedlg|Vega.FileDlg]], [[lyx_-_programmiersprache:vega:units:fontdlg|Vega.FontDlg]], [[lyx_-_programmiersprache:vega:units:lfmload|Vega.LfmLoad]], [[lyx_-_programmiersprache:vega:units:lfmsave|Vega.LfmSave]] Letzte Aktualisierung: 2026-08-20 — Klassen, Aufzählungen, Konstanten und freie Funktionen maschinell aus ''Vega/Forms.lyx'' erhoben.