On Wed, Dec 18, 2019 at 09:48:16AM -0800, C K Kashyap wrote: > I get a "val> -- Bad message" when I try this - > > (<table> NIL NIL > '(NIL NIL NIL NIL) > (do 5 > (<row> (alternating) > (if (val> (: home ttl)) (gui 1 '(+TextField) 20 3) (gui 1 > '(+TextField) 150 3))
Ah, this is too early. The +TextField objects are not even created at this moment when the page is still drawn in the HTTP GET transaction (here: drawing a <row>), so you cannot send messages to them. All these methods (except +Init and 'init>') are only available in POST actions. I give two non-trivial examples below from an ERP system. No need to understand them outside the context, but I think they show typical use cases. ☺/ A!ex (gui 'pos '(+E/R +Chart) '(pos : home obj) 13 '((Pos I) (with Pos (list I NIL (: art) (: bez) (- (: cnt)) (: epr) (if *CfgNurNetto (*/ (: epr) (+ 100.00 (get (ust> (: art vor) (: bel dat)) 'pr)) 100.0 ) (: pn) ) (: rab) (brutto> This) (and (: nxt) "W") ) ) ) '((L D F) (cond (D (dbSync) (put> D 'bez (cadddr L)) (put> D 'cnt (and (n0 (get L 5)) (- (get L 5)))) (or (gt0 (: home obj nr)) (: home obj gp eu) (when (; L 3 vor) (put> D 'st (ust> @ (dat> D))) ) ) (put> D 'epr (get L 6)) (unless *CfgNurNetto (put> D 'pn (get L 7)) ) (put> D 'rab (get L 8)) (commit 'upd) (and (; D art) D) ) ((caddr L) # Artikel-Spalte (new! (posTyp> (: home obj)) 'bel (: home obj) 'art (caddr L) 'cnt -1 'rab (or (; L 8) (cadr (asoq (; L 3 wg) (: home obj gp rab))) ) 'st (unless (: home obj gp eu) (when (; L 3 vor) (ust> @ (dat> (: home obj))) ) ) 'epr (if (: home obj gp eu) (net> (caddr L) (: home obj dat)) (; L 3 epr) ) 'pn (or (: home obj gp eu) (; L 3 pn)) ) ) ) ) ) (<table> NIL NIL (quote (NIL) (btn) (NIL "Nr/Artikel") (NIL "Bezeichnung") (NIL "Menge") (NIL "E-Preis") (NIL `(if *CfgNurNetto "B-Preis" "N")) (NIL "Rab-%") (NIL "Sum-Brutto") (NIL "W") ) (do 8 (<row> NIL (gui 1 '(+NumField)) (choArt 2) (gui 3 '(+ArtObjField) 15) # Art (gui 4 '(+Dflt +TextField) # Bez '(field -1 'obj 'bez) 20 ) (gui 5 '(+NumField) 6) # Menge (gui 6 '(+FixField) 2 10) # E-Preis (if *CfgNurNetto (gui 7 '(+Upd +Chg +FixField) # B-Preis '(let? Pos (curr) (*/ (; Pos epr) (+ 100.00 (get (ust> (; Pos art vor) (; Pos bel dat)) 'pr)) 100.0 ) ) '((Br) (let? Pos (curr) (set> (field -1) (*/ Br 100.0 (+ 100.00 (get (ust> (; Pos art vor) (; Pos bel dat)) 'pr)) ) T ) ) Br ) 2 10 ) (gui 7 '(+Tip +Able +Checkbox) # "N" "Einzelpreis Netto / Brutto" '(not (: home obj gp eu)) ) ) (gui 8 '(+ProzField)) # Rab-% (gui 9 '(+Sgn +Chg +FixField) # Sum-Brutto '((N) (when (curr) (incEpr!> @ (- N (brutto> @))) (put> (: home pos)) ) N ) 2 10 ) (gui 10 '(+Tip +TextField) # "W" "Position ist bereits gewandelt" ) (gui 11 '(+Rid +Able +Tiny +Button) '(curr) "Detail" '(and (curr) (detailDlg @)) ) (gui 12 '(+DelRowButton)) (gui 13 '(+BubbleButton)) ) ) (<row> NIL (scroll 8 T) - - - (<href> "EMail erstellen" (with (: obj) (pack "mailto:" (or (: ansp em) (: gp em)) # To "?" "from=" (firm 'em) "&" "subject=" (ht:Fmt (ttl> This)) " Nr." (: nr) " vom " (datStr (: dat)) # Subject "&" "body=" (and (if (: ansp anr) (: ansp) (: gp)) (hi> @) ) ) ) ) - - - (gui '(+Sgn +Chg +Upd +FixField) '((N) (let? Pos (or (maxi 'brutto> (: home obj pos)) (: home obj pos 1)) (let D (- N (sum> (: home obj))) (if (and (brutto> Pos) (> (abs D) 99)) (alert (env '(Pos D)) "Soll der Endpreis um mehr als 99 Cent verändert werden?" (--) (yesButton '(incEpr!> Pos D)) (noButton) ) (incEpr!> Pos D) (put> (: home pos)) ) ) ) N ) '(sum> (: home obj)) 2 10 ) ) ) (<grid> 3 "Fibukonto Kasse" (gui '(+ChoButton) '(choFk (field 1))) (gui 'kasse '(+Init +Chg +FkObjField) (arbeitsplatz 'kasse) '((V) (for N (4 6 8 10 12 14 16 18 20 22 24 26 28 30 32) (clr> (get (: home gui) N)) ) V ) 12 ) ) (--) (<grid> 3 (<br> "Münzen:") (<nbsp> 7) (<br> "Scheine:") (<grid> ".--" NIL "Anzahl" "Wert" "1 Cent" (gui '(+NumField) 5) (gui '(+View +FixField) '(val> (field -1)) 2 9 ) "2 Cent" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 2 (val> (field -1))) 2 9 ) "5 Cent" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 5 (val> (field -1))) 2 9 ) "10 Cent" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 10 (val> (field -1))) 2 9 ) "20 Cent" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 20 (val> (field -1))) 2 9 ) "50 Cent" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 50 (val> (field -1))) 2 9 ) "1 Euro" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 1.00 (val> (field -1))) 2 9 ) "2 Euro" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 2.00 (val> (field -1))) 2 9 ) ) (<nbsp> 7) (<grid> ".--" NIL "Anzahl" "Wert" "5 Euro" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 5.00 (val> (field -1))) 2 9 ) "10 Euro" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 10.00 (val> (field -1))) 2 9 ) "20 Euro" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 20.00 (val> (field -1))) 2 9 ) "50 Euro" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 50.00 (val> (field -1))) 2 9 ) "100 Euro" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 100.00 (val> (field -1))) 2 9 ) "200 Euro" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 200.00 (val> (field -1))) 2 9 ) "500 Euro" (gui '(+NumField) 5) (gui '(+View +FixField) '(* 500.00 (val> (field -1))) 2 9 ) ) ) (--) (<grid> 2 "Geschäftsjahr" (gui 'gj '(+Init +AktGjField) (gJahr) 4) "Ist (Saldo)" (gui 'sum '(+View +FixField) '(sum '((N) (val> (get (: home gui) N))) (5 7 9 11 13 15 17 19 21 23 25 27 29 31 33) ) 2 12 ) "Soll (Saldo)" (gui 'saldo '(+View +Sgn +FixField) '(saldo (val> (: home kasse)) (val> (: home gj))) 2 12 ) NIL (<hr>) "Differenz" (gui '(+View +Sgn +FixField) '(- (val> (: home sum)) (val> (: home saldo))) 2 12 ) ) -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe