MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Can nobody help me? Re: selecting a column in a grid

  • To: mathgroup at
  • Subject: [mg98272] Can nobody help me? Re: [mg98160] selecting a column in a grid
  • From: "Paul Ellsmore" <paul.ellsmore at>
  • Date: Fri, 3 Apr 2009 20:12:45 -0500 (EST)

The key point in this problem is that the columns are not equal widths, and
in fact are variable width, depending on the particular data displayed. So I
set ItemSize to automatic, so that each column width is defined by the data.
The trouble is that MousePosition gives me coordinates that are a linear
function of the position in the grid, but the columns are not linearly
spaced in the Grid, so how do I know which column the mouse is in?

I need one of three things, all three of which are beyond my skills:

1) I could get the actual values that ItemSize is set to when Automatic is
used. CurrentValue[ItemSize] doesn't work. Anyone got an alternative?
2) I could calculate what values ItemSize will be set to by looking at the
type and  number of characters in each grid cell, knowing the font size,
font family, cell margins, frame linewidth etc. But I don't have access to
the information needed - how many pixels does a Courier Size 10 "n" take up?
3) I could use EventHandler in a better way. Currently I wrap it around the
whole Grid, but if I could wrap it around a cell, that would work for me. No
syntax that I have tried works - should I try using GridBox, or is there an
obvious better idea?

Nobody got any ideas at all? What kind of language is this, where you can't
even select a column in a table?


-----Original Message-----
From: Paul Ellsmore [mailto:paul.ellsmore at] 
Sent: 01 April 2009 11:55
To: mathgroup at
Subject: [mg98272] [mg98160] selecting a column in a grid



I have a tricky problem with a graphical user interface. I have a grid of
data, and I want to be able to MouseClick in the grid to either select a row
or a column. Using GUIKit, this is trivial, but I want to be able to
distribute my program using PlayerPro, which won't support GUIKit.


Selecting a row is straightforward using EventHandler and
EventHandlerScaled, since I know how many rows there are and they are all
one line in height. However, the column widths change according to the data,
since I have set ItemSize to Auto. So is there some way of retrieving the
actual values used in ItemSize, when Auto is used? I have tried
CurrentValue[ItemSize] in many variations, but it always fails. 


I could, of course, look at the data that will be in the grid, and compute
the widths of each column accordingly, and synthesize the values that
ItemSize will take. To do that, though, I would need to know what the pixel
width of a particular text string will be, which varies with font family,
size etc. Is there an easy way to do this? This is essentially what
Mathematica does when ItemSize is set to Auto, but I have no idea how to do
it myself.


Currently I have EventHandler wrapped around the whole grid. Is it possible
to wrap it around each individual cell in a grid? I have tried a few ideas,
but they don't seem to work. The documentation suggests that EventHandler
can be wrapped around any expression, but that doesn't seem to be the case,
or at least the wrapped expression doesn't seem to display properly inside
other constructs, such as Grid, Column etc.


Is there some better approach I could take, rather than using EventHandler? 


All ideas gratefully received.






Dr. Paul A. Ellsmore


Nanion Limited

Oxford Centre for Innovation

Mill Street


United Kingdom



Tel: +44 (0) 1865 811175

Fax: +44 (0) 1865 248594


  • Prev by Date: Re: Problem with Import[] and math.exe
  • Next by Date: Re: Dynamic 2D ListLinePlot PlotRange
  • Previous by thread: Re: StringJoin with ToString
  • Next by thread: Re: Can nobody help me? Re: selecting a column in a grid