Files
TerminalBasic/openspec/changes/phase-4-steuerelemente/proposal.md

3.8 KiB
Raw Blame History

Phase 4 (Abschluss) — Steuerelemente, Menüs, Dialoge

Why

Das Objektmodell (phase-4-objektmodell) macht Formulare und Steuerelemente ansprechbar, zeigt aber nichts an und nimmt nichts entgegen. Dieser Change füllt die Klassen mit Verhalten: Darstellung im Zellenpuffer, Fokus- und Tabreihenfolge, Access-Keys, Maussteuerung, Menüsystem und die drei vordefinierten Dialoge. Damit schließt Phase 4.

Die drei Dialoge (MSGBOX als Anweisung und als Funktion, INPUTBOX$) sind die letzten drei offenen Inventareinträge der Phase. Sie stehen in keiner Steuerelementliste und fielen deshalb bisher zwischen die Aufgaben.

What Changes

  • Steuerelementklassen mit Verhalten: CommandButton, TextBox, ListBox, ComboBox, CheckBox, OptionButton, Frame, Label, HScrollBar, VScrollBar, PictureBox, Timer sowie die Dateisystem-Steuerelemente DirListBox, DriveListBox und FileListBox — je mit Darstellung, Zuständen (normal, fokussiert, deaktiviert) und ihren Methoden.
  • Darstellung im Zellenpuffer: Steuerelemente zeichnen in den vorhandenen Textbildschirm; es entsteht keine zweite Zeichenschicht. Die höhenabhängige Darstellung des CommandButton (1 Zeile <Text>, 2 Zeilen Rahmen, ab 3 Zeilen Kasten) und die Rahmenarten der übrigen Klassen folgen der Forms-Referenz.
  • Fokus, Tabreihenfolge, Access-Keys: TabIndex/TabStop, Weiterschalten mit Tab und Umschalt-Tab, & im Text als Access-Key, Default- und Cancel-Schaltfläche für Enter und Esc, SETFOCUS, GotFocus/LostFocus.
  • Maussteuerung: Die Mausereignisse aus phase-4-ereignisschleife werden auf Steuerelemente abgebildet — Trefferprüfung über die Z-Reihenfolge, Klick, Doppelklick, MouseDown/MouseMove/MouseUp sowie Ziehen und Ablegen (DragMode, DRAG, DragDrop, DragOver).
  • Menüsystem: Menüleiste je Formular, bis zu sechs Ebenen, Access-Keys, Shortcuts, Checked/Enabled/Visible/Separator, Menü-Steuerelement-Arrays. Während ein Menü den Fokus hält, ruhen Zeitereignisse und Traps.
  • Vordefinierte Dialoge (3 Inventareinträge): MSGBOX als Anweisung und als Funktion mit den Schaltflächengruppen und Rückgabewerten der Sprachreferenz, INPUTBOX$ mit fester Größe 46×16 Zeichen und Positionierung in Zeichen.
  • Timer als Steuerelement: Interval 065 535 ms auf der Zeitquelle der Ereignisschleife, Ereignis Timer.

Non-Goals: Der Formular-Designer und die Projektverwaltung (Phase 5); native Erweiterungssteuerelemente (Stufe 2); grafische Ausgabe in der PictureBox — sie ist eine Textzeichenfläche.

Capabilities

New Capabilities

  • forms-steuerelemente: Verhalten und Darstellung der Steuerelementklassen, Fokus- und Tabreihenfolge, Access-Keys, Maussteuerung mit Ziehen und Ablegen, Menüsystem und die vordefinierten Dialoge.

Modified Capabilities

  • kompat-testkorpus: Der Korpus SHALL Formularprogramme mit Bildschirm-Sollausgabe und deterministischer Ereignisfolge führen.

Impact

  • crates/tb-ui: Darstellung und Eingabebehandlung je Klasse, Menüs, Dialoge, Trefferprüfung, Fokusverwaltung.
  • crates/tb-runtime: Fehler 260480 des Forms-Bereichs als Auslöser; MSGBOX/INPUTBOX$ als Sprachelemente.
  • crates/tb-frontend: Signaturen von MSGBOX (Anweisung und Funktion) und INPUTBOX$; die Unsupported-Absenkung von MSGBOX entfällt.
  • tests/compat: Formularprogramme mit Sollausgabe; die Programme aus github.com/cout/vbdos als Kompatibilitätsnachweis.
  • docs/: forms-referenz.md — die offenen Detailfragen (Optik je Zustand, Z-Reihenfolge, Reihenfolge gleichzeitig fälliger Timer) werden beantwortet; inventar.md setzt die Einträge dieses Changes auf implementiert.
  • PLAN.md: Punkte „Steuerelemente", „Menüsystem", „Fokus-/Tab-Reihenfolge", „Vordefinierte Dialoge" und die beiden Meilensteine der Phase 4.