How to preserve global variables and not execute code outside subs everytime a sub is called, without sleeping or timers?
Code: Select all
Option Explicit
Sub OnStartUp()
Dim Menu
Set Menu = SDB.UI.AddMenuItem(SDB.UI.Menu_TbSearch, 1, 0)
Menu.UseScript = Script.ScriptPath
Menu.IconIndex = 27
Menu.OnClickFunc = "TEST1"
Menu.Caption = "TEST 1"
Set Menu = SDB.UI.AddMenuItem(SDB.UI.Menu_TbSearch, 1, 0)
Menu.UseScript = Script.ScriptPath
Menu.IconIndex = 27
Menu.OnClickFunc = "TEST2"
Menu.Caption = "TEST 2"
Set Menu = SDB.UI.AddMenuItem(SDB.UI.Menu_TbSearch, 1, 0)
Menu.UseScript = Script.ScriptPath
Menu.IconIndex = 27
Menu.OnClickFunc = "TEST3"
Menu.Caption = "TEST 3"
End Sub
msgbox("GLOBAL")
Sub TEST1(Menu) ' the "GLOBAL" message is shown everytime
msgbox("TEST 1")
End Sub
Dim Test2Timer
Sub TEST2(Menu) ' the "GLOBAL" message is shown only the first time
msgbox("TEST 2")
Set Test2Timer = SDB.CreateTimer(1000)
Script.RegisterEvent Test2Timer, "OnTimer", "Test2Timeout"
Test2Timer.Enabled = True
End Sub
Sub Test2Timeout(Source)
Test2Timer.Enabled = False
msgbox("TEST 2 TIMEOUT")
End Sub
Dim Test3Timer
Sub TEST3(Menu) ' the "GLOBAL" message is shown the first time and when the timer is destroyed
msgbox("TEST 3")
Set Test3Timer = SDB.CreateTimer(1000)
Script.RegisterEvent Test3Timer, "OnTimer", "Test3Timeout"
Test3Timer.Enabled = True
End Sub
Sub Test3Timeout(Source)
Test3Timer.Enabled = False
Script.UnregisterEvents Test3Timer
Set Test3Timer = Nothing
msgbox("TEST 3 TIMEOUT")
End Sub
I'd like a script to behave like TEST 3 without using a timer, is it posible?