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
>
>