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

Reply via email to