Beispiel für WaitOnInput
Define(SelectObject
OpenWindow(, winAsk, 1) WaitOnInput;
. . .
Window(winAsk, MODAL, 390, 15, 450, 110, "Object
selection")
[
Var(result)
INITIALIZE: INVALID -> result
CLOSE: result FinishInput
]
{
ObjectList(objects, AUTO_POSITION, 10, 15, 400, 40)
[
INITIALIZE: FindAll(X) FillObox
SELECT: GetObject -> result, CloseWindow
]
}
SelectObject bringt ein vom Anwender ausgewähltes Objekt (der Klasse X) auf den Stack bzw. INVALID, wenn nichts ausgewählt wurde.
Beispiel für WaitOnInput(, KEEP)
Die Funktion CX_FORMULA::Evaluate3() sendet eine Message, wenn Variable
des Formelausdrucks nicht an Daten der Objekte im PlugSpace gebunden werden können.
Die Message wird angemeldet:
Msg(MISSING_VARIABLE)
(MISSING_VARIABLE) SystemObject Call(SetBindMessage)
Der Empfänger der Message bekommt folgende Objekte auf dem Stack:
Top | CX_BOOLEAN, TRUE - neu berechnen, FALSE - Abbruch |
Top-1 | CX_CONTAINER - für die fehlende(n) Variable(n) |
Top-2 | CX_STRING, Name der fehlenden Variablen |
Var(f /* object CX_FORMULA */,
b /* object CX_BOOLEAN */,
c /* object CX_CONTAINER */)
CreateTransObject(CX_FORMULA) -> f
"b + 12.5cm" f Put, f Call(Evaluate3)
...
Prompt(pVar, RED, 11, 33,
"")
String(CX_CONTAINER::x~var, 100, 33, 200)
[
MISSING_VARIABLE:
-> b, -> c, // save CX_BOOLEAN
and CX_CONTAINER
Rename(var, STACK) // rename widget to get
binding for DrainWindow
SELECT: c
DrainWindow, // get value for formula evaluation
TRUE b Put, // intention to continue
evaluation
FinishInput // return to function
Evaluate3()