function to calculate string length...

Wouter wouter.abraham at scarlet.be
Mon Dec 27 16:42:10 EST 2004


> Re: function to calculate string length...
>
> Chipp Walters
> Sun, 26 Dec 2004 04:21:44 -0800
> Well, I cobbled this together from some of the archives...
> Anyone see an obvious place to optimize?
>
>
> on formatFld pFldName, pTxt
>   lock screen
>   put the width of fld pFldName into tW
>   set the width of fld "formatCheck" to tW
>   repeat for each line L in pTxt
>     put L into fld "formatCheck"
>     put false into tIsTooLong
>     repeat while the formattedwidth of fld "formatCheck" > tW
>       delete last char of fld "formatCheck"
>       put true into tIsTooLong
>     end repeat
>     if tIsTooLong is true then
>       put fld "formatCheck" after tList
>       delete char -5 to -1 of tList
>       put "..." & cr after tList
>     else
>       put L & cr after tList
>     end if
>   end repeat
>   delete last char of tList
>   put tList into fld pFldName
>   unlock screen
> end formatFld
>
>
> Chipp Walters wrote:
> Looking for some help.
>
>  I have a list field and want to add an elipsis (...) at the end of 
> lines which are truncated and won't fit in the field. I was wondering 
> if anyone out there may have a function to do this quickly?

Sorry for posting this on the metacard list, because for the moment I 
cannot post to the use-rev list.
But as this can be used in both IDE, I hope you don't mind.
Here is a different approach to the problem (further adaptation may be 
needed).

Use a temporary field with the same props as the listfield except for 
the dontwrap property (which should be false).
Instead of the name of the field use the short id of the field to call 
this handler.

on formatFld pFldID
   put fld id pFldID into y
   put y into fld "temp"
   put the formattedtext of fld "temp" into x
   put "" into fld "temp"
   repeat for each line i in y
     put 1 into tC
     repeat for each line h in x
       if tC = 1 then
         put h into tTemp
         put h into tRetain
       else put space & h after tTemp
       if tTemp = i then
         if tC = 1 then put i & cr after tList
         else put tRetain & numtoChar(201)  & cr after tList
         delete line 1 to tC of x
         exit repeat
       else add 1 to tC
     end repeat
   end repeat
   put word 1 to -1 of tList into fld id pFldID
end formatFld

Greetings and best wishes to everybody,
WA



More information about the metacard mailing list