Bob,

This makes sense.

I’m unclear as to how I would structure the command to call a function in a 
card that’s not in the message path. 

send … ?

Peter Bogdanoff

> On Jun 28, 2022, at 8:34 AM, Bob Sneidar via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> Your point brings up something that was discussed before on this list. It's 
> going to be cleaner in the long run to "compartmentalize" your handlers so 
> that a handler is not trying access objects that are not in the message path, 
> or belong to an object in the message path. A handler should not if at all 
> possible "reach out and touch" something on another card. 
> 
> If you need to get or set something on a card other than the one in the 
> message path of the current handler, it's better to have a command or 
> function in the script of the target card. That way you can say: 
> 
> function returnTheText pFieldName
>   return the text of field pFieldName of me
> end returnTheText
> 
> If you DO need to have handlers working in a broader context, then when 
> calling the handler get the long id of the target card first and then pass 
> that in a parameter to the handler. 
> 
> For instance I have a handler called Extract which retrieves to values for 
> every object on a card with certain prefixes in their name like fld or btn or 
> menu. I pass the long id of the card they are on so that there is never any 
> confusion as in: 
> 
> function extract tParentCard
>   return the text of field 1 of tParentCard
> end extract
> 
> Bob S
> 
> 
>> On Jun 27, 2022, at 20:27 , Neville Smythe via use-livecode 
>> <use-livecode@lists.runrev.com> wrote:
>> 
>> If I write
>> 
>>    put the long id of field 1 of card 1 into tObject; put the text of tObject
>> 
>> I get the text of field 1 of card 1, right ? Not necessarily.
>> 
>> If field 1 of card 1 is in a shared group, then what I get is the text of 
>> field id something of card id whatever, where whatever is the id of the 
>> current card or maybe the first card containing the group. 
>> 
>> This is not actually a bug when you read the docs carefully but it certainly 
>> is a trap and in my case a major bug generator. It means this seemingly 
>> obvious way of obtaining the long id of an object (rather, in this case an 
>> instance of an object)  cannot be used to uniquely identify it when getting 
>> its properties.
>> 
>> The workaround is to replace card id (whatever) with card id (the id of card 
>> 1) in tObject;  the properties of tObject returned are then the properties 
>> of the expected instance of the object.
>> 
>> Sigh, a new version of nsScriptDatabase coming up.
>> 
>> Neville
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode@lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription 
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to