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:[email protected]?subject=Unsubscribe