How to get the number of lines of a fld referenced by long ID in a variable.

Sannyasin Brahmanathaswami brahma at hindu.org
Wed Jun 28 22:25:52 EDT 2017


I'm trying to set up a global text only library that includes text handlers for formatting text run time.

Typical use case is : clickable list field with titles that wrap. Say you set type size to 16, text height to 20, dontWrap is false, first indent -40, left margin 20. This looks fine, but the lines are too close together.. Since there is no way to apply "spaceBelow" to a field…you have to dynamically run a script to "set the type" of each line run time after loading the field.

So far so good until this

# card script

put tTitles into fld "audioList"  # contains 30 lines
addSpaceBelowListLines (the long id of fld "audioList"),10


lib_SivaSivaMedia # a global "backscript" -- one of many

on addSpaceBelowListLines pField,pSpace
    put the number of lines of pField
# returns 1 --
# --  of course, that's a prop of the var, not the object it refes to

     repeat with x = 1 to (the number of lines of pField)
          set the spacebelow of line x of pField to pSpace
     end repeat
end addSpaceBelowListLines

# only line 1 gets added space.

In the msg box I can test

put the number of lines of (the long id of fld "audioList")
[return] 30

but

put the number of lines of pField = 1

# ok I get it a var,  single string, 1 line only

of course we can add to the card script

put tTitles into fld "audioList"
put the number of lines of tTitles into pLineCount
addSpaceBelowListLines (the long id of fld "audioList"), pLineCount, 10

LIBRARY:

on addSpaceBelowListLines pField, pLineCount, pSpace
repeat with x = 1 to pLineCount
          set the spacebelow of line x of pField to pSpace
     end repeat
end addSpaceBelowListLines

And this works.. it even has an interesting visual effect as the lines layout dynamically in front of the users, spreading out top to bottom.
( though I probably should lock and unlock the screen for small devices speed)

But that it would be nice not be "stuck" with only finding out the properties of the variable as a variable.

i.e. pField is a variable with 1 line…

but  to be able to address the properties of the object referred to by a variable containing the long ID of an object/

How do we do that?

BR






More information about the use-livecode mailing list