Phase 4: Formularmodell und Objektsprache

This commit is contained in:
2026-09-04 17:30:32 +02:00
parent 5cf5a6582c
commit 54488b5b67
35 changed files with 7195 additions and 627 deletions

View File

@@ -430,11 +430,40 @@ uns Pseudowerte), `VARPTR`/`VARSEG`/`SADD`/`PEEK`/`POKE` → Nicht-Ziel
## 12. Forms-Anbindung (Details in forms-referenz.md)
`form.eigenschaft = wert`, `form!steuerelement.eigenschaft`,
Ereignisprozeduren `SUB name_Ereignis (…)`, `LOAD`/`UNLOAD form`,
`form.SHOW [style%]` (0 = modeless, Standard; 1 = modal), `form.HIDE`,
`DOEVENTS()`, `SCREEN`-Objekt, Datentypen `FORM`/`CONTROL`, `IF TYPEOF`,
`$FORM`-Metabefehl, Include-Dateien (Konstanten-`.BI`).
`'$FORM` kennzeichnet ein Formularmodul. Formulare und die aus seiner
Beschreibung bekannten Controls sind benannte, statisch typisierte Objekte.
Der Punkt liest oder schreibt eine explizite Eigenschaft
(`Text1.Text = "x"`); es gibt keine Standardeigenschaft. Der
Container-Operator `Form1!Text1.Text` wählt dasselbe Control innerhalb
seines Formulars. Ein `!` vor einem Bezeichner ist dieser Operator, sonst
bleibt es das SINGLE-Suffix. Unbekannte Objekte, Eigenschaften und Methoden
werden bei der Übersetzung mit Namen abgewiesen; UDT-Feldpfade behalten ihre
bisherige Bedeutung.
`FORM` und `CONTROL` sind als Parametertypen zulässig; ihre Eigenschaften
werden anhand der zur Laufzeit übergebenen Objektklasse gelesen und geschrieben. Mit
`IF TYPEOF ausdruck IS Klasse THEN` wird die konkrete, bekannte Klasse
geprüft. `SCREEN` ist das globale Objekt mit `ActiveForm`, `ActiveControl`,
`Height`, `Width`, `MousePointer`, `ControlPanel` sowie `SHOW`/`HIDE`;
`Height` und `Width` folgen der aktuellen Terminalgröße und sind read-only.
`LOAD form` lädt unsichtbar und ruft zuerst `Form_Load` auf. `UNLOAD form`
ruft `Form_Unload(Cancel AS INTEGER)` auf; `Cancel <> 0` verhindert das
Entladen. `form.HIDE` ändert nur die Sichtbarkeit. Ein Eigenschaftszugriff
lädt ein noch nicht geladenes Formular implizit. `form.SHOW [style%]` zeigt
es mit 0 (Standard) modeless oder mit 1 modal; bei modal wird der aufrufende
VM-Frame bis `HIDE`/`UNLOAD` markiert, während die Ereignisschleife weiter
zustellt. Stapelverstöße liefern Fehler 400403.
Steuerelement-Arrays verwenden `LOAD name(index)` und
`UNLOAD name(index)`; Eigenschaften werden als `name(index).Eigenschaft`
adressiert. Entwurfszeit-Elemente liefern beim Entladen Fehler 362.
Ihre Ereignisprozedur erhält `Index AS INTEGER` als erstes Argument.
Ansonsten heißt ein Handler `SUB Name_Ereignis (…)` und muss exakt die
Signatur der Forms-Referenz tragen. Fehlt er, verfällt das Ereignis. Der
Dispatch nutzt ausschließlich die vorhandenen Zustellpunkte der
Ereignissteuerung. Mausargumente sind Taste und Shift als INTEGER sowie X/Y
als SINGLE in 1-basierten Textzellen.
Dialoge:
- `MSGBOX msg$ [,type% [,title$]]` (Anweisung) bzw. Funktion → INTEGER.