_GUICtrlListView_InsertItem mit mehreren Spalten

  • Hallo,

    ich habe ein ListView mit 5 Spalten.

    Ich bekomme meine Daten im Format: xxx|xxx|xxx|xxx|xxx (So habe ich es auch Initialisiert und die Spaltennamen vergeben)
    Nun möchte ich Zeilen hinzufügen und habe jedoch Probleme, die Daten landen alle in der ersten Spalte... was mache ich falsch?

    Ich habe bisher immer GUICtrlCreateListViewItem benutzt, nun möchte ich allerdings gerne die UDF benutzen, da es hier mehrere Möglichkeiten gibt.
    Habe mir eigentlich erhofft das ich mit _GUICtrlListView_InsertItem() das genau so hinbekomme, da ich bei dieser Funktion die neuen Daten gezielt an eine Position hinzufügen kann.

    DANKE schonmal!

  • Das geht leider nicht mit einem Befehl allein. _GUICtrlListView_InsertItem und danach _GUICtrlListView_SetItemText pro Subitem. Das UDF kann mehr, ist aber manchmal auch etwas aufwändiger.
    Siehe im helpfile:
    "_GUICtrlListView_InsertItem
    Remarks
    You can not use this function to insert subitems. Use _GUICtrlListView_SetItemText to insert subitems."

  • alles klar, habe ich mir schon fast gedacht, habe nur gehofft das ich einfach nur Blind bin.
    okay, damit kann ich arbeiten, fehlt nur noch das Problem mit dem neu Positionieren in meinem Prog, dann kann ich komplett auf die UDF umsteigen.

    Wie kann man denn die von dem UDF erzeugten (_GUICtrlListView_Create) eine neue Position und Größe geben?
    bisher nutzte ich immer GUICtrlSetPos und zum erzeugen GUICtrlCreateListView.

    Wenn ich jetzt _GUICtrlListView_Create nutze, kann ich leider nicht mehr mit GUICtrlSetPos neu Positionieren.


    So habe noch ein Problem gefunden... Ich möchte jeder einzelnen Zeile eine anderen Farbe zuordnen, je nachdem was in der Zeile steht. Mit Funktion _GUICtrlListView_SetTextColor setze ich ja leider nur für alles die Farbe.

    Einmal editiert, zuletzt von HalliHalloSchat (24. November 2009 um 15:27)

  • Also: UDF und "normale" Befehle lassen sich mischen. GUICtrlSetPos funzt also auch mit der UDF.

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $hListView

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("ListView Insert Item", 400, 300)
    $hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; Insert columns
    _GUICtrlListView_InsertColumn($hListView, 0, "Column 1", 100)
    _GUICtrlListView_InsertColumn($hListView, 1, "Column 2", 100)

    [/autoit] [autoit][/autoit] [autoit]

    ; Add items
    _GUICtrlListView_InsertItem($hListView, "Item 1", 0)
    _GUICtrlListView_InsertItem($hListView, "Item 2", 1)
    _GUICtrlListView_InsertItem($hListView, "Item 3", 1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Add SubItem
    _GUICtrlListView_SetItemText($hListView,0,"Item 1-1",1)
    _GUICtrlListView_SetItemText($hListView,1,"Item 2-1",1)
    _GUICtrlListView_SetItemText($hListView,2,"Item 3-1",1)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(2000)
    GUICtrlSetPos($hListView,12,12,384,258)
    Sleep(2000)

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete()

    [/autoit]


    Das mit der Farbe muss ich mir noch ansehen.

  • Also ich mische hemmungslos bis mir jemand sagt, dass ich da einen Sch...ss zusammenprogrammiere ;)
    Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $hListView

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("ListView Insert Item", 400, 300)
    $hListView = GUICtrlCreateListView("", 2, 2, 394, 268)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_BeginUpdate($hListView)

    [/autoit] [autoit][/autoit] [autoit]

    ; Insert columns
    _GUICtrlListView_InsertColumn($hListView, 0, "Column 1", 100)
    _GUICtrlListView_InsertColumn($hListView, 1, "Column 2", 100)

    [/autoit] [autoit][/autoit] [autoit]

    ; Add items
    GUICtrlCreateListViewItem("Item 1|Item 1-1",$hListView)
    GUICtrlSetBkColor(-1, 0xD0DEC7)
    GUICtrlCreateListViewItem("Item 2|Item 2-1",$hListView)
    GUICtrlCreateListViewItem("Item 3|Item 3-1",$hListView)
    GUICtrlSetBkColor(-1, 0xD0DEC7)

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_EndUpdate($hListView)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(2000)
    GUICtrlSetPos($hListView,12,12,384,258)
    Sleep(2000)

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete()

    [/autoit]
  • Eigentlich nicht. Für mich war bisher das erste Kriterium dass es funktioniert. Danach kommt Performance und dann irgendwann Schönheit des Codes. :D