it doesn't appear to automatically set the focus to gadgets contained in a tab here
Code: Select all
Procedure MenuSetActiveGadget()
Protected gadget,item
gadget = EventMenu() >> 8
item = EventMenu() & $FF
SetActiveGadget(gadget)
If item
SetGadgetState(gadget,item-1)
EndIf
EndProcedure
Procedure.s SC(window,shortcut.s,gad,item=0)
Protected key.s,pos,gadget
pos = FindString(ShortCut,"&")
If pos
key=UCase(Mid(ShortCut,pos+1,1))
gadget = (gad << 8) | (item+1)
Select key
Case "A"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_A, gadget)
Case "B"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_B, gadget)
Case "C"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_C, gadget)
Case "D"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_D, gadget)
Case "E"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_E, gadget)
Case "F"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_F, gadget)
Case "G"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_G, gadget)
Case "H"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_H, gadget)
Case "I"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_I, gadget)
Case "J"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_J, gadget)
Case "K"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_K, gadget)
Case "L"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_L, gadget)
Case "M"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_M, gadget)
Case "N"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_N, gadget)
Case "O"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_O, gadget)
Case "P"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_P, gadget)
Case "Q"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_Q, gadget)
Case "R"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_R, gadget)
Case "S"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_S, gadget)
Case "T"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_T, gadget)
Case "U"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_U, gadget)
Case "V"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_V, gadget)
Case "W"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_W, gadget)
Case "X"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_X, gadget)
Case "Y"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_Y, gadget)
Case "Z"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_Z, gadget)
Case "1"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_1, gadget)
Case "2"
AddKeyboardShortcut(window, #PB_Shortcut_Alt | #PB_Shortcut_2, gadget)
EndSelect
CreateMenu(window, WindowID(window))
BindMenuEvent(window,gadget,@MenuSetActiveGadget())
EndIf
ProcedureReturn shortcut
EndProcedure
If OpenWindow(0, 300, 200, 270, 170, "Shortcuts", #PB_Window_SystemMenu)
CheckBoxGadget(0, 10, 10, 250, 25, sc(0,"&CheckBox",0))
ButtonGadget(1, 10, 50, 250, 25, sc(0,"&Button",1))
PanelGadget(2, 10, 90, 250, 70)
AddGadgetItem(2, -1, sc(0,"&One",2,0))
AddGadgetItem(2, -1, sc(0,"&Two",2,1))
ButtonGadget(3, 10, 15, 80, 24,sc(0,"Button &1",3))
ButtonGadget(4, 95, 15, 80, 24,sc(0,"Button &2",4))
CloseGadgetList()
SetActiveGadget(0)
Repeat
ev = WaitWindowEvent()
Until ev = #PB_Event_CloseWindow
EndIf