Listview füllen

  • Hallo,

    ich möchte gerne anhand einer Listview
    verfolgen wie z.B. der aktuelle Stand meines Loops ist.

    Also, in Feld 1 wird die ID gesetzt (das klappt)
    in Feld 2 soll jeweils eine Progressbar und in Feld 3 einbe Checkbox
    die nach jedem next Befehl gesetzt wird.

    Komm da nicht weiter

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $ListView1 = GUICtrlCreateListView("ID|Fortschritt|Status", 24, 64, 442, 302)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 50)
    $btnStart = GUICtrlCreateButton("Start", 480, 64, 75, 25, $WS_GROUP)
    $btnleer = GUICtrlCreateButton("leer", 480, 96, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnstart
    _Check()

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

    EndSwitch
    WEnd

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

    Func _Check()

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

    For $i = 1 to 10
    $ListView1_0 = GUICtrlCreateListViewItem($i, $ListView1)
    ;$Progress1 = GUICtrlCreateProgress(112, 24, 150, 17)
    ;$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 360, 40, 97, 17)
    next

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

    endfunc

    [/autoit]

    Liebe Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (30. August 2012 um 13:28)

    • Offizieller Beitrag

    Was du vorhast, ist in einem Standard-Listview nicht möglich.
    Checkbox kann nur mit $LVS_EX_CHECKBOXES erstellt werden und befindet sich in der ersten Spalte.
    Embedded Controls in ein Listview zu setzen ist mit gehörig viel Aufwand möglich. Aber da ist es besser, du erstellst dir von Anfang an ein eigenes Control, da keine der Standardfunktionen mehr nutzbar ist.

  • Hallo Bugfix,

    merci für deinen Tipp!
    Also am besten alle Controls auf die Gui plazieren.

    Das mit der Checkbox am Anfang...??
    kannst du mir das an einem Beispiel zeigen?

    Das geht leider nicht

    [autoit]


    For $i = 1 to 10
    $ListView1_0 = GUICtrlCreateListViewItem($LVS_EX_CHECKBOXES, $ListView1)
    next

    [/autoit]


    Liebe Grüße
    Ilse ;)

    • Offizieller Beitrag

    kannst du mir das an einem Beispiel zeigen?


    Bitte:

    [autoit]

    #include <ListViewConstants.au3>
    #include<GUIConstantsEx.au3>
    #include <GUIListView.au3>

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

    $gui = GUICreate('test')
    $hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200, -1, BitOR($LVS_EX_TRACKSELECT,$LVS_EX_CHECKBOXES))
    _GUICtrlListView_SetColumnWidth($hListView, 0, 146)
    _GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
    For $i = 1 To 10
    GUICtrlCreateListViewItem('Zeile ' & $i & ' Spalte 1|Zeile ' & $i & ' Spalte 2', $hListView)
    Next
    GUISetState()

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

    Do
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

    [/autoit]
  • Guten Morgen zusammen,

    BugFix   Zattoo merci, konnte mich gestern leider nicht mehr melden, mußte los...

    Eine Frage noch zur Listview:

    Ich möchte gerne Symbole mithilfe der Schriftart "Webdings"
    in die Listview einfügen. Wie macht man das?

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

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

    $Form1 = GUICreate("Form1", 625, 443, 192, 124)

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

    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 50)
    $btnStart = GUICtrlCreateButton("Start", 480, 64, 75, 25, $WS_GROUP)
    $btnleer = GUICtrlCreateButton("leer", 480, 96, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnstart
    _Check()

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

    EndSwitch
    WEnd

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

    Func _Check()
    $ListView1 = GUICtrlCreateListView("ID|Fortschritt|Status", 24, 64, 442, 302)
    For $i = 1 to 10

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

    $item2 = GUICtrlCreateListViewItem($i&"|------|erl", $ListView1)

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

    next

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

    endfunc

    [/autoit]

    Also, z.B. dort wo erl in der Liste steht soll ein Häkchen von Webdings.
    Bin mit GuiCtrlSetFont nit weitergekommen.

    Und noch ne Frage zum LOOP

    Wie kann ich z.B. in der Spalte 2 anstatt des Zählers
    (1-10) Zeichen einsetzen v. links nach rechts

    Spoiler anzeigen


    >>>>>>>>>>

    Code

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiImageList.au3>
    #include <GuiListView.au3>

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

    $Form1 = GUICreate("Form1", 625, 443, 192, 124)

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

    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 50)
    $btnStart = GUICtrlCreateButton("Start", 480, 64, 75, 25, $WS_GROUP)
    $btnleer = GUICtrlCreateButton("leer", 480, 96, 75, 25, $WS_GROUP)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnstart
    _Check()

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

    EndSwitch
    WEnd

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

    Func _Check()
    $ListView = GUICtrlCreateListView("ID|Fortschritt|Status", 24, 64, 442, 302)

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

    For $i = 1 to 10
    $item2 = GUICtrlCreateListViewItem($i&"||test", $ListView)

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

    For $z = 1 to 10
    GUICtrlSetColor($z, 0xff0000) ; Rot

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

    GUICtrlSetData($item2, "|"&$z&"|erl"); hier sollen die Zeichen addiert werden
    sleep(100)

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

    next
    next

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

    endfunc

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

    Liebe Grüße
    Ilse ;)

    2 Mal editiert, zuletzt von Ilse (30. August 2012 um 09:53)

    • Offizieller Beitrag

    Du kannst von dem Webding-Symbol ein Image erstellen und dieses per Imagelist bereitstellen. Dazu sind aber die Funktionen der Listview-UDF zu nutzen.
    Aber auch hier gilt: Das Symbol landet in der ersten Spalte!
    Von der Einfachheit der Auswertung würde ich aber eindeutig die Checkboxen vorziehen.

    Ich weiß nicht, was dich daran stört, dass die "Erledigt"-Info in Spalte 1 ist. Eigentlich ist dieses doch die höchste Priorität (erledigt oder offen), also ist es doch sinnvoll diese Info in der ersten Spalte zu sehen.
    Vielleicht solltest du dein Konzept überdenken und mit (relativ) einfachen Mitteln einen funktionierenden Code erstellen, als auf einem Konzept zu beharren, das dir nur unendlich viele Probleme aufhalst. :whistling:

  • Hallo Bugfix,

    hatte ich mir schon durchgelesen.

    Ich versuche das anders zu lösen.

    Vielleicht kannst du mir da noch helfen:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiImageList.au3>
    #include <GuiListView.au3>

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

    $Form1 = GUICreate("Form1", 625, 443, 192, 124)

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

    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 200)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 50)
    $btnStart = GUICtrlCreateButton("Start", 480, 64, 75, 25, $WS_GROUP)
    $btnleer = GUICtrlCreateButton("leer", 480, 96, 75, 25, $WS_GROUP)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnstart
    _Check()

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

    EndSwitch
    WEnd

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

    Func _Check()
    $ListView = GUICtrlCreateListView("ID|Fortschritt|Status", 24, 64, 442, 302)

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

    For $i = 1 to 10
    $item2 = GUICtrlCreateListViewItem($i&"||test", $ListView)

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

    For $z = 1 to 10
    GUICtrlSetColor($z, 0xff0000) ; Rot

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

    GUICtrlSetData($item2, "|"&$z&"|erl"); hier sollen die Zeichen addiert werden
    sleep(100)

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

    next
    next

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

    endfunc

    [/autoit]

    Wie kann ich anhand des Zählers in Spalte 2
    einfach z.B. diese Zeichen von links nach rechts setzen?

    Spoiler anzeigen


    anstatt des Zählers in Spalte 2
    1
    2(.....)
    alles in Zeile 2
    >>>>>>>>
    also bei jedem Zähler ein Zeichen dazu! (in einer Zeile)
    Bei 10 Zeichen die nächste Zeile

    Liebe Grüße
    Ilse ;)