- Offizieller Beitrag
Hier Werden die Status-Images bei Expanded/Collapsed jeweils getauscht. Die Images habe ich hier gepostet.
Code
import wnim/[wApp, wFrame, wPanel, wStaticText, wNoteBook, wTreeCtrl, wImageList, wBitmap]
###############################################
proc getSelectedItem(wTree: wTreeCtrl): seq =
var ssel = newSeq[wTreeItem]()
if not isEmpty(wTree):
for item in wTree.allItems():
if isSelected(item):
ssel.add(item)
break
result = ssel
###############################################
let app = App()
let frame = Frame(title="TreeCtrl", size=(300,250))
let panel = Panel(frame)
var il = ImageList(size=(16,16), mask=false, initialCount=0)
il.add(Bitmap(r".\bmp_state_16x16\yellow_unchecked_enabled.bmp"))
il.add(Bitmap(r".\bmp_state_16x16\yellow_right_enabled.bmp"))
il.add(Bitmap(r".\bmp_state_16x16\yellow_left_enabled.bmp"))
let tc = TreeCtrl(panel)
let tri = tc.getRootItem()
tc.setImageList(il)
let ti1 = tc.appendItem(tri, text="Item_1", image=1)
tc.appendItem(ti1, text="Item_1_1", image=0)
tc.appendItem(ti1, text="Item_1_2", image=0)
let ti13 = tc.appendItem(ti1, text="Item_1_3", image=1)
tc.appendItem(ti13, text="Item_1_3_1", image=0)
tc.appendItem(ti13, text="Item_1_3_2", image=0)
tc.appendItem(ti1, text="Item_1_4", image=0)
tc.appendItem(tri, text="Item_2", image=0)
tc.appendItem(tri, text="Item_3", image=0)
let ti4 = tc.appendItem(tri, text="Item_4", image=1)
tc.appendItem(ti4, text="Item_4_1", image=0)
let ti42 = tc.appendItem(ti4, text="Item_4_2", image=1)
tc.appendItem(ti42, text="Item_4_2_1", image=0)
tc.appendItem(ti42, text="Item_4_2_2", image=0)
tc.appendItem(ti42, text="Item_4_2_3", image=0)
tc.appendItem(tri, text="Item_5", image=0)
proc changeImage(index: int) =
let item = tc.getSelectedItem()[0]
item.setImage(image=index)
tc.wEvent_TreeItemExpanding do ():
changeImage(2)
tc.wEvent_TreeItemCollapsed do ():
changeImage(1)
proc layout() =
panel.layout:
tc:
left = 10
top = 10
right = panel.right - 10
bottom = panel.bottom - 10
panel.wEvent_Size do ():
layout()
frame.wIdExit do ():
frame.delete()
layout()
frame.center()
frame.show()
app.mainLoop()
Alles anzeigen