Re: selecting a column in a grid
- To: mathgroup at smc.vnet.net
- Subject: [mg98209] Re: selecting a column in a grid
- From: dh <dh at metrohm.com>
- Date: Fri, 3 Apr 2009 04:31:52 -0500 (EST)
- References: <gr0gc4$92c$1@smc.vnet.net>
Hi Paul, you may e.g. use EventHaldler with "MouseClicked" and MousePosition["EventHandlerScaled"]. This gives you scaled coordinates. The run from lower left to upper right and you have to fiddel a bit with them to get row and colum. Here is an example that prints row and column: gr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {7, 8, 9}, {7, 8, 9}}; myGrid[gr_] := EventHandler[ Grid[gr] , "MouseClicked" :> (Print[{1, 2} + {0, 1} # &[Dimensions[gr]] + Round[{0.5, -1.5} # & [ Dimensions[gr] MousePosition["EventHandlerScaled"]]]]) ] Daniel Paul Ellsmore wrote: > 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 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. > > > > 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 > >