Mein Problem:
Ich verwende in einem Fenster eine Toolbar mit einem Toolitem namens zb “ToolItemToggle” mit dem Style “ToggleButton”.
Im Action-Event der Toolbar möchte ich unterschiedliche Reaktionen erreichen in Abhängigkeit davon, ob Pushen =true oder false ist.
Also
Select Case item.Name
case “ToolItemToggle”
if item.pushed then …
Das funktioniert aber nicht. Ich erhalte eine Fehlermeldung bereits beim Übersetzen:
Type “ToolItem” has no member named “Pushed”
Ich weiß derzeit nicht, wie ich das lösen soll, zumal im Debugger eindeutig der Property “Pushed” ein boolescher Wert in Abhängigkeit von dem Zustand des Items zugeordnet wird.
Die Dokus sind da wenig hilfreich. Im Userguide finde ich:
A ToolButton is a button that you add to the toolbar. When the user clicks a button (that is clickable, not all styles can be clicked), the toolbar Action event handler is called.
Properties
Pushed?
For toggle buttons, allows you to specify and check whether the button is pushed.
Vielen Dank!
Jetzt erinnere ich mich. Ich hatte bei meinen Recherchen in den Dokus irgendwo so einen TypeCast gefunden, der dort allerdings ohne nhere Begrndung und in einem anderen Zusammenhang auftauchte.
Irritierend ist immer wieder, dass XOJO die theoretischen Grundlagen der objektorientierten Programmierung nicht korrekt einhlt.
Ein neu erzeugtes ToolItem gehrt automatisch der Oberklasse ToolButton an und wird mit unterschiedlichen Styles versehen.
Warum dann ein TypeCast auf die Oberklasse ToolButton erforderlich ist, bleibt ein Geheimnis.
Aber was soll’s!
Du hast mir sehr geholfen!
“ToolItem ist die Oberklasse von ToolButton”! DU hast recht! Es muss so sein!
Folgende Irritation:
Wenn man im ToolbarEditor ein neues Item hinzufügt, ist es immer ein Toolbutton. Es gibt auch offensichtlich keine anderen Unterklassen von ToolItem.
Toolbuttons werden nicht in Unterklassen sondern über den Style differenziert, von daher hat jeder Toolbutton die Eigenschaft Pushed, auch wenn er kein ToggleButton ist. (Siehe Debugger)
Wenn es aber nur eine Unterklasse von ToolItem gibt, warum ist der Parameter im Action-Event kein Toolbutton.
Letzteres macht nur Sinn, wenn doch weitere ToolItems gibt und ich die nur nicht kenne bzw. Erweiterungen geplant sind.
Ansonsten sind diese beiden Anmerkungen Hinweise auf (kleinere!) Entwurfsfehler.
Aber das ist Theorie und müssen wir nicht weiter zu verfolgen.