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

Reply via email to