This code works fine
Select Case Item.Name
Case “tbarDream”
winWizard.PagePanel1.SelectedPanelIndex = 1
Case “tbarGoal”
//MessageBox(“Goal clicked.”)
winWizard.PagePanel1.SelectedPanelIndex = 2
Case “tbarNextStep”
//messageBox(“Next Step clicked”)
winWizard.PagePanel1.SelectedPanelIndex = 3
Case “tbarOneOff”
//messageBox “One Off”
winWizard.PagePanel1.SelectedPanelIndex = 4
Case “tbarMain”
winTasksMain.Show
Case “tbarSingle”
winSingleTask.Show
End Select
I would like to determine if the first button of the toolbar whose button name is tbarDream, a toggle button, has been pressed , and is now down or has been pressed and is now up
Insert a Toolbar (= Toolbar1), and add a ToolbarButton, set the ToolbarButton to Toggle.
Notice that the name of the Toolbutton is ToolItem1 and it IS a Toolbutton - that is imposrtant!
Put a Toolbar1 on the window and rename it to MyToolbar
Add a PushButton to the Window
Put this in the PushButton
Sub Action() Handles Action
If MyToolBar.ToolItem1.pressed Then
MessageBox "works"
else
MessageBox "AAAAAARGH"
end if
End Sub
If you are using a Xojo version < 2019 R2 then the code is
Sub Action() Handles Action
If MyToolBar.ToolItem1.pushed Then
MsgBox "works"
else
MsgBox "AAAAAARGH"
end if
End Sub
Btw you have to use the name of the button (eg “ToolItem1”, not the name of the super class “ToolbarButton”. After all YOU might know which button you mean, but the computer doesn’t (it’s like shouting “Human” instead of “Tom” and expecting Tom to come).
P.S. @Anthony_Cyphers: maybe YOU could have helped Lawrence? Just an idea …
Thank you. I think my issue is that the type of toolbar button I’m trying to test is the togglebutton. To me the word toggle means to go from one state to another. So in my mind if the togglebutton is in the up position and is then clicked it will then be in the down position. So then I would like to at some point programatically ascertain the postion/state of the toggle button. I want to find out is it up or down. I don’t want to necessarily trigger the button I just want to know its state. That does not seem to be acceptable to the compiler.
Add a module and name it “ToolbarExtensions”
Add this method to it
Public Function IsToggleButtonPushed(extends tb as toolbar, toggleNButtonname as string) as boolean
If tb Is Nil Then
Return False
End If
For i As Integer = 0 To tb.Count - 1
If tb.Item(i) IsA ToolItem Then
Dim item As ToolItem = tb.Item(i)
If item.Name <> toggleNButtonname Then
Continue
End If
If item IsA ToolButton Then
Dim button As ToolButton = toolbutton(item)
Return (button.Style = ToolButton.ToolStyleToggleButton) And (button.Pushed)
End If
End If
Next
End Function
Then in your code you can do something like
If Toolbar11.IsToggleButtonPushed("tbarDream") Then
MsgBox "pushed"
Else
MsgBox "not pushed"
End If
Thank you, that worked. A very nice solution that taught me about extends and enumerations. I did have to update it for 2019r3.2. which helped me learn some more about the debugger messages. By the way how did you post the code?