Because when I run the macro the event is already constantly firing
Thank you
Code: Select all
OnEvent>KEY_UP,`,0,REQUEST_EXIT
SRT>REQUEST_EXIT
Let>EXCODE=1
END>REQUEST_EXIT
Moderators: JRL, Dorian (MJT support)
Code: Select all
OnEvent>KEY_UP,`,0,REQUEST_EXIT
SRT>REQUEST_EXIT
Let>EXCODE=1
END>REQUEST_EXIT
To disable an event handler call OnEvent again with the same parameters but instead of the subroutine name issue an empty string. E.g.:
//enable
OnEvent>KEY_DOWN,VK32,0,KeyPress
...
...
//disable it
OnEvent>KEY_DOWN,VK32,0,
..
..
//enable it again
OnEvent>KEY_DOWN,VK32,0,KeyPress
Code: Select all
OnEvent>KEY_DOWN,VK32,0,labelKEYDOWN
SRT>labelKEYDOWN
//turn OFF keydown event
OnEvent>KEY_DOWN,VK32,0,
//turn ON keyup event
OnEvent>KEY_UP,VK32,0,labelKEYUP
END>labelKEYDOWN
SRT>labelKEYUP
//turn OFF keyup event
OnEvent>KEY_UP,VK32,0,
//go do the tasks, all while main loop is still running
Gosub>GoDoTheKeyPressTask
//turn ON keydown event
OnEvent>KEY_DOWN,VK32,0,labelKEYDOWN
END>labelKEYUP
Code: Select all
Dialog>Dialog1
object Dialog1: TForm
Left = 607
Top = 264
HelpContext = 5000
BorderIcons = [biSystemMenu]
Caption = 'CustomDialog'
ClientHeight = 126
ClientWidth = 390
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = True
ShowHint = True
OnTaskBar = False
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 160
Top = 32
Width = 56
Height = 13
Caption = 'Space is up'
end
end
EndDialog>Dialog1
Show>Dialog1
OnEvent>KEY_DOWN,VK32,0,SpaceDown
Label>loop
Wait>0.02
Goto>loop
SRT>SpaceDown
//reset key down handler
OnEvent>KEY_DOWN,VK32,,
//set key up handler
OnEvent>KEY_UP,VK32,,SpaceUp
SetDialogProperty>Dialog1,Label1,Caption,Space is Down
END>SpaceDown
SRT>SpaceUp
//space is up - reset up handler
OnEvent>KEY_UP,VK32,,
//set key down handler
OnEvent>KEY_DOWN,VK32,0,SpaceDown
SetDialogProperty>Dialog1,Label1,Caption,Space is Up
END>SpaceUp