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

*To*: mathgroup at smc.vnet.net*Subject*: [mg98312] Re: Can nobody help me? Re: selecting a column in a grid*From*: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>*Date*: Sun, 5 Apr 2009 06:40:22 -0400 (EDT)*References*: <gr6c5c$ppo$1@smc.vnet.net>

Hi Paul, Cool down ;-) Try this for inspiration: Dynamic[clickpos] Grid[ Table[ DynamicModule[ {col=Black, pos = {i, j}}, EventHandler[ Style[RandomInteger[{0, 1000000}], FontColor -> Dynamic[col]], {"MouseDown" :> (clickpos = pos; col = Red), "MouseUp" :> (col = Black)} ] ], {i, 5}, {j, 5}] ] Cheers -- Sjoerd On Apr 4, 3:12 am, "Paul Ellsmore" <paul.ellsm... at nanion.co.uk> wrote: > The key point in this problem is that the columns are not equal widths, a= nd > in fact are variable width, depending on the particular data displayed. S= o I > set ItemSize to automatic, so that each column width is defined by the da= ta. > 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 i= s > used. CurrentValue[ItemSize] doesn't work. Anyone got an alternative? > 2) I could calculate what values ItemSize will be set to by looking at th= e > 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 t= o > 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 t= he > 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? > > Cheers, > > Paul. > > -----Original Message----- > From: Paul Ellsmore [mailto:paul.ellsm... at nanion.co.uk] > Sent: 01 April 2009 11:55 > Subject: selecting a column in a grid > > Hi, > > 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 da= ta, > 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 comput= e > 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 pix= el > 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 possib= le > to wrap it around each individual cell in a grid? I have tried a few idea= s, > 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 cas= e, > or at least the wrapped expression doesn't seem to display properly insid= e > other constructs, such as Grid, Column etc. > > Is there some better approach I could take, rather than using EventHandle= r? > > All ideas gratefully received. > > Cheers, > > Paul. > > Dr. Paul A. Ellsmore > > Nanion Limited > > Oxford Centre for Innovation > > Mill Street > > Oxford > > United Kingdom > > OX2 0JX > > Tel: +44 (0) 1865 811175 > > Fax: +44 (0) 1865 248594

**Follow-Ups**:**RE: Re: Can nobody help me? Re: selecting a column in a grid***From:*"Paul Ellsmore" <paul.ellsmore@nanion.co.uk>