Phase 4: Formularmodell und Objektsprache
This commit is contained in:
@@ -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 400–403.
|
||||
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user