#10662
LTT
Participant

I rewrote the macro.
Now arrays are used to minimize the GetProfileInt/GetProfileString operations (now only once for each entry).

nRunAtEvents = &h80000000

ii=0
Do
nEventsN = editor.GetProfileInt(eeRegMacros, sCfg, "Events"& ii, -1)
If nEventsN=-1 Then Exit Do

If nEventsN><0 Then
sMacroN = editor.GetProfileString(eeRegMacros, sCfg, "Macro"& ii, "")
sEventsN = Right("_______"& Hex(nEventsN), 8)
sN = Right(" "& ii, 7)

sMenuText = sMacroN &vbTab& sEventsN & sN

asMacroN = asMacroN &"|"& sMacroN
anEventsN = anEventsN &" "& nEventsN
aN = aN &" "& ii
asMenuText = asMenuText &"|"& sMenuText
End If

ii=ii+1
Loop Until ii>1023

asMacroN = Split(asMacroN,"|")
anEventsN = Split(anEventsN)
aN = Split(aN)
asMenuText = Split(asMenuText,"|")

nMenu = UBound(aN)
sMenuText = "▲Toggle Event-Driven Macros"& vbTab &" Max:"& Right(" "& ii-1, 6)

Do
Set menu = CreatePopupMenu
For ii = 1 To nMenu
menu.Add asMenuText(ii), ii, eeMenuChecked And anEventsN(ii)<0
Next
menu.Add "", 0, eeMenuSeparator
menu.Add sMenuText, 0, eeMenuGrayed

ii = menu.Track
If ii=0 Then Quit

anEventsN(ii) = anEventsN(ii) Xor nRunAtEvents
sEventsN = Right("_______"& Hex(anEventsN(ii)), 8)
sN = Right(" "& aN(ii), 7)
asMenuText(ii) = asMacroN(ii) &vbTab& sEventsN & sN

editor.WriteProfileInt eeRegMacros, sCfg, "Events"& aN(ii), anEventsN(ii)
Loop

The old code:

nRunAtEvents = &h80000000

Do
Set menu = CreatePopupMenu

ii=0
Do
nEventsN = editor.GetProfileInt(eeRegMacros, sCfg, "Events"& ii, -1)
If nEventsN=-1 Then Exit Do

If nEventsN><0 Then
sMacroN = editor.GetProfileString(eeRegMacros, sCfg, "Macro"& ii, "")
sMenuText = sMacroN &vbTab& Right("_______"& Hex(nEventsN), 8) & Right(" "& ii, 7)
menu.Add sMenuText, ii+1, eeMenuChecked And nEventsN<0
End If

ii=ii+1
Loop Until ii>1023
menu.Add "", 0, eeMenuSeparator
menu.Add "▲Toggle Event-Driven Macros Max:"& Right(" "& ii-1, 6), 0, eeMenuGrayed

ii = menu.Track -1
If ii<0 Then Quit

nEventsN = editor.GetProfileInt(eeRegMacros, sCfg, "Events"& ii, -1)
nEventsN = nEventsN Xor nRunAtEvents

editor.WriteProfileInt eeRegMacros, sCfg, "Events"& ii, nEventsN
Loop