Handlers and Scope
Trevor DeVore
lists at mangomultimedia.com
Wed Dec 7 10:06:51 EST 2005
On Dec 7, 2005, at 6:47 AM, Adam wrote:
>
> I am then trying to call that function from the script of a button
> on the card in the following way:
>
> on mouseUp
> put field "fldItemsToFind" into lItemsToFind
> put field "fldNumItemsAllowed" into lNumItemsAllowed
> fMyFunction(lItemsToFind,lNumItemsAllowed)
> end mouseUp
>
> When put it into browse mode and click the button, I get Rev
> telling me it can't find the handler fMyFunction.
When you call a function you have to put the result of the function
into a variable. There are two approaches:
get fMyFunction(lItemsToFind,lNumItemsAllowed)
or
put fMyFunction(lItemsToFind,lNumItemsAllowed) into tResult
The first is the Transcript short hand which puts the result returned
from the function into the "it" variable. The second version stores
the result in tResult. Another way to call the function is -
put fMyFunction(lItemsToFind,lNumItemsAllowed)
Which would print the result in the Revolution message box when
working in the IDE.
> What is the scope of handlers in relation to the stack, cards in
> the stack, and the elements of each card?
Ah the message path. In your example above the function could reside
in a number of places and still be called from the button script
without using "send" or "call" -
1) The script of the button itself
2) If the button belongs to a group, the script of the group it
belongs to.
3) The script of the card the button is on
4) The script of the stack the button is on
5) Any group scripts whose backgroundBehavior is set to true.
6) If the stack that the button is on is a substack of another stack
then the script of the main stack (see "mainstack" in the Rev
dictionary)
7) Any front or back scripts (see "insert script" in dictionary)
8) Any library stacks (see "start using" in dictionary). This is my
favorite place to put scripts that I need anywhere in an application.
I think that covers all of the possibilities. I would definitely
check out an article on the message path that Richard Gaskin has
written <http://www.fourthworld.com/embassy/articles/
revolution_message_path.html>. The message path is the other
Revolution concept that took me a while to grasp when coming from
other programming languages like PHP and Flash. Understanding the
message path is key to writing libraries and frameworks for use in Rev.
--
Trevor DeVore
Blue Mango Multimedia
trevor at mangomultimedia.com
More information about the use-livecode
mailing list