Lade...
 

WaitOnInput Beispiele

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

               Dup PutValue(, pVar) // show name of missing variable
              

Rename(var, STACK)   // rename widget to get binding for DrainWindow
              

WaitOnInput(, KEEP)  // wait for user input

       SELECT: c DrainWindow, // get value for formula evaluation
              

TRUE b Put,    // intention to continue evaluation

              

FinishInput    // return to function Evaluate3()

    ]