I'd forgotten about the recursion issue. It can also be avoided by
putting a lock messages line in your setProp handler, so in your
library example:
setProp MyProp pMyVal
lock messages
set the MyProp of the target to to pMyVal
end MyProp
best,
Mark
On 13 Apr 2006, at 02:13, Richard Gaskin wrote:
Mark Wieder wrote:
What this lets me do is subclass from existing objects (in this
case a field) to create a new ledger field
object, and then duplicate and reuse it.
A word of caution for newcomer jumping into getProp and setProp, to
save them some gray hairs I earned a couple weeks ago:
The docs note that if you handle a property setting for an object,
and in that setProp also set a property of the same name, the call
to set the property from within the setProp handler won't trigger
another setProp, e.g.:
setProp MyProp pMyVal
set the MyProp of me to pMyVal
end MyProp
This prevents recursion, since if the setProp did trigger another
setProp you'd be stuck in an infinite loop.
However, setting other properties other than the one being handled
will trigger a setProp for that other property:
setProp MyProp pMyVal
set the MyOtherProp of me to pMyVal --triggers setProp
MyOtherProp
end MyProp
Now here's the tricky part: the no-recursion feature only kicks in
if the handler is in the target object itself. I learned this the
hard way by moving my getProps and setProps to a library and then
wondering why I was getting recursion errors.
So if you want to centralize your getProp and setProp handlers, you
can do so safely if the true name of any property you set isn't the
same and the property which triggered the setProp:
-- Library version of first example:
on setProp MyProp pMyVal
set the _MyProp of the target to pMyVal
end MyProp
Hope that was clear enough to be helpful....
--
Richard Gaskin
Managing Editor, revJournal
_______________________________________________________
Rev tips, tutorials and more: http://www.revJournal.com
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your
subscription preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution