formular lesen (binär) und openspec für codex
This commit is contained in:
80
openspec/changes/phase-4-steuerelemente/proposal.md
Normal file
80
openspec/changes/phase-4-steuerelemente/proposal.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# 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` 0–65 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 260–480 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.
|
||||
Reference in New Issue
Block a user