Scratch that - sorry, I'd left the 'go cd' line in...taking it out,
using 'the target' also fails.
So, to narrow down the problem,
I made a mainstack - stack "mp" with 2 cards. On card 2 there is a
field "f1" with the script
on showMessage tm
beep
put tm into me
end show message
I then made a substack - stack "mps", with a button, whose script is
on mouseUp
put "hello" into tm
send "showMessage tm" to fld "f1" of cd 2 of stack "mp"
end mouseUp
Now, if cd 2 of stack "mp" is the current cd of stack "mp", on
clicking the button in stack "mps", I hear a beep, and the word
'hello' appears in fld "f1". So far so good.
However, if cd 1 is the current card of stack "mp", on clicking the
button in stack "mps", I hear a beep. I then go to cd 2 of stack
"mp", and fld "f1" is empty...
Inserting "put tm" into the showMessage handler in fld "f1", I click,
and "hello" appears in the message box, so the parameter is certainly
getting there. Then inserting "put the target" into the showMessage
handler, I click, and "field "f1"" appears in the message box, but
still fld "f1" is empty.
I'm baffled.
Mark
On 23 Mar 2006, at 11:56, Mark Smith wrote:
I just set up a slightly simpler version of what you've described,
and got exactly the same results. I then inserted 'go cd 2 of stack
"stackMain" into then putMessage handler, just before the 'send to'
line, and it works as desired,
so it's definitely a context problem. Checking the docs:
-----
If the currently executing handler is in the script of the object
that received the original message, then me is the same as the
object whose name is returned by the target function. For example,
suppose a button script contains a mouseDown handler. The value of
the target function within that mouseDown handler is the same as
the name of me: the name of the button.
However, if the mouseDown handler is in the card's script instead
of the button's, me is not the same as the object specified by the
target. In this case, me is the card, but the target function
returns the button's name, because the button is the object that
first received the mouseDown message.
----
which to my slightly foggy mind suggests that when explicitly
'send' ing a message to an object from another object (overiding
the message path) it might be necessary to use 'the target' rather
than 'me'..
so now I've substituted "the target" for "me" in the objects
script, and the problem seems to be solved. Does that work for you?
Mark
On 23 Mar 2006, at 11:21, David Burgun wrote:
Update:
I just changed the code so that instead of:
put "MessageY" into me
It now reads:
put "MessageY" into field "FieldY" of group "Y" of card 2 of stack
"/Documents/Test/StackMain.rev"
And now the "put" statement works as expected!!!!!!!
Can anyone shed some light on this?
I really need to refer to the object without hardcoding it's name
into the Script, I thought that was what "me" was for?????
Is this a bug? If so is there a workaround??
Thanks a lot
All the Best
Dave
Hi,
As far as I know (I have asked this question on this list before)
and according to the documentation, "me" always refers to the
object that the script is running in.
Are you suggesting I change "me" to "long name of x" just to see
if it makes a difference or in general?
If you mean in general, then this will mean that a lot of the
reusability of code that is so good in RunRev will vanish and make
developing Apps MUCH slower. In fact if I have to do this then I
would seriously consider not using RunRev anymore.
I have lots of fields that all refer to "me", to change them now
would take forever and result in a lot of hand-tweaking every time
I want to re-use a Group.
Here is the problem again, described in simpler terms:
1 StackMain:Card1:ObjectA:mouseUp - Calls Function
StackUtil:PutMessage("MessageX")
2 StackUtil:PutMessage - Calls
Handler StackMain:Card2:ObjectX:MessageX (via send)
3 StackMain:Card2:ObjectX:MessageX - Put "MessageX" into me and
then Calls Function StackUtil:PutMessage("MessageY")
4 StackUtil:PutMessage - Calls Handler
StackMain:Card2:ObjectY:MessageY (via send)
5 StackMain:Card2:ObjectY:MessageY - Put "MessageY" into me
In this case the "put" statement at step 5 does NOT put "MessageY"
into StackMain:Card2:ObjectY (the object is unchanged), but the
"put" at step 3 works ok.
However, this does work:
1 StackMain:Card2:ObjectX:mouseUp - Calls Function
StackUtil:PutMessage("MessageY")
2 StackUtil:PutMessage - Calls
Handler StackMain:Card2:ObjectY:MessageY (via send)
3 StackMain:Card2:ObjectY:MessageY - Put "MessageY" into me
What could be going wrong here? Is it that I am mixing functions
and handlers?
How can I test to see if the context is the problem?
Any ideas on how to get this working would be greatly appreciated.
Thanks a lot
All the Best
Dave
On 23 Mar 2006, at 02:22, Mark Smith wrote:
Is it a context problem?
It might be worth trying to replace
put "MessageY" into me
with
put "MessageY" into <long name of control>
I've always thought that 'me' always referred to the control
whose script it appears in, but that's an assumption, not
necessarily a fact...
Mark
_______________________________________________
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