ListView reagiert nicht

  • Hi Leute,

    hab schon wieder ein Problem bezüglich einer ListView. Ich versuche über einen FileOpenDialog() ein Element in eine ListView hinzuzufügen, dafür gibt es ja die Funktion

    [autoit]

    _GUICtrlListView_InsertItem

    [/autoit]


    bzw.

    [autoit]

    _GUICtrlListView_AddItem

    [/autoit]

    Allerdings wird kein Item hinzugefügt, der FileOpenDialog liefert auch den richtigen Pfad zurück, als theoretisch hätte ich was zum eingeben.

    Hier mal der ganze Code:

    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #Region ### START Koda GUI section ### Form=e:\programme\autoit3\projecte\packer\packer_form.kxf
    $Form1_1 = GUICreate("Packer", 359, 298, 323, 205)
    $Group1 = GUICtrlCreateGroup("Ausgewählte Dateien", 16, 24, 329, 185)
    $ListView1 = GUICtrlCreateListView("", 24, 40, 313, 161)
    GUICtrlSetCursor (-1, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("Ordner:", 16, 216, 39, 17, $WS_BORDER)
    $Button1 = GUICtrlCreateButton("... Durchsuchen", 64, 216, 281, 17)
    $Button2 = GUICtrlCreateButton("Packen", 16, 256, 329, 33, BitOR($BS_CENTER,$WS_BORDER))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Func GetFileName($Path)
    $ret = StringSplit($Path,"\",2)
    If IsArray($ret) Then
    Return $ret[UBound($ret)-1]
    EndIf
    If @error Then Return -1
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $InputFile = CompGetFileName(FileOpenDialog("Gepackte Dateien speichern...", "Bibliotheken\Dokumente", "Alle Dateien (*.*)|WinRAR-Archive (*.rar)"))

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

    WinWaitClose("Gepackte Dateien speichern...")
    _GUICtrlListView_AddItem($ListView1, $InputFile)
    _GUICtrlListView_InsertItem($ListView1, $InputFile, 0)
    Case $Button2
    If _GUICtrlListView_GetItemCount($ListView1) = 0 Then
    MsgBox(64, "Fehlende Dateien!", "Bitte zuerst Dateien der Liste hinzufügen!")
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von CrazyAutoIT (23. Juni 2013 um 15:19)

  • Am besten immer mit GUICtrlGetHandle machen. Sowie in der Hilfe auch beschrieben. ist.

    [autoit]

    _GUICtrlListView_AddItem(GUICtrlGetHandle($ListView1), $InputFile)

    [/autoit]


    Aber wieso nutzt du nicht GUICtrlCreateListviewItem?
    Und wo ist denn die Funktion CompGetFileName?

  • Ich hab das jetzt mal so angepasst, funktioniert leider immer noch nicht (es wird kein neues Element in der ListView angezeigt):

    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #Region ### START Koda GUI section ### Form=e:\programme\autoit3\projecte\packer\packer_form.kxf
    $Form1_1 = GUICreate("Packer", 359, 298, 323, 205)
    $Group1 = GUICtrlCreateGroup("Ausgewählte Dateien", 16, 24, 329, 185)
    $ListView1 = GUICtrlCreateListView("", 24, 40, 313, 161)
    GUICtrlSetCursor (-1, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("Ordner:", 16, 216, 39, 17, $WS_BORDER)
    $Button1 = GUICtrlCreateButton("... Durchsuchen", 64, 216, 281, 17)
    $Button2 = GUICtrlCreateButton("Packen", 16, 256, 329, 33, BitOR($BS_CENTER,$WS_BORDER))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Func GetFileName($Path)
    $ret = StringSplit($Path,"\",2)
    If IsArray($ret) Then
    Return $ret[UBound($ret)-1]
    EndIf
    If @error Then Return -1
    EndFunc

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $InputFile = GetFileName(FileOpenDialog("Gepackte Dateien speichern...", "Bibliotheken\Dokumente", "Alle Dateien (*.*)|WinRAR-Archive (*.rar)"))
    WinWaitClose("Gepackte Dateien speichern...")
    _GUICtrlListView_AddItem(GUICtrlGetHandle($ListView1), $InputFile)
    Case $Button2
    If _GUICtrlListView_GetItemCount($ListView1) = 0 Then
    MsgBox(64, "Fehlende Dateien!", "Bitte zuerst Dateien der Liste hinzufügen!")
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Funzt, danke :)

    Nur mit welcher Funktion kann ich angeben, welche Spalte ich befüllen will?

    Einmal editiert, zuletzt von CrazyAutoIT (23. Juni 2013 um 15:04)

    • Offizieller Beitrag
    Zitat

    Nur mit welcher Funktion kann ich angeben, welche Spalte ich befüllen will?


    1 Spalte:

    [autoit]

    _GUICtrlListView_AddItem

    [/autoit]


    Jede andere Spalte:

    [autoit]

    _GUICtrlListView_AddSubItem

    [/autoit]


    Wenn das Item schon existiert, kann man die Werte mit

    [autoit]

    _GUICtrlListView_SetItem

    [/autoit]


    setzen