Eintrag in ListView durch Pfeiltasten markieren

  • Hi,
    ich habe eine GUI mit einem ListView
    Wenn ich mit der Maus einen Eintrag anklicke, wird ein Vorschaubild der Datei angezeigt.
    Wenn ich eine andere Datei anklicke, wird dieses Bild angezeigt.

    Nun will ich, dass man mit den Pfeiltasten sich durchtippen kann. Es soll dann immer das aktuelle Bild angezeigt werden.

    Habs mal probiert. Es klappt soweit.
    Leider flackert das Bild.
    Er erkennt, dass eine Pfeiltaste gedrückt wurde und durchläuft das ganze die ganze Zeit.
    Aber wie bekomme ich das flackern weg?

    [autoit]

    Case $msg = (_IsPressed("26", $dll) OR _IsPressed("28", $dll))
    GUICtrlSetImage($pic, $Quellordner & _GUICtrlListViewGetItemText($listview, _GUICtrlListViewGetSelectedIndices($listview), 0))

    [/autoit]

    Danke

    • Offizieller Beitrag

    Wenn Du es schon mal soweit hast wäre es Super wenn Du auch eine lauffähige Version zur Verfügung stellen würdest. Ich hab nämlich keine Lust was zu Programmieren was eigentlich schon lauffähig zur Verfügung steht!

  • Sorry, ist etwas später geworden.
    Hier ist das Script.

    Das Flackern tritt bei Fotos mit ca. 3 MB auf.

    EDIT: Hab noch ein den Verweis auf ein externes au3.Script entfernt.

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <GuiList.au3>
    #include <GUIConstants.au3>
    #Include <File.au3>
    #Include <Array.au3>
    #include <_ArrayDisplay2D.au3>
    #include <_ArraySort_2ary.au3>
    #Include <Misc.au3>

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

    Dim $Fehler1, $Fehler2, $Fehler3, $Quellordner, $Zielordner, $zielordner_korrekt, $quellordner_korrekt, $pfad_bilder_korrekt, $klappliste, $beenden2, $GUI2, $array_quelle, $pfad, $Pfad_ohne, $listview2, $listview, $fehler_zu
    $dll = DllOpen("user32.dll")

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

    ;Tastenkombination damit alle Dateien markiert werden
    HotKeySet("^y", "_markieren")

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

    ;Programm-Icon von der kompilierten exe
    #Compiler_Icon =Icon.ico

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

    ;Standardpfad hier auswählen
    $Standard_Quelle = "C:\Test\" ;Quellpfad
    $Standard_Ziel = "C:\Ziel\" ;Zielpfad
    $Standard_Groesse = "D:\Test\" ;Quellpfad für den Größenvergleich der zu bestellenden Fotos

    ;Klappliste für das Umbenennen der Dateien
    $Klapp1 = "XY" ;1. Eintrag
    $Klapp2 = "TZ" ;2. Eintrag
    $KlappS = $Klapp2 ;Standard-Eintrag

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

    ;anzuzeigendes Bild, wenn mehr als eine Datei ausgewählt wurde
    $keinBild = "C:\WINDOWS\Web\Wallpaper\düne.jpg"

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

    ;------------------------------------------------------------------------------------------------
    ;Erkennung der Fotos und Videos
    $foto_anfang = "IMG" ;Quellfotos "IMG"
    $foto_typ = "JPG" ;Quellfotos Typ "JPG"
    $video_anfang = "MVI" ;Quellvideos "MVI"
    $video_typ1 = "AVI" ;Quellvideos Typ "AVI"
    $video_typ2 = "THM" ;Quellvideos Typ "THM"

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

    ;------------------------------------------------------------------------------------------------

    ;------------------------
    ;GUI
    ;------------------------
    ;GUI erzeugen
    $GUI1 = GUICreate("Foto - Video - Tool", 460, 900, 0, 0)

    ;Buttons
    $Quelle = GUICtrlCreateButton("Quellordner auswählen", 250, 280, 50, 50, $BS_ICON)
    $Ziel = GUICtrlCreateButton("Zielordner auswählen", 250, 360, 50, 50, $BS_ICON)
    $kopieren = GUICtrlCreateButton("Kopieren", 250, 440, 50, 50, $BS_ICON)
    $umbenennen = GUICtrlCreateButton("umbenennen", 250, 520, 50, 50, $BS_ICON)
    $datum = GUICtrlCreateButton("Datum zurücksetzen", 250, 680, 50, 50, $BS_ICON)
    $beenden = GUICtrlCreateButton("Beenden", 250, 840, 50, 50, $BS_ICON)

    ;Beschriftung erstellen (Text, Rahmen, Farbe)
    GUICtrlCreateLabel(" Initialien des Fotografen", 310, 220, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xB0E0E6)
    GUICtrlCreateLabel(" Quellordner auswählen", 310, 295, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xD3D3D3)
    GUICtrlCreateLabel(" Zielordner auswählen", 310, 375, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xD3D3D3)
    GUICtrlCreateLabel(" Kopieren", 310, 455, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0x9ACD32)
    GUICtrlCreateLabel(" umbenennen", 310, 535, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xFAFAD2)
    GUICtrlCreateLabel(" Datum zurücksetzen", 310, 695, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xFAFAD2)
    GUICtrlCreateLabel(" Beenden", 310, 855, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xFFDAB9)

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


    ;Beschriftung
    GUICtrlCreateLabel(" aktueller Quellpfad:", 10, 10, 440, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlCreateLabel(" aktueller Zielpfad:", 10, 30, 440, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFC8D)

    ;Liste mit Dateien
    $listview = GUICtrlCreateListView("Bild|Datum", 10, 60, 234, 821, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_SORTDESCENDING));$LVS_SORTDESCENDING ;$LVS_SORTASCENDING
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

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

    ;Spaltenbreite für die beiden Spalten festlegen
    _GUICtrlListViewSetColumnWidth($listview, 0, 100)
    _GUICtrlListViewSetColumnWidth($listview, 1, 130)

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

    ;Klappliste für das Umbenennen der Dateien
    $Klappen = GUICtrlCreateCombo($Klapp1, 250, 220, 50); erster Eintrag
    GUICtrlSetData(-1, $Klapp2, $KlappS) ;weitere Einträge, getrennt durch | , zweiter Eintrag ist der Standard

    ;------------------------
    ;sonstiges
    ;------------------------
    ;Quellordner öffnen
    _Quellordner()
    _Quellordner2()

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

    ;Bildvorschau erstellen
    $pic = GUICtrlCreatePic($keinBild, 250, 60, 200, 150) ;$Quellordner & $FileList[1]

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

    ;GUI anzeigen
    GUISetState(@SW_SHOW, $GUI1)

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

    ;------------------------
    ;Funktionen
    ;------------------------

    ;Quellordner auswählen
    Func _Quellordner()
    _GUICTRLListViewDeleteAllItems($listview)
    $Quellordner_ohne = FileSelectFolder("Bitte den Quellordner auswählen", "", "", $Standard_Quelle)
    $Quellordner = $Quellordner_ohne & "\"
    If ($Quellordner_ohne = "" Or StringInStr($Quellordner_ohne, ":") = 2) Then
    GUICtrlCreateLabel(" ", 110, 10, 330, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlSetData (-1, $Quellordner_ohne)
    Else
    MsgBox(16,"Ungültiger Quellordner", "Bitte wählen Sie einen korrekten Quellordner aus")
    _Quellordner()
    EndIf
    EndFunc ;==>_Quellordner


    Func _Quellordner2()
    ;Größe des Arrays anhand von vorhandenen Dateien einstellen
    $anzahl = DirGetSize($Quellordner, 3)
    Dim $array_quelle[$anzahl[1] + 1][2]

    ;Array ($Filelist) erzeugen (nur Dateinamen)
    Dim $array_quelle = 0
    Dim $array_quelle[$anzahl[1] + 1][2]
    $FileList = _FileListToArray($Quellordner, "*", 1)

    ;Array ($array_quelle) erzeugen (Dateinamen von $Filelist und Datum)
    For $i = 1 To UBound($FileList) - 1
    $array_quelle[$i][0] = $FileList[$i]
    $time2 = FileGetTime($Quellordner & $FileList[$i], 0)
    $array_quelle[$i][1] = $time2[0] & $time2[1] & $time2[2] & $time2[3] & $time2[4] & $time2[5]
    Next

    ;Array sortieren nach Datum
    _ArraySort_2ary($array_quelle,1,1)
    ;_ArraySort_2ary($array_quelle,1,0) ;(wenn andersrum sortieren, dann deaktivieren)
    ;_ArrayDisplay2D($array_quelle,"$array_quelle")

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

    ;Einträge für ListView vornehmen (Datei und Datum)
    For $i = 1 To UBound($FileList) - 1
    $time2 = FileGetTime($Quellordner & $FileList[$i], 0)
    $video2 = $time2[0] & "." & $time2[1] & "." & $time2[2] & " " & $time2[3] & "." & $time2[4] & "." & $time2[5]
    GUICtrlCreateListViewItem($FileList[$i] & "|" & $video2, $listview)
    Next

    ;Einträge vom ListView sortieren
    Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($listview) ];$B_DESCENDING
    _GUICtrlListViewSort($listview, $B_DESCENDING, 1); $B_DESCENDING
    _GUICtrlListViewSort($listview, $B_DESCENDING, 1); $B_DESCENDING (wenn andersrum sortieren, dann deaktivieren)

    EndFunc ;==>_Quellordner2

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

    ;Zielordner auswählen
    Func _Zielordner()
    $Zielordner_ohne = FileSelectFolder("Bitte den Zielordner auswählen", "", 1, $Standard_Ziel)
    $Zielordner = $Zielordner_ohne & "\"
    If ($Zielordner_ohne = "" Or StringInStr($Zielordner_ohne, ":") = 2) Then
    GUICtrlCreateLabel(" ", 110, 30, 330, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFC8D)
    GUICtrlSetData (-1, $Zielordner_ohne)
    Else
    MsgBox(16,"Ungültiger Zielordner", "Bitte wählen Sie einen korrekten Zielordner aus")
    _Zielordner()
    EndIf
    EndFunc ;==>_Zielordner

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

    ;umbenennen
    ;Teil1 Prüfung, Fotofiles umbenennen
    Func _Foto()
    $Fehler1 = 0
    Dim $FileList1 = 0
    $FileList1 = _FileListToArray($Zielordner, $foto_anfang & "_*." & $foto_typ, 1)
    If @error = 4 Then
    $Fehler1 = 1
    Return
    Else
    SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
    EndIf

    For $i = 1 To UBound($FileList1) - 1
    $Foto1 = StringReplace($FileList1[$i], $foto_anfang, $klappliste)
    FileMove($Zielordner & $FileList1[$i], $Zielordner & $Foto1)
    Next
    Splashoff()
    EndFunc ;==>_Foto


    ;Teil2 Prüfung, Videofiles umbenennen
    Func _Video1()
    $Fehler2 = 0
    Dim $FileList2 = 0
    $FileList2 = _FileListToArray($Zielordner, $video_anfang & "_*." & $video_typ1, 1)
    If @error = 4 Then
    $Fehler2 = 1
    Return
    Else
    SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
    EndIf

    For $i = 1 To UBound($FileList2) - 1
    $time2 = FileGetTime($Zielordner & $FileList2[$i], 0)
    $video2 = $time2[0] & "." & $time2[1] & "." & $time2[2] & " " & $time2[3] & "." & $time2[4] & "." & $time2[5] & "_" & $klappliste
    FileMove($Zielordner & $FileList2[$i], $Zielordner & $video2 & "." & $video_typ1)
    Next
    Splashoff()
    EndFunc ;==>_Video1


    ;Teil3 Prüfung, Videofiles umbenennen
    Func _Video2()
    $Fehler3 = 0
    Dim $FileList3 = 0
    $FileList3 = _FileListToArray($Zielordner, $video_anfang & "_*." & $video_typ2, 1)
    If @error = 4 Then
    $Fehler3 = 1
    Return
    Else
    SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
    EndIf

    For $i = 1 To UBound($FileList3) - 1
    $time3 = FileGetTime($Zielordner & $FileList3[$i], 0)
    $video3 = $time3[0] & "." & $time3[1] & "." & $time3[2] & " " & $time3[3] & "." & $time3[4] & "." & $time3[5] & "_" & $klappliste
    FileMove($Zielordner & $FileList3[$i], $Zielordner & $video3 & "." & $video_typ2)
    Next
    Splashoff()
    EndFunc ;==>_Video2


    ;Teil4 Prüfung, ob überhaupt Dateien existieren
    Func _Pruefung()
    SplashOff()
    If ($Fehler1 + $Fehler2 + $Fehler3 = 3) Then
    MsgBox(64, "Keine Dateien vorhanden", "Bitte überprüfen")
    Else
    EndIf
    EndFunc ;==>_Pruefung

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

    ;Prüfung, ob der Zielordner korrekt ist
    Func _zielordner_korrekt()
    If $Zielordner = "\" OR $Zielordner = "" Then
    $zielordner_korrekt = 0
    _zielordner()
    If $Zielordner = "\" OR $Zielordner = "" Then
    MsgBox(64,"Kein Zielordner","Bitte wählen Sie zuerst einen Zielordner aus")
    $zielordner_korrekt = 0
    Else
    $zielordner_korrekt = 1
    EndIf
    Else
    $zielordner_korrekt = 1
    EndIf
    EndFunc ;==>_zielordner_korrekt

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

    ;Prüfung, ob der Quellordner korrekt ist
    Func _quellordner_korrekt()
    If $Quellordner = "\" OR $Quellordner = "" Then
    $quellordner_korrekt = 0
    _quellordner()
    _quellordner2()
    If $Quellordner = "\" OR $Quellordner = "" Then
    MsgBox(64,"Kein Quellordner","Bitte wählen Sie zuerst einen Quellordner aus")
    $quellordner_korrekt = 0
    Else
    $quellordner_korrekt = 1
    EndIf
    Else
    $quellordner_korrekt = 1
    EndIf
    EndFunc ;==>_quellordner_korrekt

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

    ;Beim Drücken von Strg+y werden alle Bilder markiert
    Func _markieren()
    For $i = 1 To _GUICtrlListViewGetItemCount($listview)
    _GUICtrlListViewSetItemSelState($listview, $i-1, 1 )
    Next
    EndFunc ;==>_markieren()

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

    ;------------------------
    ;Drücken eines Buttons
    ;------------------------
    While 1
    $msg = GUIGetMsg()
    Select
    ;------------------------------------------------------------ Button Quellordner auswählen----------------------------------------
    Case $msg = $Quelle
    _Quellordner()
    _Quellordner2()

    ;------------------------------------------------------------ Button Zielordner auswählen ----------------------------------------
    Case $msg = $Ziel
    _Zielordner()

    ;------------------------------------------------------------ Button Kopieren ----------------------------------------
    Case $msg = $kopieren
    _quellordner_korrekt()
    If $quellordner_korrekt = 1 Then
    If _GUICtrlListViewGetSelectedCount($listview) = 0 Then
    MsgBox(64,"Keine Dateien markiert", "Bitte markieren Sie die zu kopierenden Dateien")
    Else

    _zielordner_korrekt()
    If $zielordner_korrekt = 1 Then
    Local $test = _GUICtrlListViewGetSelectedIndices($listview, 1)
    If (IsArray($test)) Then
    Local $i
    ;_ArrayDisplay($test,"$test")
    ;_ArrayDisplay2D($array_quelle,"$array_quelle")
    SplashTextOn("Fotos und Videos werden auf die Festplatte kopiert", "Vorgang läuft - Bitte warten", 350, 30)
    For $i = 1 To $test[0]
    FileCopy($Quellordner & $array_quelle[$test[$i]][0], $Zielordner, 1)
    ;FileCopy($Quellordner & $array_quelle[$test[$i]+1][0], $Zielordner, 1) ;(wenn andersrum sortieren, dann deaktivieren)
    Next
    SplashOff()
    EndIf
    EndIf
    EndIf
    EndIf

    ;------------------------------------------------------------ Button Umbenennen ----------------------------------------
    Case $msg = $umbenennen
    $klappliste = GUICtrlRead($Klappen)
    _zielordner_korrekt()
    If $zielordner_korrekt = 1 Then
    _Foto()
    _Video1()
    _Video2()
    _Pruefung()
    EndIf

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

    ;------------------------------------------------------------ Button Beenden ----------------------------------------
    Case $msg = $beenden
    Exit

    Case $msg = (_IsPressed("26", $dll) OR _IsPressed("28", $dll))
    GUICtrlSetImage($pic, $Quellordner & _GUICtrlListViewGetItemText($listview, _GUICtrlListViewGetSelectedIndices($listview), 0))

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


    ;~ ;------------------------------------------------------------ Bildvorschau anzeigen ----------------------------------------
    Case $msg = $GUI_EVENT_PRIMARYDOWN
    $pos = GUIGetCursorInfo()
    If _GUICtrlListViewGetSelectedCount($listview) > 1 Then
    GUICtrlSetImage($pic, $keinBild)
    Else
    If ($pos[4] == $listview) Then
    GUICtrlSetImage($pic, $Quellordner & _GUICtrlListViewGetItemText($listview, _GUICtrlListViewGetSelectedIndices($listview), 0))
    Else
    EndIf
    EndIf

    ;------------------------------------------------------------ auf das "x" klicken ----------------------------------------
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Hallo!

    Ich habe es mit Bildern von 1MB - 12MB getestet, bei mir Flackert nichts. Wann tritt das Flackern den auf?

  • Hm,
    habs auch nochmal probiert. Es scheint als läge es an den Bildern, mit denen ich es probiert habe.
    Mit anderen auch größeren Bildern geht es.
    Wenns so bleibt könnte ich damit leben :D

    Was vielleicht sinnvoll wäre, wäre folgendes.

    Es wird erkannt, dass eine Taste hoch oder runter gedrückt wird.
    Nun wird das neue Bild angezeigt.
    Nun soll der Befehl, der das Bild anzeigt erst wieder "reagieren", wenn sich die Position, also das markierte Bild ändert.
    Geht dies?
    Dann dürfte es definitiv nicht mehr flackern.
    Nur wie machen???

    EDIT: Auf deine Frage
    Es flackert, wenn ich das bild angeklickt habe.
    Denke dies ist so, weil er den Befehl ja ständig wiederholt

    • Offizieller Beitrag

    Fehler gefunden!

    Du kannst nicht das Ergebnis von GuiCtrlMsg mit _IsPressed vergleichen.

    Probier mal ob es immer noch Flackert!

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <GuiList.au3>
    #include <GUIConstants.au3>
    #Include <File.au3>
    #Include <Array.au3>
    #include <_ArrayDisplay2D.au3>
    #include <_ArraySort_2ary.au3>
    #Include <Misc.au3>

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

    Dim $Fehler1, $Fehler2, $Fehler3, $Quellordner, $Zielordner, $zielordner_korrekt, $quellordner_korrekt, $pfad_bilder_korrekt, $klappliste, $beenden2, $GUI2, $array_quelle, $pfad, $Pfad_ohne, $listview2, $listview, $fehler_zu
    $dll = DllOpen("user32.dll")

    ;Tastenkombination damit alle Dateien markiert werden
    HotKeySet("^y", "_markieren")

    ;Programm-Icon von der kompilierten exe
    #Compiler_Icon =Icon.ico

    ;Standardpfad hier auswählen
    $Standard_Quelle = "C:\Test\" ;Quellpfad
    $Standard_Ziel = "C:\Ziel\" ;Zielpfad
    $Standard_Groesse = "D:\Test\" ;Quellpfad für den Größenvergleich der zu bestellenden Fotos

    ;Klappliste für das Umbenennen der Dateien
    $Klapp1 = "XY" ;1. Eintrag
    $Klapp2 = "TZ" ;2. Eintrag
    $KlappS = $Klapp2 ;Standard-Eintrag



    ;anzuzeigendes Bild, wenn mehr als eine Datei ausgewählt wurde
    $keinBild = "C:\WINDOWS\Web\Wallpaper\düne.jpg"

    ;------------------------------------------------------------------------------------------------
    ;Erkennung der Fotos und Videos
    $foto_anfang = "IMG" ;Quellfotos "IMG"
    $foto_typ = "JPG" ;Quellfotos Typ "JPG"
    $video_anfang = "MVI" ;Quellvideos "MVI"
    $video_typ1 = "AVI" ;Quellvideos Typ "AVI"
    $video_typ2 = "THM" ;Quellvideos Typ "THM"

    ;------------------------------------------------------------------------------------------------

    ;------------------------
    ;GUI
    ;------------------------
    ;GUI erzeugen
    $GUI1 = GUICreate("Foto - Video - Tool", 460, 900, 0, 0)

    ;Buttons
    $Quelle = GUICtrlCreateButton("Quellordner auswählen", 250, 280, 50, 50, $BS_ICON)
    $Ziel = GUICtrlCreateButton("Zielordner auswählen", 250, 360, 50, 50, $BS_ICON)
    $kopieren = GUICtrlCreateButton("Kopieren", 250, 440, 50, 50, $BS_ICON)
    $umbenennen = GUICtrlCreateButton("umbenennen", 250, 520, 50, 50, $BS_ICON)
    $datum = GUICtrlCreateButton("Datum zurücksetzen", 250, 680, 50, 50, $BS_ICON)
    $beenden = GUICtrlCreateButton("Beenden", 250, 840, 50, 50, $BS_ICON)

    ;Beschriftung erstellen (Text, Rahmen, Farbe)
    GUICtrlCreateLabel(" Initialien des Fotografen", 310, 220, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xB0E0E6)
    GUICtrlCreateLabel(" Quellordner auswählen", 310, 295, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xD3D3D3)
    GUICtrlCreateLabel(" Zielordner auswählen", 310, 375, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xD3D3D3)
    GUICtrlCreateLabel(" Kopieren", 310, 455, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0x9ACD32)
    GUICtrlCreateLabel(" umbenennen", 310, 535, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xFAFAD2)
    GUICtrlCreateLabel(" Datum zurücksetzen", 310, 695, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xFAFAD2)
    GUICtrlCreateLabel(" Beenden", 310, 855, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xFFDAB9)


    ;Beschriftung
    GUICtrlCreateLabel(" aktueller Quellpfad:", 10, 10, 440, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlCreateLabel(" aktueller Zielpfad:", 10, 30, 440, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFC8D)

    ;Liste mit Dateien
    $listview = GUICtrlCreateListView("Bild|Datum", 10, 60, 234, 821, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_SORTDESCENDING));$LVS_SORTDESCENDING ;$LVS_SORTASCENDING
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

    ;Spaltenbreite für die beiden Spalten festlegen
    _GUICtrlListViewSetColumnWidth($listview, 0, 100)
    _GUICtrlListViewSetColumnWidth($listview, 1, 130)

    ;Klappliste für das Umbenennen der Dateien
    $Klappen = GUICtrlCreateCombo($Klapp1, 250, 220, 50); erster Eintrag
    GUICtrlSetData(-1, $Klapp2, $KlappS) ;weitere Einträge, getrennt durch | , zweiter Eintrag ist der Standard

    ;------------------------
    ;sonstiges
    ;------------------------
    ;Quellordner öffnen
    _Quellordner()
    _Quellordner2()

    ;Bildvorschau erstellen
    $pic = GUICtrlCreatePic($keinBild, 250, 60, 200, 150) ;$Quellordner & $FileList[1]

    ;GUI anzeigen
    GUISetState(@SW_SHOW, $GUI1)

    ;------------------------
    ;Funktionen
    ;------------------------

    ;Quellordner auswählen
    Func _Quellordner()
    _GUICTRLListViewDeleteAllItems($listview)
    $Quellordner_ohne = FileSelectFolder("Bitte den Quellordner auswählen", "", "", $Standard_Quelle)
    $Quellordner = $Quellordner_ohne & "\"
    If ($Quellordner_ohne = "" Or StringInStr($Quellordner_ohne, ":") = 2) Then
    GUICtrlCreateLabel(" ", 110, 10, 330, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlSetData (-1, $Quellordner_ohne)
    Else
    MsgBox(16,"Ungültiger Quellordner", "Bitte wählen Sie einen korrekten Quellordner aus")
    _Quellordner()
    EndIf
    EndFunc ;==>_Quellordner


    Func _Quellordner2()
    ;Größe des Arrays anhand von vorhandenen Dateien einstellen
    $anzahl = DirGetSize($Quellordner, 3)
    Dim $array_quelle[$anzahl[1] + 1][2]

    ;Array ($Filelist) erzeugen (nur Dateinamen)
    Dim $array_quelle = 0
    Dim $array_quelle[$anzahl[1] + 1][2]
    $FileList = _FileListToArray($Quellordner, "*", 1)

    ;Array ($array_quelle) erzeugen (Dateinamen von $Filelist und Datum)
    For $i = 1 To UBound($FileList) - 1
    $array_quelle[$i][0] = $FileList[$i]
    $time2 = FileGetTime($Quellordner & $FileList[$i], 0)
    $array_quelle[$i][1] = $time2[0] & $time2[1] & $time2[2] & $time2[3] & $time2[4] & $time2[5]
    Next

    ;Array sortieren nach Datum
    _ArraySort_2ary($array_quelle,1,1)
    ;_ArraySort_2ary($array_quelle,1,0) ;(wenn andersrum sortieren, dann deaktivieren)
    ;_ArrayDisplay2D($array_quelle,"$array_quelle")


    ;Einträge für ListView vornehmen (Datei und Datum)
    For $i = 1 To UBound($FileList) - 1
    $time2 = FileGetTime($Quellordner & $FileList[$i], 0)
    $video2 = $time2[0] & "." & $time2[1] & "." & $time2[2] & " " & $time2[3] & "." & $time2[4] & "." & $time2[5]
    GUICtrlCreateListViewItem($FileList[$i] & "|" & $video2, $listview)
    Next

    ;Einträge vom ListView sortieren
    Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($listview) ];$B_DESCENDING
    _GUICtrlListViewSort($listview, $B_DESCENDING, 1); $B_DESCENDING
    _GUICtrlListViewSort($listview, $B_DESCENDING, 1); $B_DESCENDING (wenn andersrum sortieren, dann deaktivieren)

    EndFunc ;==>_Quellordner2


    ;Zielordner auswählen
    Func _Zielordner()
    $Zielordner_ohne = FileSelectFolder("Bitte den Zielordner auswählen", "", 1, $Standard_Ziel)
    $Zielordner = $Zielordner_ohne & "\"
    If ($Zielordner_ohne = "" Or StringInStr($Zielordner_ohne, ":") = 2) Then
    GUICtrlCreateLabel(" ", 110, 30, 330, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFC8D)
    GUICtrlSetData (-1, $Zielordner_ohne)
    Else
    MsgBox(16,"Ungültiger Zielordner", "Bitte wählen Sie einen korrekten Zielordner aus")
    _Zielordner()
    EndIf
    EndFunc ;==>_Zielordner


    ;umbenennen
    ;Teil1 Prüfung, Fotofiles umbenennen
    Func _Foto()
    $Fehler1 = 0
    Dim $FileList1 = 0
    $FileList1 = _FileListToArray($Zielordner, $foto_anfang & "_*." & $foto_typ, 1)
    If @error = 4 Then
    $Fehler1 = 1
    Return
    Else
    SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
    EndIf

    For $i = 1 To UBound($FileList1) - 1
    $Foto1 = StringReplace($FileList1[$i], $foto_anfang, $klappliste)
    FileMove($Zielordner & $FileList1[$i], $Zielordner & $Foto1)
    Next
    Splashoff()
    EndFunc ;==>_Foto


    ;Teil2 Prüfung, Videofiles umbenennen
    Func _Video1()
    $Fehler2 = 0
    Dim $FileList2 = 0
    $FileList2 = _FileListToArray($Zielordner, $video_anfang & "_*." & $video_typ1, 1)
    If @error = 4 Then
    $Fehler2 = 1
    Return
    Else
    SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
    EndIf

    For $i = 1 To UBound($FileList2) - 1
    $time2 = FileGetTime($Zielordner & $FileList2[$i], 0)
    $video2 = $time2[0] & "." & $time2[1] & "." & $time2[2] & " " & $time2[3] & "." & $time2[4] & "." & $time2[5] & "_" & $klappliste
    FileMove($Zielordner & $FileList2[$i], $Zielordner & $video2 & "." & $video_typ1)
    Next
    Splashoff()
    EndFunc ;==>_Video1


    ;Teil3 Prüfung, Videofiles umbenennen
    Func _Video2()
    $Fehler3 = 0
    Dim $FileList3 = 0
    $FileList3 = _FileListToArray($Zielordner, $video_anfang & "_*." & $video_typ2, 1)
    If @error = 4 Then
    $Fehler3 = 1
    Return
    Else
    SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
    EndIf

    For $i = 1 To UBound($FileList3) - 1
    $time3 = FileGetTime($Zielordner & $FileList3[$i], 0)
    $video3 = $time3[0] & "." & $time3[1] & "." & $time3[2] & " " & $time3[3] & "." & $time3[4] & "." & $time3[5] & "_" & $klappliste
    FileMove($Zielordner & $FileList3[$i], $Zielordner & $video3 & "." & $video_typ2)
    Next
    Splashoff()
    EndFunc ;==>_Video2


    ;Teil4 Prüfung, ob überhaupt Dateien existieren
    Func _Pruefung()
    SplashOff()
    If ($Fehler1 + $Fehler2 + $Fehler3 = 3) Then
    MsgBox(64, "Keine Dateien vorhanden", "Bitte überprüfen")
    Else
    EndIf
    EndFunc ;==>_Pruefung

    ;Prüfung, ob der Zielordner korrekt ist
    Func _zielordner_korrekt()
    If $Zielordner = "\" OR $Zielordner = "" Then
    $zielordner_korrekt = 0
    _zielordner()
    If $Zielordner = "\" OR $Zielordner = "" Then
    MsgBox(64,"Kein Zielordner","Bitte wählen Sie zuerst einen Zielordner aus")
    $zielordner_korrekt = 0
    Else
    $zielordner_korrekt = 1
    EndIf
    Else
    $zielordner_korrekt = 1
    EndIf
    EndFunc ;==>_zielordner_korrekt


    ;Prüfung, ob der Quellordner korrekt ist
    Func _quellordner_korrekt()
    If $Quellordner = "\" OR $Quellordner = "" Then
    $quellordner_korrekt = 0
    _quellordner()
    _quellordner2()
    If $Quellordner = "\" OR $Quellordner = "" Then
    MsgBox(64,"Kein Quellordner","Bitte wählen Sie zuerst einen Quellordner aus")
    $quellordner_korrekt = 0
    Else
    $quellordner_korrekt = 1
    EndIf
    Else
    $quellordner_korrekt = 1
    EndIf
    EndFunc ;==>_quellordner_korrekt

    ;Beim Drücken von Strg+y werden alle Bilder markiert
    Func _markieren()
    For $i = 1 To _GUICtrlListViewGetItemCount($listview)
    _GUICtrlListViewSetItemSelState($listview, $i-1, 1 )
    Next
    EndFunc ;==>_markieren()


    ;------------------------
    ;Drücken eines Buttons
    ;------------------------
    While 1
    $msg = GUIGetMsg()
    Select
    ;------------------------------------------------------------ Button Quellordner auswählen----------------------------------------
    Case $msg = $Quelle
    _Quellordner()
    _Quellordner2()

    ;------------------------------------------------------------ Button Zielordner auswählen ----------------------------------------
    Case $msg = $Ziel
    _Zielordner()

    ;------------------------------------------------------------ Button Kopieren ----------------------------------------
    Case $msg = $kopieren
    _quellordner_korrekt()
    If $quellordner_korrekt = 1 Then
    If _GUICtrlListViewGetSelectedCount($listview) = 0 Then
    MsgBox(64,"Keine Dateien markiert", "Bitte markieren Sie die zu kopierenden Dateien")
    Else

    _zielordner_korrekt()
    If $zielordner_korrekt = 1 Then
    Local $test = _GUICtrlListViewGetSelectedIndices($listview, 1)
    If (IsArray($test)) Then
    Local $i
    ;_ArrayDisplay($test,"$test")
    ;_ArrayDisplay2D($array_quelle,"$array_quelle")
    SplashTextOn("Fotos und Videos werden auf die Festplatte kopiert", "Vorgang läuft - Bitte warten", 350, 30)
    For $i = 1 To $test[0]
    FileCopy($Quellordner & $array_quelle[$test[$i]][0], $Zielordner, 1)
    ;FileCopy($Quellordner & $array_quelle[$test[$i]+1][0], $Zielordner, 1) ;(wenn andersrum sortieren, dann deaktivieren)
    Next
    SplashOff()
    EndIf
    EndIf
    EndIf
    EndIf

    ;------------------------------------------------------------ Button Umbenennen ----------------------------------------
    Case $msg = $umbenennen
    $klappliste = GUICtrlRead($Klappen)
    _zielordner_korrekt()
    If $zielordner_korrekt = 1 Then
    _Foto()
    _Video1()
    _Video2()
    _Pruefung()
    EndIf


    ;------------------------------------------------------------ Button Beenden ----------------------------------------
    Case $msg = $beenden
    Exit

    ;~ ;------------------------------------------------------------ Bildvorschau anzeigen ----------------------------------------
    Case $msg = $GUI_EVENT_PRIMARYDOWN
    $pos = GUIGetCursorInfo()
    If _GUICtrlListViewGetSelectedCount($listview) > 1 Then
    GUICtrlSetImage($pic, $keinBild)
    Else
    If ($pos[4] == $listview) Then
    GUICtrlSetImage($pic, $Quellordner & _GUICtrlListViewGetItemText($listview, _GUICtrlListViewGetSelectedIndices($listview), 0))
    Else
    EndIf
    EndIf

    ;------------------------------------------------------------ auf das "x" klicken ----------------------------------------
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect

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

    If _IsPressed("26", $dll) OR _IsPressed("28", $dll) Then
    GUICtrlSetImage($pic, $Quellordner & _GUICtrlListViewGetItemText($listview, _GUICtrlListViewGetSelectedIndices($listview), 0))
    EndIf

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

    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Danke, dass du noch weiter drangeblieben bist.
    Habe eben ne Lösung gefunden
    Hab ich von th.meger übernommen
    hier auf Änderungen in ListView reagieren

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <GuiList.au3>
    #include <GUIConstants.au3>
    #Include <File.au3>
    #Include <Array.au3>
    #include <_ArrayDisplay2D.au3>
    #include <_ArraySort_2ary.au3>
    #Include <Misc.au3>

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

    Dim $Fehler1, $Fehler2, $Fehler3, $Quellordner, $Zielordner, $zielordner_korrekt, $quellordner_korrekt, $pfad_bilder_korrekt, $klappliste, $beenden2, $GUI2, $array_quelle, $pfad, $Pfad_ohne, $listview2, $listview, $fehler_zu
    $dll = DllOpen("user32.dll")

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

    ;Tastenkombination damit alle Dateien markiert werden
    HotKeySet("^y", "_markieren")

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

    ;Programm-Icon von der kompilierten exe
    #Compiler_Icon =Icon.ico

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

    ;Standardpfad hier auswählen
    $Standard_Quelle = "C:\Test\" ;Quellpfad
    $Standard_Ziel = "C:\Ziel\" ;Zielpfad
    $Standard_Groesse = "D:\Test\" ;Quellpfad für den Größenvergleich der zu bestellenden Fotos

    ;Klappliste für das Umbenennen der Dateien
    $Klapp1 = "XY" ;1. Eintrag
    $Klapp2 = "TZ" ;2. Eintrag
    $KlappS = $Klapp2 ;Standard-Eintrag

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

    ;anzuzeigendes Bild, wenn mehr als eine Datei ausgewählt wurde
    $keinBild = "C:\WINDOWS\Web\Wallpaper\düne.jpg"

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

    ;------------------------------------------------------------------------------------------------
    ;Erkennung der Fotos und Videos
    $foto_anfang = "IMG" ;Quellfotos "IMG"
    $foto_typ = "JPG" ;Quellfotos Typ "JPG"
    $video_anfang = "MVI" ;Quellvideos "MVI"
    $video_typ1 = "AVI" ;Quellvideos Typ "AVI"
    $video_typ2 = "THM" ;Quellvideos Typ "THM"

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

    ;------------------------------------------------------------------------------------------------

    ;------------------------
    ;GUI
    ;------------------------
    ;GUI erzeugen
    $GUI1 = GUICreate("Foto - Video - Tool", 460, 900, 0, 0)

    ;Buttons
    $Quelle = GUICtrlCreateButton("Quellordner auswählen", 250, 280, 50, 50, $BS_ICON)
    $Ziel = GUICtrlCreateButton("Zielordner auswählen", 250, 360, 50, 50, $BS_ICON)
    $kopieren = GUICtrlCreateButton("Kopieren", 250, 440, 50, 50, $BS_ICON)
    $umbenennen = GUICtrlCreateButton("umbenennen", 250, 520, 50, 50, $BS_ICON)
    $datum = GUICtrlCreateButton("Datum zurücksetzen", 250, 680, 50, 50, $BS_ICON)
    $beenden = GUICtrlCreateButton("Beenden", 250, 840, 50, 50, $BS_ICON)

    ;Beschriftung erstellen (Text, Rahmen, Farbe)
    GUICtrlCreateLabel(" Initialien des Fotografen", 310, 220, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xB0E0E6)
    GUICtrlCreateLabel(" Quellordner auswählen", 310, 295, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xD3D3D3)
    GUICtrlCreateLabel(" Zielordner auswählen", 310, 375, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xD3D3D3)
    GUICtrlCreateLabel(" Kopieren", 310, 455, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0x9ACD32)
    GUICtrlCreateLabel(" umbenennen", 310, 535, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xFAFAD2)
    GUICtrlCreateLabel(" Datum zurücksetzen", 310, 695, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xFAFAD2)
    GUICtrlCreateLabel(" Beenden", 310, 855, -1, -1, bitOR($WS_BORDER, $SS_CENTERIMAGE))
    GUICtrlSetBkColor(-1, 0xFFDAB9)

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


    ;Beschriftung
    GUICtrlCreateLabel(" aktueller Quellpfad:", 10, 10, 440, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlCreateLabel(" aktueller Zielpfad:", 10, 30, 440, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFC8D)

    ;Liste mit Dateien
    $listview = GUICtrlCreateListView("Bild|Datum", 10, 60, 234, 821, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_SORTDESCENDING));$LVS_SORTDESCENDING ;$LVS_SORTASCENDING
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

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

    ;Spaltenbreite für die beiden Spalten festlegen
    _GUICtrlListViewSetColumnWidth($listview, 0, 100)
    _GUICtrlListViewSetColumnWidth($listview, 1, 130)

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

    ;Klappliste für das Umbenennen der Dateien
    $Klappen = GUICtrlCreateCombo($Klapp1, 250, 220, 50); erster Eintrag
    GUICtrlSetData(-1, $Klapp2, $KlappS) ;weitere Einträge, getrennt durch | , zweiter Eintrag ist der Standard

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

    ;Farbige Trennstriche
    GUICtrlCreateLabel("", 250, 260, 200, 5)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlCreateLabel("", 250, 423, 200, 5)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlCreateLabel("", 250, 503, 200, 5)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlCreateLabel("", 250, 743, 200, 5)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlCreateLabel("", 250, 823, 200, 5)
    GUICtrlSetBkColor(-1, 0xFFD700)

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



    ;------------------------
    ;sonstiges
    ;------------------------
    ;Quellordner öffnen
    _Quellordner()
    _Quellordner2()

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

    ;Bildvorschau erstellen
    $pic = GUICtrlCreatePic($keinBild, 250, 60, 200, 150) ;$Quellordner & $FileList[1]

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

    ;GUI anzeigen
    GUISetState(@SW_SHOW, $GUI1)

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

    ;------------------------
    ;Funktionen
    ;------------------------

    ;Quellordner auswählen
    Func _Quellordner()
    _GUICTRLListViewDeleteAllItems($listview)
    $Quellordner_ohne = FileSelectFolder("Bitte den Quellordner auswählen", "", "", $Standard_Quelle)
    $Quellordner = $Quellordner_ohne & "\"
    If ($Quellordner_ohne = "" Or StringInStr($Quellordner_ohne, ":") = 2) Then
    GUICtrlCreateLabel(" ", 110, 10, 330, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlSetData (-1, $Quellordner_ohne)
    Else
    MsgBox(16,"Ungültiger Quellordner", "Bitte wählen Sie einen korrekten Quellordner aus")
    _Quellordner()
    EndIf
    EndFunc ;==>_Quellordner


    Func _Quellordner2()
    ;Größe des Arrays anhand von vorhandenen Dateien einstellen
    $anzahl = DirGetSize($Quellordner, 3)
    Dim $array_quelle[$anzahl[1] + 1][2]

    ;Array ($Filelist) erzeugen (nur Dateinamen)
    Dim $array_quelle = 0
    Dim $array_quelle[$anzahl[1] + 1][2]
    $FileList = _FileListToArray($Quellordner, "*", 1)

    ;Array ($array_quelle) erzeugen (Dateinamen von $Filelist und Datum)
    For $i = 1 To UBound($FileList) - 1
    $array_quelle[$i][0] = $FileList[$i]
    $time2 = FileGetTime($Quellordner & $FileList[$i], 0)
    $array_quelle[$i][1] = $time2[0] & $time2[1] & $time2[2] & $time2[3] & $time2[4] & $time2[5]
    Next

    ;Array sortieren nach Datum
    _ArraySort_2ary($array_quelle,1,1)
    ;_ArraySort_2ary($array_quelle,1,0) ;(wenn andersrum sortieren, dann deaktivieren)
    ;_ArrayDisplay2D($array_quelle,"$array_quelle")

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

    ;Einträge für ListView vornehmen (Datei und Datum)
    For $i = 1 To UBound($FileList) - 1
    $time2 = FileGetTime($Quellordner & $FileList[$i], 0)
    $video2 = $time2[0] & "." & $time2[1] & "." & $time2[2] & " " & $time2[3] & "." & $time2[4] & "." & $time2[5]
    GUICtrlCreateListViewItem($FileList[$i] & "|" & $video2, $listview)
    Next

    ;Einträge vom ListView sortieren
    Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($listview) ];$B_DESCENDING
    _GUICtrlListViewSort($listview, $B_DESCENDING, 1); $B_DESCENDING
    _GUICtrlListViewSort($listview, $B_DESCENDING, 1); $B_DESCENDING (wenn andersrum sortieren, dann deaktivieren)

    EndFunc ;==>_Quellordner2

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

    ;Zielordner auswählen
    Func _Zielordner()
    $Zielordner_ohne = FileSelectFolder("Bitte den Zielordner auswählen", "", 1, $Standard_Ziel)
    $Zielordner = $Zielordner_ohne & "\"
    If ($Zielordner_ohne = "" Or StringInStr($Zielordner_ohne, ":") = 2) Then
    GUICtrlCreateLabel(" ", 110, 30, 330, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFC8D)
    GUICtrlSetData (-1, $Zielordner_ohne)
    Else
    MsgBox(16,"Ungültiger Zielordner", "Bitte wählen Sie einen korrekten Zielordner aus")
    _Zielordner()
    EndIf
    EndFunc ;==>_Zielordner

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

    ;umbenennen
    ;Teil1 Prüfung, Fotofiles umbenennen
    Func _Foto()
    $Fehler1 = 0
    Dim $FileList1 = 0
    $FileList1 = _FileListToArray($Zielordner, $foto_anfang & "_*." & $foto_typ, 1)
    If @error = 4 Then
    $Fehler1 = 1
    Return
    Else
    SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
    EndIf

    For $i = 1 To UBound($FileList1) - 1
    $Foto1 = StringReplace($FileList1[$i], $foto_anfang, $klappliste)
    FileMove($Zielordner & $FileList1[$i], $Zielordner & $Foto1)
    Next
    Splashoff()
    EndFunc ;==>_Foto


    ;Teil2 Prüfung, Videofiles umbenennen
    Func _Video1()
    $Fehler2 = 0
    Dim $FileList2 = 0
    $FileList2 = _FileListToArray($Zielordner, $video_anfang & "_*." & $video_typ1, 1)
    If @error = 4 Then
    $Fehler2 = 1
    Return
    Else
    SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
    EndIf

    For $i = 1 To UBound($FileList2) - 1
    $time2 = FileGetTime($Zielordner & $FileList2[$i], 0)
    $video2 = $time2[0] & "." & $time2[1] & "." & $time2[2] & " " & $time2[3] & "." & $time2[4] & "." & $time2[5] & "_" & $klappliste
    FileMove($Zielordner & $FileList2[$i], $Zielordner & $video2 & "." & $video_typ1)
    Next
    Splashoff()
    EndFunc ;==>_Video1


    ;Teil3 Prüfung, Videofiles umbenennen
    Func _Video2()
    $Fehler3 = 0
    Dim $FileList3 = 0
    $FileList3 = _FileListToArray($Zielordner, $video_anfang & "_*." & $video_typ2, 1)
    If @error = 4 Then
    $Fehler3 = 1
    Return
    Else
    SplashTextOn("Start des Umbenennens", "Die Foto und Videodateien werden umbenannt", 350, 30, -1, -1)
    EndIf

    For $i = 1 To UBound($FileList3) - 1
    $time3 = FileGetTime($Zielordner & $FileList3[$i], 0)
    $video3 = $time3[0] & "." & $time3[1] & "." & $time3[2] & " " & $time3[3] & "." & $time3[4] & "." & $time3[5] & "_" & $klappliste
    FileMove($Zielordner & $FileList3[$i], $Zielordner & $video3 & "." & $video_typ2)
    Next
    Splashoff()
    EndFunc ;==>_Video2


    ;Teil4 Prüfung, ob überhaupt Dateien existieren
    Func _Pruefung()
    SplashOff()
    If ($Fehler1 + $Fehler2 + $Fehler3 = 3) Then
    MsgBox(64, "Keine Dateien vorhanden", "Bitte überprüfen")
    Else
    EndIf
    EndFunc ;==>_Pruefung

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

    ;Prüfung, ob der Zielordner korrekt ist
    Func _zielordner_korrekt()
    If $Zielordner = "\" OR $Zielordner = "" Then
    $zielordner_korrekt = 0
    _zielordner()
    If $Zielordner = "\" OR $Zielordner = "" Then
    MsgBox(64,"Kein Zielordner","Bitte wählen Sie zuerst einen Zielordner aus")
    $zielordner_korrekt = 0
    Else
    $zielordner_korrekt = 1
    EndIf
    Else
    $zielordner_korrekt = 1
    EndIf
    EndFunc ;==>_zielordner_korrekt

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

    ;Prüfung, ob der Quellordner korrekt ist
    Func _quellordner_korrekt()
    If $Quellordner = "\" OR $Quellordner = "" Then
    $quellordner_korrekt = 0
    _quellordner()
    _quellordner2()
    If $Quellordner = "\" OR $Quellordner = "" Then
    MsgBox(64,"Kein Quellordner","Bitte wählen Sie zuerst einen Quellordner aus")
    $quellordner_korrekt = 0
    Else
    $quellordner_korrekt = 1
    EndIf
    Else
    $quellordner_korrekt = 1
    EndIf
    EndFunc ;==>_quellordner_korrekt

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

    ;Beim Drücken von Strg+y werden alle Bilder markiert
    Func _markieren()
    For $i = 1 To _GUICtrlListViewGetItemCount($listview)
    _GUICtrlListViewSetItemSelState($listview, $i-1, 1 )
    Next
    EndFunc ;==>_markieren()
    Global $merken = 0

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

    ;------------------------
    ;Drücken eines Buttons
    ;------------------------
    While 1
    $msg = GUIGetMsg()
    Select
    ;------------------------------------------------------------ Button Quellordner auswählen----------------------------------------
    Case $msg = $Quelle
    _Quellordner()
    _Quellordner2()

    ;------------------------------------------------------------ Button Zielordner auswählen ----------------------------------------
    Case $msg = $Ziel
    _Zielordner()

    ;------------------------------------------------------------ Button Kopieren ----------------------------------------
    Case $msg = $kopieren
    _quellordner_korrekt()
    If $quellordner_korrekt = 1 Then
    If _GUICtrlListViewGetSelectedCount($listview) = 0 Then
    MsgBox(64,"Keine Dateien markiert", "Bitte markieren Sie die zu kopierenden Dateien")
    Else

    _zielordner_korrekt()
    If $zielordner_korrekt = 1 Then
    Local $test = _GUICtrlListViewGetSelectedIndices($listview, 1)
    If (IsArray($test)) Then
    Local $i
    ;_ArrayDisplay($test,"$test")
    ;_ArrayDisplay2D($array_quelle,"$array_quelle")
    SplashTextOn("Fotos und Videos werden auf die Festplatte kopiert", "Vorgang läuft - Bitte warten", 350, 30)
    For $i = 1 To $test[0]
    FileCopy($Quellordner & $array_quelle[$test[$i]][0], $Zielordner, 1)
    ;FileCopy($Quellordner & $array_quelle[$test[$i]+1][0], $Zielordner, 1) ;(wenn andersrum sortieren, dann deaktivieren)
    Next
    SplashOff()
    EndIf
    EndIf
    EndIf
    EndIf

    ;------------------------------------------------------------ Button Umbenennen ----------------------------------------
    Case $msg = $umbenennen
    $klappliste = GUICtrlRead($Klappen)
    _zielordner_korrekt()
    If $zielordner_korrekt = 1 Then
    _Foto()
    _Video1()
    _Video2()
    _Pruefung()
    EndIf

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

    ;------------------------------------------------------------ Button Beenden ----------------------------------------
    Case $msg = $beenden
    Exit

    ;~ ;------------------------------------------------------------ Bildvorschau anzeigen ----------------------------------------

    ;------------------------------------------------------------ auf das "x" klicken ----------------------------------------
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    _check()
    WEnd

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

    Func _check()
    $vergleich = _GUICtrlListViewGetSelectedIndices($listview, 0)
    If $merken <> $vergleich Then
    GUICtrlSetImage($pic, $Quellordner & _GUICtrlListViewGetItemText($listview, _GUICtrlListViewGetSelectedIndices($listview), 0))
    $merken = $vergleich
    EndIf
    EndFunc ;==>_check

    [/autoit]