Object naming

Alex Tweedly alex at tweedly.net
Mon Jul 27 13:20:00 EDT 2020

Thanks Mark and Andre.

Mark's description of the solution is correct - but in my situation it's 
not a solution.

The sub-groups (B in my earlier example) are opaque - they have 
coloured, filled backdrops so that they can capture e.g. mouseMove 
messages, so they need to be opaque. Therefore, I can't simply re-layer 
so that the 'direct' graphics are behind (below) the groups.

The custom properties 'selector' idea is interesting - I'll need to mull 
it over some more.

I'm currently thinking of something like

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

unless someone sees a problem with that. (And of course I'll do that 
once and cache the values for continuing use).


On 27/07/2020 15:40, Andre Garzia via use-livecode wrote:

> Alex,
> I think that Mark solution is the correct one but I couldn't resist telling
> you some other idea, one that is only applicable if performance is not a
> problem.
> You can add custom properties to controls you want to find later and then
> look for them by looping everyone in the card. A reusable short function
> can be created with whatever letter you want, like "q", and code similar totrolIDs of
> this:
> function q selector, value
>    repeat with x = 1 to the number of controls in this card
>      if the selector of control x of this card is value then
>        return the long id of control x of this card
>      end if
>    end repeat
> end function
> And then you can go:
> put q("blue-rect", "true") into tLongID
> You can even have something like "qq" that returns a list of long ids for
> all the controls that match that query. Caching these results is the best
> architecture, on preOpenCard you can find all the controls you'll need and
> place them in script local arrays, then all the functions that need them
> can peek into those arrays.
> It is a bit convoluted but allows for some clever programming. Remembering
> that "clever" is one of the trickster spirits of the software development
> world.
> Best
> A
> On Mon, 27 Jul 2020 at 01:33, Alex Tweedly via use-livecode <
> use-livecode at lists.runrev.com> wrote:
>> I think my head is melting :-)
>> I have a group called 'A'.
>> Inside A, there is a rect called "R" and also a group called "B"
>> inside B there is a rect called "R"
>> How do I refer unambiguously to the first rectangle (i.e. A - R, not A -
>> B - R) ?
>> If I say
>>      grc "R" of grp "B" of grp A
>> then I unambiguously get A-B-R; but if I say simply
>>      grc "R" of grp "A"
>> then I *also* get A-B-R.
>> There must be a way to do this (and maybe if it wasn't nearly 2 in the
>> morning I would be able to figure it out).
>> Help! Please !
>> Alex.
>> _______________________________________________
>> use-livecode mailing list
>> 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