- Offizieller Beitrag

ListCtrl - GridLines?
-
- Nim
-
BugFix -
15. September 2020 um 18:59 -
Unerledigt
-
-
- Offizieller Beitrag
Ideen?
So:
Code
Alles anzeigenimport wNim, winim var dc = MemoryDC() bmp = Bitmap(16, 16) dc.selectObject(bmp) dc.clear(Brush(wBlueBrush)) # <- Standard-Brush let blueIcon = Icon(bmp) dc.clear(Brush(color=0x000000FF)) # <- im BGR-Format let redIcon = Icon(bmp) dc.clear(Brush(wWhiteBrush)) # <- Standard-Brush dc.drawCheckMark(0, 0, 15, 15) # Haken zeichnen (x, y, w, h) let checkIcon = Icon(bmp) let app = App() frame = Frame(title="Test ImageList",size=(600,300)) panel = frame.Panel() list = panel.ListCtrl(size=(560,240), pos=(10,10), style=wLcReport or wBorderDouble or wLcSingleSel) list.setExtendedStyle(LVS_EX_GRIDLINES) # <- Extended Style var il = ImageList(size=(16,16), mask=false, initialCount=0) il.add(blueIcon) il.add(redIcon) il.add(checkIcon) list.setImageList(il) list.appendColumn(text="Column 0", width=150) list.setColumnFormat(0, wListFormatLeft) list.appendColumn(text="Column 1", width=110, format=wListFormatRight) list.appendColumn(text="Column 2", width=110, format=wListFormatRight) list.appendColumn(text="Column 3", width=wListAutosizeUseHeader) var imgIndex: int for i in 0..10: imgIndex = 1 if (i mod 2) == 0: imgIndex = 0 if (i mod 3) == 0: imgIndex = 2 list.appendItem([$i&"-0", $i&"-1", $i&"-2", $i&"-3"], imgIndex) frame.wIdExit do (): frame.delete() frame.center() frame.show() app.mainLoop()
-
- Offizieller Beitrag
So:
Eigentlich seltsam, dass dieser Style nicht im Modul enthalten ist. Ebenso fehlt LVS_EX_TRACKSELECT.
Ich habe mir mal noch 2 Funktionen erstellt um jeweils Spalten und Inhalt in einem Rutsch zu setzen.
Code
Alles anzeigenimport wNim/[wApp, wFrame, wPanel, wListCtrl] # ------------------------------------------------------------------------------ type ListHead = tuple[text: string, format: int, width: int] ListText = seq[string] proc setListColumns(list: wListCtrl, head: openArray[ListHead]) = for i in 0..<head.len: list.appendColumn(text=head[i][0], width=head[i][2]) list.setColumnFormat(i, head[i][1]) proc setListText(list: wListCtrl, stuff: openArray[ListText]) = var item: int for i in 0..<stuff.len: item = list.appendItem(stuff[i][0]) for j in 1..<stuff[i].len: list.setItem(item, j, stuff[i][j]) # ------------------------------------------------------------------------------ let app = App() frame = Frame(title="List Control",size=(600,300)) panel = frame.Panel() list = panel.ListCtrl(size=(560,240), pos=(10,10), style=wLcReport or wBorderDouble or wLcSingleSel) list.setExtendedStyle(0x1 or 0x8) # 0x1 LVS_EX_GRIDLINES, 0x8 LVS_EX_TRACKSELECT list.setListColumns([ ("Spalte 1",wListFormatLeft,150), ("Spalte 2",wListFormatCenter,150), ("Spalte 3",wListFormatRight,wListAutosizeUseHeader)]) list.setListText([ @["A","B","C"], @["D","E","F"], @["G","H","I"], @["J","K","L"]]) frame.wIdExit do (): frame.delete() frame.center() frame.show() app.mainLoop()
-
Eigentlich seltsam, dass dieser Style nicht im Modul enthalten ist. Ebenso fehlt LVS_EX_TRACKSELECT.
Hier sind die versteckt:
import winim/[inc\commctrl]
...
LVS_EX_GRIDLINES* = 0x1
LVS_EX_SUBITEMIMAGES* = 0x2
LVS_EX_CHECKBOXES* = 0x4
LVS_EX_TRACKSELECT* = 0x8...
-
- Offizieller Beitrag
Hier sind die versteckt:
import winim/[inc\commctrl]
Ja, ich hatte sie schon gefunden. Aber eigentlich gehört das zu wNim. Wegen der paar Konstanten (ganz klar List-Konstanten) mag ich ungern eine extra Bibliothek einbinden.