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