# 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, FileListBox und VSpin/HSpin — 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` 0–65 535 ms auf der Zeitquelle
  der Ereignisschleife, Ereignis `Timer`.
- **VBDOS-Kompatibilität**: `.MAK`- und `$INCLUDE`-Auflösung, `RUN`,
  VSpin/HSpin, die verwendete Zellgrafik (`SCREEN`, `LINE`, `PAINT`, `VIEW`)
  und die von den Beispielen benutzten Common-Dialog-Routinen.

**Non-Goals:** Der Formular-Designer (Phase 5). Für den geforderten
VBDOS-Kompatibilitätsnachweis notwendige Projektauflösung, native
Erweiterungssteuerelemente und Grafikausgabe gehören zu diesem Change.

## 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 260–480 des Forms-Bereichs als Auslöser,
  `MSGBOX`/`INPUTBOX$` und die benötigte Zellgrafik.
- `crates/tb-frontend`: Signaturen von `MSGBOX` (Anweisung und Funktion)
  und `INPUTBOX$`, Projektquellen, `RUN` und die verwendete Grafiksyntax.
- `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.
