Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

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

Search the Archive

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

> 

>  




  • Prev by Date: RE: selecting a column in a grid
  • Next by Date: Re: Re: Graphics and DisplayFunction
  • Previous by thread: RE: selecting a column in a grid
  • Next by thread: Re: Using a variable set elsewhere within Manipulate