# Forms-Referenz Terminal Basic Rekonstruierte Referenz der Forms-Engine des Vorbilds (textbasierte, ereignisgesteuerte Oberflächen). Grundlage für `tb-ui::forms` und den Formular-Designer der IDE. Unklare Punkte sind mit `TODO` markiert. ## Koordinatenmodell Alle Maße in **Textzellen** (Zeilen/Spalten), Ursprung links oben. Formulare liegen auf dem 80×25-Bildschirm; Steuerelemente relativ zum Formular-Innenbereich. Eigenschaften `Top`, `Left`, `Height`, `Width`. ## Steuerelemente (Übersicht) | Steuerelement | Zweck | Schlüssel-Ereignisse | |---|---|---| | Form | Fenster (mit/ohne Rahmen, Titel, verschiebbar) | Load, Unload, Activate, Deactivate, Resize, Paint, Click, KeyPress | | Label | statischer Text | Click | | TextBox | ein-/mehrzeilige Texteingabe | Change, KeyPress, GotFocus, LostFocus | | CommandButton | Schaltfläche | Click | | CheckBox | Mehrfachauswahl (Value 0/1/2) | Click | | OptionButton | Einfachauswahl in Gruppe (Value TRUE/FALSE) | Click | | Frame | Gruppierungsrahmen (Container) | — | | ListBox | Liste (List, ListCount, ListIndex, AddItem/RemoveItem) | Click, DblClick | | ComboBox | Eingabe + Liste (Style 0/1/2) | Change, Click, DblClick | | HScrollBar / VScrollBar | Bildlauf (Min, Max, Value, SmallChange, LargeChange) | Change, Scroll | | PictureBox | Text-Zeichenfläche (PRINT/CLS auf Steuerelement) | Click, Paint | | Timer | unsichtbar; Interval in ms (Vorbild: 55-ms-Ticks) | Timer | | Menu | Menüleiste/-einträge (Designer-definiert) | Click | ## Gemeinsame Eigenschaften `Name` (Entwurfszeit), `Caption`/`Text`, `Top`/`Left`/`Height`/`Width`, `Visible`, `Enabled`, `TabIndex`, `TabStop`, `Tag`, `Index` (Steuerelement- Arrays), `ForeColor`/`BackColor` (0–15 bzw. 0–7), `MousePointer` (TODO). Zugriff zur Laufzeit: `form.eigenschaft`, `form!element.eigenschaft`; Standard-Eigenschaft (z. B. `Text` bei TextBox, `Caption` bei Label) bei Zuweisung ohne Eigenschaftsname. TODO: exakte Standard-Eigenschaften prüfen. ## Gemeinsame Methoden `Move top, left [, height, width]` · `SetFocus` · `Refresh` · `Drag` (Nicht- Ziel?) · Form zusätzlich: `Show [modal]`, `Hide`, `Cls`, `Print`, `Line` (Textmodus-Variante? TODO). ListBox/ComboBox: `AddItem text$ [, index]`, `RemoveItem index`, `Clear` (TODO: hieß es `Clear`?). ## Ereignismodell - Ereignisprozeduren heißen `SUB elementname_Ereignis (argumente)` und liegen im Formular-Modul. - Tastatur: `KeyDown(KeyCode%, Shift%)`, `KeyPress(KeyAscii%)`, `KeyUp` — KeyAscii ist bei uns ein Unicode-Codepoint (Abweichung UTF-8). - Maus: `MouseDown/MouseMove/MouseUp(Button%, Shift%, X!, Y!)` in Zellen. - Fokusreihenfolge über `TabIndex`; Tab/Shift+Tab wechseln, Access-Keys per `&` im Caption (z. B. `"&OK"` → Alt+O). - Zentrale Schleife: Ereignisse werden nur bei `DOEVENTS`, `SLEEP`, `INPUT`- artigen Wartezuständen oder nach Ende einer Ereignisprozedur zugestellt (kooperativ, wie im Vorbild — keine Präemption). ## Globale Objekte und Funktionen - `SCREEN`-Objekt: `SCREEN.ActiveForm`, `SCREEN.ActiveControl`, `SCREEN.Height`/`Width` (25/80), `SCREEN.MousePointer` (TODO: Umfang). - `MSGBOX(text$ [, typ% [, titel$]])` als Anweisung und Funktion (Rückgabe: gedrückte Schaltfläche), `INPUTBOX$(prompt$ [, titel$ [, standard$ [, spalte%, zeile%]]])`. - `LOAD form` (Load-Ereignis, unsichtbar), `UNLOAD form` (Unload-Ereignis), Formular-Referenzen sind statisch (keine Instanziierung wie in späteren Nachfolgern). ## Farben und Zeichensatz Rahmen, Schatten und Bedienelemente werden mit Unicode-Box-Drawing gezeichnet (Abweichung: UTF-8 statt CP437, identische Optik). Standard-Farbschema des Vorbilds (grauer Dialog, schwarze Schrift, weiße Akzente) wird als Default nachgebildet. TODO: exakte Attributtabelle je Steuerelement-Zustand (normal/fokussiert/deaktiviert) aus Screenshots/Emulator ableiten. ## Offene Detailfragen (per Emulator-Session zu klären) - Exakte Standardwerte aller Eigenschaften je Steuerelement - Z-Reihenfolge/Überlappung von Steuerelementen und Formularen - Verhalten `Show 1` (modal): welche Ereignisse laufen weiter? - Timer-Auflösung und -Reihenfolge bei mehreren Timern - Genauer Umfang von PictureBox im Textmodus