Making "Wells": Whose Control Is It Anyway?

Jerry Balzano gjbalzano at popmail.ucsd.edu
Tue Feb 22 12:04:41 EST 2005


I have a stack where I use grouped objects as “wells” from which users 
can drag a copy for their own use.  I need to be able to refer to the 
owner of these grouped objects but it’s also important for the groups 
to have names.  The copied group has the same name as the original, but 
this is good, because the name is meaningful.  Anyway, every newly 
created group has its own distinctive ID, so there should be no 
problem, right?  Actually, wrong.  If I have a group called “mygroup”, 
say ID 1004, which I copy and paste to create a new instance of 
“mygroup”, say ID 1015, my attempts to find out the owner of the 
objects in the second group always returns the owner of the first group 
instead.

In more detail, the original group and its copy both have a popup menu. 
  I have given the button to whom the “menuPick” message is sent a 
“whoCalled” custom property, so that it resizes the proper controls 
depending on which instance was the source of the menu choice.  Here’s 
my menuPick handler:

on menuPick theChoice
   put the whoCalled of me into caller
   put theChoice into word 1 of fld id caller
   if theChoice is "towardsxy" then set the width of fld id caller to 188
   else set the width of fld id caller to 240
   put the long id of the owner of fld id caller into owningGroup
   repeat with i=1 to the number of controls of owningGroup
     get the name of control i of owningGroup
     if word 1 of it is "group"
     then set the right of control i of owningGroup to ((the right of 
fld id caller) - 5)
     if word 1 of it is "image"
     then set the left of control i of owningGroup to ((the left of fld 
id caller) + 4)
   end repeat
end menuPick

(BTW is there not an easier way to get at the elements of a group than 
this?  I hoped there was, and I was just too dense to figure it out.  
If so, please let me know.  Any style tips, I would also be grateful to 
get.)

Everything in the handler works just fine until the command
put the long id of the owner of fld id caller into owningGroup

What the variable “owningGroup” ends up containing is “Group ID 1004…” 
(using the same example as above), not “Group ID 1015…”, even when 
whoCalled is (correctly) referenced as one of the controls in Group ID 
1015.

What can I do about this?

Thanks,
Jerry B


More information about the use-livecode mailing list