Files
TerminalBasic/docs/forms-referenz.md
Chili Palmer 7e6fa6ea88 Phase 0: Referenzdokumente, Fehlerkatalog, Testkorpus, Ratatui-Spike
Entscheidungen festgehalten: TBVM bestaetigt und eingebettet in die
Executables; durchgaengig UTF-8 statt CP437 (dokumentierte Abweichung).

- docs/: Sprachreferenz, Forms-Referenz, Dateiformate, TBVM-Design
- tb-runtime::errors: klassischer Laufzeitfehler-Katalog (implementiert)
- tb-ui::screen: 80x25-Unicode-Zellenpuffer mit 16-Farben-Abbildung,
  Scrollbereich (VIEW PRINT), Letterboxing; Ratatui-Widget + Tests
- Spike: cargo run -p tb-ui --example spike (Farben, Unicode, Tasten, Maus)
- tests/compat/: erste Referenzprogramme mit byte-genauer Sollausgabe

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-01 16:36:45 +02:00

4.1 KiB
Raw Blame History

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 (015 bzw. 07), 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