GUI component interaction: Difference between revisions

→‎{{header|Haskell}}: added Haskell solution
(→‎{{header|C_sharp|C#}}: updated tags for syntax highlighting)
(→‎{{header|Haskell}}: added Haskell solution)
Line 612:
}
</lang>
 
=={{header|Haskell}}==
 
<lang Haskell>import Graphics.UI.WX
import System.Random
 
main :: IO ()
main = start $ do
frm <- frame [text := "Interact"]
fld <- textEntry frm [text := "0", on keyboard := checkKeys]
inc <- button frm [text := "increment", on command := increment fld]
ran <- button frm [text := "random", on command := (randReplace fld frm)]
set frm [layout := margin 5 $ floatCentre $ column 2
[centre $ widget fld, row 2 [widget inc, widget ran]]]
 
increment :: Textual w => w -> IO ()
increment field = do
val <- get field text
if (not . null) val
then set field [text := show $ 1 + read val]
else return ()
 
checkKeys :: EventKey -> IO ()
checkKeys (EventKey key _ _)
| elem (show key) $ "Backspace" : map show [0..9] = propagateEvent
| otherwise = return ()
 
randReplace :: Textual w => w -> Window a -> IO ()
randReplace field frame = do
answer <- confirmDialog frame "Random" "Generate a random number?" True
if answer
then getStdRandom (randomR (1,100)) >>= \num ->
set field [text := show (num :: Int)]
else return ()</lang>
 
==Icon and {{header|Unicon}}==
8

edits