Object naming

Alex Tweedly alex at tweedly.net
Tue Jul 28 06:01:03 EDT 2020


Thanks Martin. That does indeed work (might need tweaking for some more 
complex cases).

However, it goes through all controls on the card - the same effect is 
achieved without the performance risk using the childControlIDs, as in


function idOfChild pLongID, pShortName
   repeat for each line L in the childControlIDs of  pLongID
      if the short name of control ID L = pShortName then return the 
long id of control ID L
   end repeat
end idOfChild

I'm currently using that - but I'm convinced by Richard and Dr Seuss 
that I'm on the wrong path and will try a redesign.

Alex.

On 28/07/2020 04:04, Martin Koob wrote:
> Hi Alex
>
> You could use the owner of the control in conjunction with the name of 
> the control to distinguish between the two graphic’s named ‘R’.
>
> I did that  for the  simple case in your example  but may not work 
> with something more complex.
>
> I created a stack with the same hierarchy of graphics and groups and 
> using the following scripts in a button I placed on the card I can 
> distinguish between  graphic A - R and B - R.
>
> *
> *
>
> *on* mouseup
>
> *ask*“enter owner name/control name/control colour"
>
> *put* it into tResponse
>
> *set*theitemdelimiterto"/"
>
> *put*item1of tResponse into tOwner
>
> *put*item2of tResponse into tControl
>
> *put*item3of tResponse into tControlColour
>
> *put* findTargetControl(tOwner, tControl) into tTargetControl
>
> *set*thebackgroundcolorofcontrol tTargetControl 
> of*group*"A"to tControlColour
>
> *end* mouseup
>
>
> *function* findTargetControl pOwner, pControl
>
> *put*thenumberofcontrolsof*group*"A"into tIndex
>
> *repeat* with tControl = 1to tIndex
>
> *if* theshortnameofcontrol tControl of*group*"A" = pControl *then*
>
> *if* theshortnameoftheownerofcontrol tControl of*group*"A" = pOwner *then*
>
> *exit* *repeat*
>
> *end* *if*
>
> *end* *if*
>
> *end* *repeat*
>
> *return* tControl
>
> *end* findTargetControl
>
>
> Martin Koob
>
>
>
>> On Jul 27, 2020, at 8:47 PM, Alex Tweedly via use-livecode 
>> <use-livecode at lists.runrev.com 
>> <mailto:use-livecode at lists.runrev.com>> wrote:
>>
>>
>> On 27/07/2020 21:26, Curry Kenworthy via use-livecode wrote:
>>>
>>> Use unambiguous SHORT names!
>>>
>> Thanks, but ...
>>
>> Yes, using unambiguous SHORT names solves this naming problem, but 
>> introduces other problems. In particular, this group script should 
>> (probably) be a behaviour script, since the group will be 
>> instantiated multiple times and will in the future need updating for 
>> enhancements or even (Heaven forfend!) bug fixes.
>>
>> Using unambiguous short names prevents behaviour scripts that 
>> references child controls completely, and even if I simply used 
>> normal scripts which were replicated for each instance, I'd still 
>> need to go through the script to change all the references to the 
>> child control names (a pain, and source of possible future errors).
>>
>> For now, I'm caching the IDs of the direct child controls in 
>> script-local variables in each instance of the group. If I find a 
>> name-based way that works reliably and allows behaviour scripts, I'll 
>> change - but this method works.
>>
>> I'll have this group ready for release soon (or soon-ish) so y'all'll 
>> be able to see how it turned out :-)
>>
>> Thanks again everyone,
>>
>> Alex.
>>
>>
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com <mailto:use-livecode at lists.runrev.com>
>> Please visit this url to subscribe, unsubscribe and manage your 
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>



More information about the use-livecode mailing list