Jump to content

[RESOLVED] Unknown (but defined) number of cases in switch/endswitch.


Recommended Posts

Hello fellow scripters. I have a script that I am working on that creates a tray menu from entries in a .INI file. The number of entries needs to be dynamic. How do I handle the tray monitoring loop?  Hopefully, this simplified version of my script demonstrates what I am looking for:

Opt ( 'TrayMenuMode', 3 )

Local $iNumber = InputBox ( 'Test', 'Enter the number of tray icon menu items:' )       ;   Request number of tray icon menu items from User
Local $aItemLabels[$iNumber + 1]                                                        ;   Create array to hold tray icon menu item labels
Local $idMenuItem[$iNumber + 1]                                                         ;   Create array to hold menu item handles

For $iFoo = 1 to $iNumber                                           ;   Assign a label to each menu item
    $aItemLabels[$iFoo] = 'Item #' & String ( $iFoo )               ;   Create label
    $idMenuItem[$iFoo] = TrayCreateItem ( $aItemLabels[$iFoo] )     ;   Create handle
Next                                                                ;   End loop
$idTrayExit = TrayCreateItem ( 'Exit' )                             ;   Create a way to gracefully exit

While 1                                                                         ;   Create loop to monitor actions taken on tray menu
    $iMsg = TrayGetMsg()                                                        ;   Store actions taken on tray menu
    Switch $iMsg                                                                ;   Do one of the following depending on actions taken
        Case $idTrayExit                                                        ;   User clicked 'Exit'.
            Exit                                                                ;   Exit
        ;Case $idMenuItem[x]                                                    ;   How do I handle an unknown number of tray items?
        ;   MsgBox ( 4096, 'Response', 'You clicked on ' & $aItemLabels[x] )    ;
    EndSwitch                                                                   ;
WEnd

 

Link to comment
Share on other sites

Add  case else then add a for ... next loop

Opt ( 'TrayMenuMode', 3 )

Local $iNumber = InputBox ( 'Test', 'Enter the number of tray icon menu items:' )       ;   Request number of tray icon menu items from User
Local $aItemLabels[$iNumber + 1]                                                        ;   Create array to hold tray icon menu item labels
Local $idMenuItem[$iNumber + 1]                                                         ;   Create array to hold menu item handles

For $iFoo = 1 to $iNumber                                           ;   Assign a label to each menu item
    $aItemLabels[$iFoo] = 'Item #' & String ( $iFoo )               ;   Create label
    $idMenuItem[$iFoo] = TrayCreateItem ( $aItemLabels[$iFoo] )     ;   Create handle
Next                                                                ;   End loop
$idTrayExit = TrayCreateItem ( 'Exit' )                             ;   Create a way to gracefully exit

While 1                                                                         ;   Create loop to monitor actions taken on tray menu
    $iMsg = TrayGetMsg()                                                        ;   Store actions taken on tray menu
    Switch $iMsg                                                                ;   Do one of the following depending on actions taken
        Case $idTrayExit                                                        ;   User clicked 'Exit'.
            Exit                                                                ;   Exit
        ;Case $idMenuItem[x]                                                    ;   How do I handle an unknown number of tray items?
        ;   MsgBox ( 4096, 'Response', 'You clicked on ' & $aItemLabels[x] )    ;
        case Else
            for $tmp=1 to $iNumber
              if $iMsg=$IdMenuItem[$tmp] then MsgBox (0,"Trayitem",$tmp)
            Next
    EndSwitch                                                                   ;
WEnd

 

Edited by Dan_555

Some of my script sourcecode

Link to comment
Share on other sites

  • tinman_72 changed the title to [RESOLVED] Unknown (but defined) number of cases in switch/endswitch.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...