Text length

Raymond E. Griffith rgriffit at vnet.net
Fri Aug 9 18:13:01 EDT 2002


on Fri, 9 Aug 2002 00:03:33, Simon Lord <slord at mac.com> explained

> Here is a small problem I'm having with text *collisions*.  I
> have a field who's contents are the names, dates and sizes of
> all the files in a directory.  The items are separated by a set
> of tabs, which can me adjusted left or right via a widget at the
> top of the field. So imagine sliding this widget and seeing the
> filenames stationary on the left but the filesize and date are
> in motion on the right.  The are moving because the distance
> (via tab length) is being adjusted to increase the space between
> these items.
> 
> My problem is that if I adjust the tabs too  far to the left the
> size column collides into the names and the formating goes
> completely out the window (ie the fake columns I created by
> setting tab widths is completely disregarded and stuff just
> formats willy nilly)
> 
> My question is, is there a way to return the length of text in
> pixels?  My column data is still separated by comma's so I'd
> love to see a solution that would allow me to get "item 1" and
> return that length in pixels.  There is a backwards solutions
> that allows me to get the length in characters, ad if I wrote a
> function I could sort of assume 5 pixels per character and
> multiply that by the length but this starts to slow things
> down.   Is there a faster method?
> 

Try something like this:

function getwidth thecolumn,thefield

set itemdelimiter to tab
put 0 into x
repeat for each line i in fld thefield
  get the formattedwidth of item thecolumn of i
  if it > x then put it into x
end repeat
return x

end getwidth

Using the formattedwidth this way works for *any* font size or type.

Hope this helps. Let me know.

Raymond


> Sincerely,
> Simon
> 




More information about the metacard mailing list