On Sat, Jan 26, 2013 at 10:38 AM, Art Heimsoth <artst...@artheimsoth.com>wrote:

> Is there more to determining the pixel size of the text string?  In using
> your example, the largest pixel string value was 557, and varied from
> 224 to 557, yet the text strings being added to the listbox fill the
> horizontal width of the box.  It is a formatted content, and tab characters
> are used to position each column of data.


You are correct, if you have tabs in there, the actual width of the string
will not be correct.  The operating system API being used does nothing
special for tabs.  I think, I'm not sure.  Maybe it does, see below.  The
wrong font is surely a problem, maybe fixing that will be sufficient.



>  The font being used is
> Courier New with a pitch of 10 - I suspect that the getTextSizePx is
> sizing the string before Tab expansion and assumes the default font for the
> dialog, which with tabs and different pitch characters would make quite
> a difference.


This is also correct.  The way I coded it, assumed the font be the dialog
font for getTextSizePx().  However the method is a WindowsBase method.
 Which means it is a method for *all* windows.  A list box is a window.

It should work better, if you assign the font to the list box first, then
invoke the method on the list box object instead of on the dialog object.

The operating system does not provide a way to get the display width of a
tab character that I know of.

The first thing I would try would be to get the text size using the list
box object.  This may be correct, if the Windows API being used does
calculate the tab width properly.

Then, if that is way off and it is obvious the actual tab width is not
factored in, then I would get the width of 8 'e's, count the tabs in your
string and add count * 'eeeeeeee' width.  Maybe 7 'e's instead of 8.  I'm
sure the operating system assigns some width to the tab character.

If nothing else, just double the calculated width and you should be okay.
 If not triple it.  ;-)  The only down side that I know of for having it
too wide is that the list box probably uses more memory
than absolutely necessary.  This was a big deal in 16-bit Windows.  Today,
with modern hardware, it is probably a trivial consideration.

--
Mark Miesfeld
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnnow-d2d
_______________________________________________
Oorexx-users mailing list
Oorexx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-users

Reply via email to