WebToolBar Toggling

Okay, so this works but there has to be a better way.

So I have a web toolbar with several WebToolbarButtons. So I want to click a button on the toolbar and have it stay enabled so the user can see which one is selected. Select a different button, it selects that one and deselects the one it was on, etc.

By default it only stays “toggled” for the duration of the click.

This works, but it seems…Clumsy. And if I change anything it will fall apart. (ItemAtIndex are all even numbers because I have a spacer in between each button).

In the ButtonAction of MainToolbar I have the following:

select case item.name
      
    case "StudentButton"
      WebToolbarButton(me.ItemAtIndex(0)).Toggled=true
      WebToolbarButton(me.ItemAtIndex(2)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(4)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(6)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(8)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(10)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(12)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(14)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(16)).Toggled=false
      
    case "InventoryButton"
      WebToolbarButton(me.ItemAtIndex(0)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(2)).Toggled=true
      WebToolbarButton(me.ItemAtIndex(4)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(6)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(8)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(10)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(12)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(14)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(16)).Toggled=false
    case "LibraryButton"
      WebToolbarButton(me.ItemAtIndex(0)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(2)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(4)).Toggled=true
      WebToolbarButton(me.ItemAtIndex(6)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(8)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(10)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(12)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(14)).Toggled=false
      WebToolbarButton(me.ItemAtIndex(16)).Toggled=false

etc., until it goes through all the variations.

Is there a better way to do this? To loop through it?

Summary

This text will be hidden

Hey Eric, something like this maybe?:

For Index As Integer = 0 To Me.ItemCount - 1
  Var Current As WebToolbarButton = WebToolbarButton(Me.ItemAtIndex(Index))
  Current.Toggled = Current = Item
Next

So close!

That works if I don’t have a WebToolbarSpaces, WebToolbarSeparator, etc in there. Otherwise it throws up an illegal cast exception.

A try/catch there will do the trick:

For Index As Integer = 0 To Me.ItemCount - 1
  Try
    Var Current As WebToolbarButton = WebToolbarButton(Me.ItemAtIndex(Index))
    Current.Toggled = Current = Item
  Catch
    ' Not a WebToolbarButton =)
  End Try
Next

There is also a way to check the Type if you want.

Also, you can prevent the Debugger from stopping there using a pragma:

#Pragma BreakOnExceptions False

Hope this helps!

That works! Thank you so much!

1 Like

Yay! =)

And then today I open the User Guide to figure out something else and it literally has an example in there to show how to do this.

Egg on my face, for sure. :man_facepalming: