Debugging Hint?
Tereza Snyder
tereza at califex.com
Wed Jun 20 10:16:16 EDT 2007
On Jun 20, 2007, at 3:34 AM, Stephen Barncard wrote:
> watch out for the vague "me" reference and try something more
> absolute, like the id or name of the object you are calling 'me'.
> Sometimes getting the id of me or the owner of me works.
What's vague about "me"? As far as I'm concerned, "me" is the only
certain way to refer to a specific object: namely the one harboring
the script. Putting "the long ID of me" into a variable gives you
something you can pass around, for sure, but unless you already know
the total path to an object (e.g. button "OK" of grp "response" of
card 1 of stack "mydialog") being uncertain of object references is
the number one botheration in writing general purpose handlers.
"...of this card", "...of this stack", "...of the default stack", or
"...of the topstack" are all pigs in pokes.
What I often wish for is the extension of "me" into "my", as in for
any control:
my stack
my mainstack
my owner
my card
Currently, only "my owner" can be obtained by using "of me"; all the
others require parsing the long name or ID.
If you've tried scripting palettes (where "this stack" refers not to
the the palette but to the default stack) you may have adopted the
strategy of putting button scripts into the palette's card or stack
and using "of me" to refer to controls on the palette itself. How
much nicer it would be to put in a button script:
on mouseup
set the hilite of button "choice2" of grp "choices" of my
card to true
end mouseup
instead of something like
on mouseup
set the hilite of button "choice2" of grp "choices" of card
"xxx" of stack "yyy" to true
end mouseup
where you have to change xxx and yyy every time you reuse the button
in another context, or you might make xxx and yyy globals (ugh!) that
you have to set in opencard and openstack (and then forget about when
you reuse the button), or go though a rigamarole involving delimiters
and/or offsets to parse the long name of "me" to get the cardname and
stackname either in the mouseup handler or in a utility function
somewhere (that you now have to include in every project, like it or
not).
Consider voting for 'bug' 3446 if you agree.
t
--
Tereza Snyder
Califex Software, Inc.
More information about the use-livecode
mailing list