my most robust approach is: keep a copy of the last content and compare. rebol has a "culture" of changing variables directly (face/text: "Hello") and then calling a general process-function (like show face -> face/feel/redraw) with "keeping old version" you can change face/text with no need for some [face/dirty: true] -Volker
Am Freitag, 10. Oktober 2003 17:56 schrieb [EMAIL PROTECTED]: > Ingo: > > what's the easiest way to find out, if a layout contains any dirty > > fields? (That is, fields that have been edited). > > I don't know the *easiest* but what I do is set a global variable in each > field I'm interested in. Something like: > > ; function to set global flag if field has changed > global-dirty?: false > set-dirty?: func [face [object!]] > [ > if strict-not-equal? face/data face/user-data > [print "face value changed" > face/user-data: copy face/data > global-dirty?: true > ] > ] > > ;; sample layout using above function > > unview/all > view layout [field [set-dirty? face] > field [set-dirty? face] > button "Exit" [If global-dirty? > [print "need to save here" > global-dirty?: false > ] > ] > ] > > This method is precise it that you set global-dirty? only for the fields > you care about. But it's annoying in that you need to add a [set-dirty? > face] to all those fields. > > It works for me in the application I use it in because the layout is built > from a template, so I don't have to insert the [set-dirty? face] by hand > everywhere. > > > You could play with making it more flexible by exploring using styles. This > next example does that. It also defines its own 'last-user-value variable > rather than using 'user-data. And it fixes the "false positive" when you > tab out of a field for the first time: > > global-dirty?: false > set-dirty?: func [face [object!]] > [ > if strict-not-equal? face/data face/last-user-value > [print "face value changed" > face/last-user-value: copy face/data > global-dirty?: true > ] > ] > > unview/all > view layout [style monitored-field field > with [last-user-value: copy ""] > [set-dirty? face] > > monitored-field [set-dirty? face] > monitored-field [set-dirty? face] > button "Exit" [If global-dirty? > [print "need to save here" > global-dirty?: false > ] > ] > ] > > Sunanda. -- To unsubscribe from this list, just send an email to [EMAIL PROTECTED] with unsubscribe as the subject.
