ListView Dateiauswahl und Dateinamensausgabe

  • Hallo,

    ich habe hier mal eine Gui mit ListView geschrieben. Nun zeigt das ListView Element die Pfadinhalte nicht an. Mit MsgBox habe ich festgestellt, dass es am GUICtrlCreateListViewItem liegen muss. (<- Problem1). Das zweite Problem ist das nach dem klicken des Startbuttons sicher nicht der Dateiname erscheinen wird. (<-Problem 2).

    Habe ich bei Problem 1 vielleicht eine Include Datei vergessen?

    [autoit]

    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #Include <Excel.au3>
    #Include <File.au3>
    #include <GUIConstantsEx.au3>
    #Include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GuiListView.au3>

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

    Global $Pfadinhalt, $ListView1

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 254, 454, 192, 114)
    $Button1 = GUICtrlCreateButton("Durchsuchen", 80, 8, 75, 25, 0)
    $ListView1 = GUICtrlCreateListView("", 0, 40, 250, 342)
    $Button2 = GUICtrlCreateButton("Start", 112, 408, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    Durchsuchen()
    Case $Button2
    Dateiausgabe()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func Durchsuchen()

    Local $xlsdateiname, $xlspfad

    ;~Löscht den Inhalt des Listenfensters
    _GUICtrlListView_DeleteAllItems($ListView1)

    ;~Startet ein Explorermenü um einen Dateipfad zu wählen.
    $xlspfad = FileSelectFolder("Beinhaltenden Ordner wählen","root dir",1)
    MsgBox(1,"Dateipfad info", ""& $xlspfad)

    ;~ UDF gibt Verzeichnisinhalt aus und speichert ihn auf einem Array
    $Pfadinhalt = _FileListToArray($xlspfad)
    _ArrayDisplay($Pfadinhalt)

    ;~Auflisten aller einzelnen Arrayinhalte
    For $i = 1 To $Pfadinhalt[0] ;~Step 1 ;~Hinweis $Array[0] steht für den gesamten Inhalt
    ;~ MsgBox(1,"Schleife", " " & $Pfadinhalt[$i])
    GUICtrlCreateListViewItem(""&$Pfadinhalt[$i], $ListView1)

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

    Next
    EndFunc

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

    Func Dateiausgabe()
    Local $index, $Dateiwahl
    Local $index,

    $index = _GUICtrlListView_GetSelectedIndices($ListView1, True)
    $Dateiwahl = _GUICtrlListView_GetItemTextString($ListView1, $index )
    MsgBox(1,"Datei ausgewählt","Sie haben folgende Dateien ausgewählt "&$Dateiwahl)

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

    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von autoitinstallermaker (7. April 2010 um 16:33)

  • Der Fehler liegt hier :P

    [autoit]

    $ListView1 = GUICtrlCreateListView("", 0, 40, 250, 342)

    [/autoit]


    Du musst mindestens eine Kolumne angeben. Liess dir dazu am besten auch mal die Hilfe durch. ;)
    Probier es mal so:

    [autoit]

    $ListView1 = GUICtrlCreateListView("Dateien", 0, 40, 250, 342)

    [/autoit]
  • Supi :rock: Das funktioniert. :D Nun zeigt das Programm leider auch noch keine Dateinamen an. ;( Liegt wahrscheinlich an meiner Abfrage oder? Ich glaube ich sollte irgendwie die ControlID der Checkbox bekommen oder?

    [autoit]

    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #Include <Excel.au3>
    #Include <File.au3>
    #include <GUIConstantsEx.au3>
    #Include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GuiListView.au3>

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

    Global $Pfadinhalt, $ListView1

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 254, 454, 192, 114)
    $Button1 = GUICtrlCreateButton('Dateiauswahl', 8, 136, 193, 289, Default, BitOR($WS_EX_CLIENTEDGE, $LVS_EX_CHECKBOXES))
    $ListView1 = GUICtrlCreateListView("", 0, 40, 250, 342)
    $Button2 = GUICtrlCreateButton("Start", 112, 408, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    Durchsuchen()
    Case $Button2
    Dateiausgabe()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func Durchsuchen()

    Local $xlsdateiname, $xlspfad

    ;~Löscht den Inhalt des Listenfensters
    _GUICtrlListView_DeleteAllItems($ListView1)

    ;~Startet ein Explorermenü um einen Dateipfad zu wählen.
    $xlspfad = FileSelectFolder("Beinhaltenden Ordner wählen","root dir",1)
    MsgBox(1,"Dateipfad info", ""& $xlspfad)

    ;~ UDF gibt Verzeichnisinhalt aus und speichert ihn auf einem Array
    $Pfadinhalt = _FileListToArray($xlspfad)
    _ArrayDisplay($Pfadinhalt)

    ;~Auflisten aller einzelnen Arrayinhalte
    For $i = 1 To $Pfadinhalt[0] ;~Step 1 ;~Hinweis $Array[0] steht für den gesamten Inhalt
    ;~ MsgBox(1,"Schleife", " " & $Pfadinhalt[$i])
    GUICtrlCreateListViewItem(""&$Pfadinhalt[$i], $ListView1)

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

    Next
    EndFunc

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

    Func Dateiausgabe()
    Local $index, $Dateiwahl
    Local $index,

    $index = _GUICtrlListView_GetSelectedIndices($ListView1, True)
    $Dateiwahl = _GUICtrlListView_GetItemTextString($ListView1, $index )
    MsgBox(1,"Datei ausgewählt","Sie haben folgende Dateien ausgewählt "&$Dateiwahl)

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

    EndFunc

    [/autoit]

    P.S Danke für das Übersetzen der Hilfe! :rock: Hab sie mir grad mal runtergeladen.

    2 Mal editiert, zuletzt von autoitinstallermaker (7. April 2010 um 13:50)

  • So habs nach ner Menge Arbeit geschafft. Jetzt ist es eigentlich nur zwei, drei Zeilen mehr. Naja guckst euch selbst an.

    [autoit]

    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #Include <Excel.au3>
    #Include <File.au3>
    #include <GUIConstantsEx.au3>
    #Include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GuiListView.au3>

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

    Global $Pfadinhalt, $ListView1, $index

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 254, 454, 192, 114)
    $Button1 = GUICtrlCreateButton("Durchsuchen", 80, 8, 75, 25, 0)
    $ListView1 = GUICtrlCreateListView('Dateiauswahl', 8, 136, 193, 289, Default, BitOR($WS_EX_CLIENTEDGE,$LVS_EX_CHECKBOXES))
    $Button2 = GUICtrlCreateButton("Start", 130, 425, 75, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    Durchsuchen()
    Case $Button2
    Dateiausgabe()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func Durchsuchen()

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

    Local $xlsdateiname, $xlspfad

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

    ;~Löscht den Inhalt des Listenfensters
    _GUICtrlListView_DeleteAllItems($ListView1)

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

    ;~Startet ein Explorermenü um einen Dateipfad zu wählen.
    $xlspfad = FileSelectFolder("Beinhaltenden Ordner wählen","root dir",1)
    MsgBox(1,"Dateipfad info", ""& $xlspfad)

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

    ;~ UDF gibt Verzeichnisinhalt aus und speichert ihn auf einem Array
    $Pfadinhalt = _FileListToArray($xlspfad)
    _ArrayDisplay($Pfadinhalt)

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

    ;~Auflisten aller einzelnen Arrayinhalte
    For $i = 1 To $Pfadinhalt[0] ;~Step 1 ;~Hinweis $Array[0] steht für den gesamten Inhalt
    ;~ MsgBox(1,"Schleife", " " & $Pfadinhalt[$i])
    GUICtrlCreateListViewItem(""&$Pfadinhalt[$i], $ListView1)

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

    Next
    EndFunc

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

    Func Dateiausgabe()
    Local $Dateiwahl, $Position

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

    ;~ $index = _GUICtrlListView_GetSelectedIndices($ListView1, True)
    ;~ $Dateiwahl = _GUICtrlListView_GetItemTextString($ListView1, $index )
    ;~ MsgBox(1,"Datei ausgewählt","Sie haben folgende Dateien ausgewählt "&$Dateiwahl)
    For $i = 0 To UBound($Pfadinhalt) Step 1;~besser while until
    $index = _GUICtrlListView_GetItemChecked($ListView1, $i)
    If $index = True Then
    $Position = $i + 1
    EndIf
    Next
    $dateiname = $Pfadinhalt[$Position]
    MsgBox(1,"Dateiname","Der Dateiname ist"& $dateiname)
    EndFunc

    [/autoit]

    P.S Danke für die schnelle Hilfe!

    Einmal editiert, zuletzt von autoitinstallermaker (8. April 2010 um 08:25)