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

MathGroup Archive 2008

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

Search the Archive

EventHandler problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg88632] EventHandler problem
  • From: "J. McKenzie Alexander" <jalex at lse.ac.uk>
  • Date: Sat, 10 May 2008 06:53:47 -0400 (EDT)

I'm trying to design a custom InputField that indicates whether or not  
the user has pressed Return to submit the changes. It's a simple  
design: a red or green disk is drawn to the right of the InputField to  
indicate the state.

Here's the definition of the disks:

	red = Graphics[{Green, AbsolutePointSize[12], Point[{0, 0}]},
		 ImageSize -> {20, Automatic}]

	green = Graphics[{Green, AbsolutePointSize[12], Point[{0, 0}]},
		 ImageSize -> {20, Automatic}]

Here's my first attempt at creating the InputField:

	DynamicModule[{k = 1, changed = False},
	 Row[{
	   EventHandler[
	    InputField[Dynamic[k], Number, FieldSize -> Tiny,
	     ContinuousAction -> True],
	    {"KeyDown" :> (changed = True),
	     "ReturnKeyDown" :> (changed = False)
	     },
	    PassEventsDown -> True
	    ],
	   Dynamic[If[changed, red, green]]
	   }]
	 ]

Everything works except setting the value of changed back to False  
when the Return key is pressed. Mathematica fires the action for  
*both* "KeyDown" and "ReturnKeyDown", and the "KeyDown" action is  
invoked after the "ReturnKeyDown" action. (This happens regardless of  
whether one uses {"KeyDown" :> (...), "ReturnKeyDown" :> (...) } or   
{"ReturnKeyDown" :> (...) "KeyDown" :> (...)} in the argument to  
EventHandler.)

I've tried detecting the value of the key by using  
CurrentValue["EventKey"] but this doesn't seem to do anything...

Any thoughts on how to solve this problem would be greatly appreciated!

Cheers,

Jason

--
Dr J. McKenzie Alexander
Department of Philosophy, Logic and Scientific Method
London School of Economics and Political Science
Houghton Street, London WC2A 2AE




Please access the attached hyperlink for an important electronic communications disclaimer: http://www.lse.ac.uk/collections/secretariat/legal/disclaimer.htm


  • Prev by Date: Re: A Mathematica implementation of SolvOpt
  • Next by Date: Re: Display commands in a package
  • Previous by thread: Re: issues with unit package
  • Next by thread: Re: EventHandler problem