Skip to content

gui_setkeyeventhandler

Tristan Hume edited this page Apr 23, 2012 · 2 revisions

#GUI.SetKeyEventHandler

##Syntax GUI.SetKeyEventHandler ( keyEventHandler : procedure x (ch : char))

##Description Sets the new default keystroke event handler. The keyEventHandler parameter is the name of a procedure that is called every time GUI.ProcessEvent is called and there is a keystroke which is not handled by any widget. The ch parameter in the keyEventHandler is the keystroke typed by the user.

This procedure is often used to allow for more than one shortcut character for a given button.

##Example The following program draws a star or quits depening on the button. The Draw Star button can be activated by clicking on it or typing 'D', 'd', 'S', 's' or Ctrl+S. The Quit button can be activate by typing 'Q', 'q' or Ctrl+Q. The Draw Star button is also the default button. It is activated whenever the user presses ENTER.

    import GUI
    View.Set ("graphics:220;200")
    procedure DrawStar
        Draw.FillStar (25, 40, 175, 190, Rand.Int (10, 15))
    end DrawStar
    
    procedure KeyHandler (ch : char)
        if ch = 'q' or ch = '^Q' then
            Draw.Cls
            GUI.Quit
        elsif ch = 'd' or ch = '^d' or ch = 'S' or ch = 's' or ch = '^s' then
            DrawStar
        end if
    end KeyHandler
    
    GUI.SetKeyEventHandler (KeyHandler)
    var button : int := GUI.CreateButtonFull (5, 5, 100, "Draw Star",
        DrawStar, 0, 'D', true)
    var quitButton : int := GUI.CreateButtonFull (115, 5, 100, "Quit", 
        GUI.Quit, 0, 'Q', false)
    loop
        exit when GUI.ProcessEvent
    end loop

##Status Exported qualified.

This means that you can only call the function by calling GUI.SetKeyEventHandler, not by calling SetKeyEventHandler.

##See also gui_processevent.html.

Clone this wiki locally