ToolbarButton Pressed

Per Methode baue ich im Open-Events des Fenster die Toolbar auf.
Die Buttons gibt es als Properties und sie sind alle Toggle-Buttons.
Funktioniert auch alles prima.

Ich bekomme es nur nicht hin, einen bestimmten Button per Code als
geklickt (Pressed) zu selektieren. Egal wo ich den Befehl setze, der Button
ist immer NIL.

Was mache ich falsch?

Viele Grüße
Andreas

Welches xojo version hast du?

2020 Release 2.1

Andere sind viel eher Bereit zu helfen wenn man ihnen die relevanten Informationen gibt.

Also zeig doch mal den Code den du benutzt und die Fehlermeldung dann kann man sehen was nicht klappt.

OK, kein Problem, hier der Code…

Aufbau der Toolbar, die pToolbar… sind die Parameter die ich in die Methode übergebe:

if pToolbarButton is NIL then
pToolbarButton = new ToolbarButton
pToolbarButton.Caption = pButtonName
pToolbarButton.Tag = pButtonTag
pToolbarButton.Icon = pIcon
pToolbarButton.Enabled = pEnabled
pToolbarButton.ButtonStyle = ToolbarButton.ButtonStyles.ToggleButton
pToolBar.AddButton (pToolbarButton)
end if

Das klappt auch, die Toolbar wird angezeigt und funktioniert auch einwandfrei
Jetzt will ich aber einen Button als “Pressed” setzen und da hängt es.

Im Fenster habe ich Properties wie tbbDatabase as ToolBarButton.
Egal von ich tbbDatabase.Pressed = True setze, das Property ist immer NIL.

Was mache ich falsch?

Im welches code oder event ist es Nil ? Un am was hast du pToolbarButton gezetst, am window?

Sie kannst ein example offnen:

  • Im xojo menu “Neues project”
  • Examples > Desktop > Controls > Toolbar > DesktopToolbarsDynamic.xojo_binary_poject

Dan im AddButton.Action zetst du Unteren:

PrintToolButton = New ToolbarButton
PrintToolButton.Caption = "Print"
PrintToolButton.Icon = print3x
PrintToolButton.ButtonStyle = ToolbarButton.ButtonStyles.ToggleButton 
WindowToolbar.AddButton(PrintToolButton) 

Un dan im DisablePrintButton.Action:

If PrintToolButton <> Nil Then
  PrintToolButton.Pressed = Not PrintToolButton.Pressed
End If

In meinen Projekten schreibe ich noch den Namen der Toolbar davor, und das sogar innerhalb der Toolbar selbst, da es sonst zu der beschriebenen Fehlermeldung kommt:
NameDerToolbar.pToolbarButton.Pressed=true

Was ist ihre code woher sie die classe macht mit “New” im open event von toolbar?

OK, erst mal danke für eure Hilfe.
Ich bin jetzt etwas weiter, auch wenn es nicht zufriedenstellend ist.

Setze ich diesen Code direkt in den Open-Event des Fenster, wird die Toolbar einwandfrei aufgebaut und der ToolbarButton ist nicht NIL:

If tbbDatabase Is Nil Then
tbbDatabase = New ToolbarButton
tbbDatabase.Caption = “Add”
tbbDatabase.Icon = data32
tbbDatabase.ButtonStyle = ToolbarButton.ButtonStyles.ToggleButton

tbWinSettingsHandler.AddButton(tbbDatabase)
End If

Setze ich jetzt den exakt gleichen Code in eine Methode und rufe diese aus dem Open-Event auf, wird die Toolbar ebenfalls aufgebaut, allerdings sind die Buttons dann NIL.

Das verstehe ich nicht!

Wo “liegt” denn die Methode? In einem globalen Modul? Denn fehlt Ihr evtl. der Kontext.

OK, das Problem konnte ich lösen.
Ich habe das Fenster gelöscht und komplett neu aufgebaut, dann hat es so funktioniert wie erwartet.
Die Methoden habe ich 1zu1 kopiert. Keine Ahnung was da passiert ist.
Noch mal danke für die Hilfe!

1 Like