Function for returning a list of objects on a card

Mike Kerner MikeKerner at roadrunner.com
Fri Jan 5 12:20:24 EST 2018


if you don't want to wait, read the project browser code.

On Fri, Jan 5, 2018 at 12:10 PM, Bob Sneidar via use-livecode <
use-livecode at lists.runrev.com> wrote:

> Hi all.
>
> I put together a couple of handlers that will return all the objects on a
> card in the form of an array whose elements are the objects names as a
> return delimited list, the Long IDs as a return delimited list and an array
> of the properties of each object which properties are passed in a
> parameter. The syntax is:
>
> put getCardObjects(pCardID, "rect,visible,owner") into aCardObjects
>
> Set the second parameter to whatever properties you want returned. But
> here's the problem. The owner property returns empty. It works fine when I
> use the message box, but not in the script. That has to be a bug. Here is
> the code. If someone can verify they have the same problem and it is not an
> issue with my code, then I will post a bug report with a sample stack.
> Nothing on the QCC I can find. Put the following in a button on any card
> with objects:
>
> on mouseUp pButtonNumber
>    put getParentCard(the long id of me) into pCardID
>    put getCardObjects(pCardID, "rect,visible,owner") into aCardObjects
>    breakpoint
> end mouseUp
>
> function getParentCard pObjectID
>    put offset("card id", pObjectID) into tStartChar
>    put char tStartChar to -1 of pObjectID into tCardID
>    return tCardID
> end getParentCard
>
> function getCardObjects pCardLongId, pPropList
>    repeat with i = 1 to the num of controls in pCardLongId
>       put the long id of control i of pCardLongID into tControl
>       put the name of tControl into tControlName
>
>       switch
>          case the dgProp ["control type"] of tControl is "data grid" and \
>                the dgProp ["control type"] of the owner of tControl is
> "data grid"
>          next repeat -- This is a control of a datagrid. We only want the
> datagrid itself.
>          break
>       case the dgProp ["control type"] of tControl is "data grid" and \
>             not (the dgProp ["control type"] of the owner of tControl is
> "data grid")
>       -- this is a datagrid
>       add 1 to tCounter
>       getObjectProps tControl, tControlName, tCounter, pPropList,
> aObjectData
>       put tControlName & cr after tObjectNames
>       put tControl & return after tTempObjectList
>       next repeat
>       break
> end switch
>
> -- what remains is a field, button or graphic object
> add 1 to tCounter
> getObjectProps tControl, tControlName, tCounter, pPropList, aObjectData
> put tControlName & cr after tObjectNames
> put tControl & return after tTempObjectList
> end repeat
>
> put tObjectNames into aObjects ["names"]
> put tTempObjectList into aObjects ["IDs"]
> put aObjectData into aObjects ["props"]
> return aObjects
> end getCardObjects
>
> on getObjectProps pControl, pControlName, pIndex, pPropList, @aObjectData
>    repeat for each item tProp in pPropList
>       put the tProp of pControl into aObjectData [pIndex] [pControlName]
> [tProp]
>    end repeat
> end getObjectProps
> _______________________________________________
> 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
>



-- 
On the first day, God created the heavens and the Earth
On the second day, God created the oceans.
On the third day, God put the animals on hold for a few hours,
   and did a little diving.
And God said, "This is good."



More information about the use-livecode mailing list