user3650643
user3650643

Reputation: 21

request-date in a rebol2 vid application

Can someone tell me why the following code is not working? It is supposed to set the date in a field when it loads, then allow the date to be changed by clicking on the field. I'm using rebol/view 2.7.8 on linux. Actually, I think this code used to work years ago when I was using MS Windows, but not under linux for some reason.

drl

    rebol []
    trace true
    out: layout [
        style dater txt bold right [trans-date/date: copy (form now/date)] 48x24
        dater "T-Date:" trans-date: field 80x24 (form now/date) feel [
            engage: func [face action event][
                if action = 'up [
                    lv-dat: request-date/date/offset (now/date) 450x375
                    if lv-dat <> none [
                        trans-date/text: form lv-dat
                        show trans-date
                    ]
                ]
            ]
            show trans-date
        ]
    ]
    view out  

Upvotes: 2

Views: 79

Answers (1)

DocKimbel
DocKimbel

Reputation: 3199

Here is a cleaned up version of your code:

Rebol []

out: layout compose/deep [
    style dater txt bold right 48x24
    dater "T-Date:"
    trans-date: field 80x24 (form now/date) feel [
        engage: func [face action event][
            if action = 'up [
                lv-dat: request-date/date/offset (now/date) 450x375
                if lv-dat [
                    face/text: form lv-dat
                    show face
                ]
            ]
        ]
    ]
]
view out

The main issue was the missing compose/deep call to evaluate the paren expressions before layout is called. However, that approach is not the usual way to initialize face properties, you should rather put init code in a do section of the VID block, like this:

Rebol []

out: layout [
    style dater txt bold right 48x24
    dater "T-Date:"
    trans-date: field 80x24 feel [
        engage: func [face action event][
            if action = 'up [
                lv-dat: request-date/date/offset now/date 450x375
                if lv-dat [
                    face/text: form lv-dat
                    show face
                ]
            ]
        ]
    ]
    do [trans-date/text: form now/date]
]
view out

Hope this helps.

Upvotes: 4

Related Questions