Ich habe da ein Problem mit der neuen Version (0.11.2) von wNim.
Mit der alten Version (0.11.0) funktioniert das folgende Beispiel einwandfrei:
import wNim
let app = App()
let frame = Frame(title="Treeview-Example", size=(480, 640))
let panel = Panel(frame)
let idTreeview = TreeCtrl(panel, pos=(10, 40), size=(440, 540), style=wBorderSimple or wTrHasButtons or wTrHasLines or wClipChildren)
idTreeview.font = Font(16, faceName="Tahoma", weight=wFontWeightNormal)
# Beispieldaten eintragen
let root = idTreeview.addRoot("Root")
let ItemA = idTreeview.appendItem(root, "A:")
idTreeview.appendItem(ItemA, "A1")
idTreeview.appendItem(ItemA, "A2")
idTreeview.appendItem(ItemA, "A3")
let ItemB = idTreeview.appendItem(root, "B:")
idTreeview.appendItem(ItemB, "B1")
idTreeview.appendItem(ItemB, "B2")
idTreeview.appendItem(ItemB, "B3")
let ItemC = idTreeview.appendItem(root, "C:")
idTreeview.appendItem(ItemC, "C1")
idTreeview.appendItem(ItemC, "C2")
idTreeview.appendItem(ItemC, "C3")
root.expand() # Root-Item aufklappen
# Zum auslesen des Pfads
proc getTree(tree: wTreeCtrl, item: wTreeItem, sepChar: char = chr(92)): string =
var tvItem = item
while tvItem != tree.getRootItem:
result = tvItem.getText & sepChar & result
tvItem = tvItem.getParent
# Wenn ein Item im Treeview angeklickt wird
idTreeview.wEvent_TreeSelChanged do (event: wEvent):
let
tvItem = event.getItem # Item
tvCtrl = tvItem.getTreeCtrl # Treeview
echo "Angeklickt = ", tvItem.getText, ", Pfad = ", tvCtrl.getTree(tvItem)
# Beim aufklappen eines Treeview-Item wechselt *nicht* der Focus.
# Man benoetigt also das Item vom Aufklappen, nicht das selektierte!
idTreeview.wEvent_TreeItemExpanded do (event: wEvent):
let
tvItem = event.getItem # Item
tvCtrl = tvItem.getTreeCtrl # Treeview
echo "Aufgeklappt = ", tvItem.getText, ", Pfad = ", tvCtrl.getTree(tvItem)
frame.center()
frame.show()
app.mainLoop()
Alles anzeigen
Wenn ich jetzt aber die Version 0.11.2 installiere und das Programm compiliere und starte (soweit funktioniert das noch)
und dann ein Item anklicke oder eines aufklappen will, dann erscheint das hier:
Im changelog zur neuen Version schreibt der Autor, dass er das Event-System geändert hat:
ZitatSlightly modify the event system. wNim now uses the new wEventRegister() macro to define all the event.
A newly-defined event don't need to useconst wEvent_MyNewEvent = wEvent_App + 1
anymore.
The constructor of wEventEvent()
can return the corresponding object of the subclass that registered
by wEventRegister. All of this means that the GUI controls and their event can be designd as plugin
module more easily (Breaking Change).
Aber ich verstehe nicht, wie ich das jetzt auf das neue System umstellen soll.
Hat jemand eine Idee?