Very Very Very Basic Question!!!!!
Richard Gaskin
ambassador at fourthworld.com
Thu Mar 23 12:12:36 EST 2006
David Burgun wrote:
> Should the following lines work 100% of the time, regardless of how
> or where the message handler is called?
>
> on MessageHandler
> local myData
>
> set the text of the long name of me to "XXXXX"
> put the text of the long name of me into myData
> end MessageHandler
Works here like this:
Stack "A" is a mainstack, and stack "B" is a substack of "A". "B" has
two cards, the second card has a field with the script above in it.
Stack "A" has a button with this script:
on mouseUp
send "MessageHandler" to fld "x" of cd 2 of stack "b"
end mouseUp
If I go to cd 1 of stack "B" and then click the button in stack "A",
when I go back to cd 2 of stack "B" I get "XXXXX" in the field.
Interestingly, if I change the script in the field to this:
set the text of me to "XXXXX"
...it fails.
I then reverted the script to the form that works, went to card 1 of
"B", saved "B", then closed it, and then clicked the button in stack "A"
again -- opening "B" again and looking at cd 2 showed "XXXXX" in the
field. This may be useful since it confirms that you can trigger
messages and alter properties in stacks that aren't officially open, as
long as their destroyStack property is false.
So the rule is that as long as you coerce object references derived from
"me" to the long ID you'll be fine. In other cases "me" will work as
expected, but for the reasons outlined in my earlier lengthy post not
always (thanks, HyperCard team).
As for the second line, since myData is declared locally what do you
want to do with it? It's scope suggests that nothing is done with it,
since it's declared inside the handler and the handler doesn't do
anything with it before it exits.
--
Richard Gaskin
Managing Editor, revJournal
_______________________________________________________
Rev tips, tutorials and more: http://www.revJournal.com
More information about the use-livecode
mailing list