[REBOL] Re: Vid / Subpanels / Dirty?
From: sanghabum::aol::com at: 31-May-2001 17:31
> As far as collecting changed fields for an update, you may wish to
> peruse a thread from a few weeks ago. Although Brett's end purpose was
> slightly different, in the end, he created a nifty way to collect
> changed data and to capture for an inadvertantly closed dialog. You may
> find some of this quite useful in order to save users from themselves
> (namely, offer them a final chance to update or cancel the changes).
> Just a thought.
Thanks again. I've solved the problem by adding an action to each data entry
field. A (simplified) snippet of the code that build the layout reads:
DataEntryFields: copy ["Name" "Age" "Favorite Poem"]
foreach def DataEntryFields
append layoutBlock to-word join "Data-" [Def ": "]
append layoutBlock [Field]
append layoutBlock [[Persistent-Dirty?: true]]
So 'persistent-dirty? (a global variable) is set true if any field is
changed. And then I can iterate around the DataEntryFields block to find the
new values. What I can't do is tell which of the individual fields has
changed, but I don't need that: any change will trigger the update processing.
Incidentally, I don't recommend building a layout with variables directly
into a block as the above example does. Returning the block from a function
and then issuing the 'Layout command taught me rather more about context than
I really wanted to know at the time. Code I've written today (as opposed to
yesterday) builds dynamic layouts in strings. Stick a square bracket at each
end and a simple 'Load will turn that into a block when needed without
moaning about undefined variables.