1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Tweaky

Beiträge von Tweaky

  • Dateien des Explorers in eine ListView - kleinere Probleme

    • Tweaky
    • 28. Mai 2007 um 13:26

    Hi,
    ich habe eine kleine GUI erstellt.
    In dieser wird in einem TreeView ein Ordner ausgewählt.
    Dann soll in einer ListView die enthaltenen Dateien aufgelistet werden.
    Dies funktioniert soweit.
    Leider werden die Dateien erst unsortiert hinzugefügt und dann muß ich sie manuell sortieren. Dies funktioniert auch, jedoch wäre es mir lieber, wenn die Einträge gleich sortiert würden.
    Die Daten lese ich über ein Array ein.
    Später will ich die Dateien noch in ein anderes ListView verschieben. Jedoch bin ich noch nicht soweit

    Spoiler anzeigen
    [autoit]

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

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

    Global $Tree
    Global $SubTree
    Global $merken = "\"

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

    Dim $time, $time2, $vergleich

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

    ;GUI erstellen
    $Form1 = GUICreate("Browse", 800, 800)
    $TreeView = GUICtrlCreateTreeView(8, 8, 225, 273, BitOR($WS_BORDER,$TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS))
    GUICtrlSetImage(-1, "shell32.dll", 3, 4)
    GUICtrlSetImage(-1, "shell32.dll", 4, 2)
    $ListView = GUICtrlCreateListView("Datei|Datum", 300, 10, 400, 250)
    $ok = GUICtrlCreateButton(">>>>>>>>>>>> &Weiter >>>>>>>>>>>>", 8, 288, 227, 25)
    $test = GUICtrlCreateButton("TEST", 308, 288, 227, 25)
    GUISetState(@SW_SHOW)

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

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

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

    ;Laufwerk
    $HDDrives = "V:"
    Search($HDDrives , "*.*")
    $var = IniReadSection("Files.ini", $HDDrives & "\")
    For $h = 1 To $var[0][0]
    $IniRead = IniRead("Files.ini", $HDDrives & "\", $h, "NotFound")
    _Next($IniRead, "*.*", $h)
    Next

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



    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $ok
    ;~ Run("explorer.exe "& _GUICtrlTreeViewGetTree($TreeView,"\"))
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $test
    EXIT
    EndSelect
    _check()
    WEnd



    Func _check()
    $vergleich = _GUICtrlTreeViewGetTree($treeview, "\") & "\"
    If $merken <> $vergleich Then
    _Dateien()
    $merken = $vergleich
    Else
    EndIf
    EndFunc ;==>_check



    Func _Dateien()
    _GUICTRLListViewDeleteAllItems($listview)
    $vergleich = _GUICtrlTreeViewGetTree($treeview, "\") & "\"

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

    ;Größe des Arrays anhand von vorhandenen Dateien einstellen
    $anzahl = DirGetSize($vergleich, 3)

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

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

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

    ;Array ($array_quelle) erzeugen (Dateinamen von $Filelist und Datum)
    For $i = 1 to UBound($array)-1
    $array_quelle[$i][0] = $array[$i]
    $time = FileGetTime($vergleich & $array[$i], 0)
    $array_quelle[$i][1] = $time[2] & "." & $time[1] & "." & $time[0] & " " & $time[3] & ":" & $time[4] & ":" & $time[5]
    Next

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

    _ArraySort_2ary($array_quelle,0,0)
    ;~ _ArrayDisplay2D($array_quelle,"$array_quelle")

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

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

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

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

    EndFunc






    ;Functions
    ;///////////////////////////////////////////
    Func Search($SearchPath, $FileType)
    $Item1 = GUICtrlCreateTreeViewItem(StringUpper($SearchPath), $TreeView)
    GUICtrlSetImage(-1, "shell32.dll", 8)
    $SearchPath &= "\"
    $Search = FileFindFirstFile($SearchPath & $FileType)
    If $Search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf

    $Count = 1
    Dim $Tree[99999]
    While 1
    $File = FileFindNextFile($Search)
    If @error Then ExitLoop

    $Attrib = FileGetAttrib($SearchPath & $File)
    If StringInStr($Attrib, "D") Then
    $Tree[$Count] = GUICtrlCreateTreeViewItem($File, $Item1)
    IniWrite("Files.ini", $SearchPath, $Count, $SearchPath & $File & "\")
    $Count = $Count + 1
    EndIf
    WEnd
    FileClose($Search)
    EndFunc ;==>Search



    Func _Next($SearchPath, $FileType, $Number)
    $Search1 = FileFindFirstFile($SearchPath & $FileType)
    If $Search1 = -1 Then
    Else
    $Count = 1
    Dim $SubTree[99999]
    While 1
    $NextFile = FileFindNextFile($Search1)
    If @error Then ExitLoop

    $Attrib = FileGetAttrib($SearchPath & $NextFile)
    If $Attrib = "D" Then;StringInStr($Attrib,"D") Then
    If $NextFile = "." Or $NextFile = ".." Then
    Else
    $FBuffer = $SearchPath & $NextFile & "\"
    $SubTree[$Count] = GUICtrlCreateTreeViewItem($NextFile, $Tree[$Number])

    $Search2 = FileFindFirstFile($FBuffer & "*.*")
    If $Search2 = -1 Then
    ;~ msgbox(0,"","Ingen mapper")
    Else
    $Count1 = 1
    While 1
    $NextFile2 = FileFindNextFile($Search2)
    If @error Then ExitLoop
    $Attrib = FileGetAttrib($FBuffer & $NextFile2)
    If $Attrib = "D" Then;StringInStr($Attrib,"D") Then
    If $NextFile2 = "." Or $NextFile2 = ".." Then
    Else
    GUICtrlCreateTreeViewItem($NextFile2, $SubTree[$Count])
    $Count1 = $Count1 + 1
    EndIf
    EndIf
    WEnd
    FileClose($Search2)
    EndIf
    ;msgbox(0,"","Stop " & $Count)
    $Count = $Count + 1
    EndIf
    EndIf
    WEnd
    FileClose($Search1)
    EndIf
    EndFunc ;==>_Next

    [/autoit]
  • Script funktioniert nicht mehr nach AutoIt Update

    • Tweaky
    • 18. Mai 2007 um 14:22

    Danke Bernd,
    kleine Ursachse - große Wirkung
    :rock:

  • Script funktioniert nicht mehr nach AutoIt Update

    • Tweaky
    • 17. Mai 2007 um 22:07

    ;( ;( ;( Muß (leider) BugFix zustimmen. Es geht auch damit nicht :weinen: :weinen: :weinen:

  • Script funktioniert nicht mehr nach AutoIt Update

    • Tweaky
    • 17. Mai 2007 um 21:05

    Vielleicht hast du vor der 3.2.2.0 noch ne andere Version installiert und immer drüberinstalliert.

    Meine erste Version war 3.2.2.0. Vielleicht fehlt mir dann was, was bei dir ne alte Version mitgebracht hat.

    PS: Ist es eigentlich sinnvoll die autoit Version mit in das Script zu schreiben. Oder sind solche Probleme nicht üblich 8o

  • Script funktioniert nicht mehr nach AutoIt Update

    • Tweaky
    • 17. Mai 2007 um 20:46

    geht trotzdem nicht.

    alles deinstalliert
    3.2.2.0 installiert geht
    3.2.4.4 drüberinstalliert (NICHT deinstalliert) geht NICHT

    :hammer:

  • Script funktioniert nicht mehr nach AutoIt Update

    • Tweaky
    • 17. Mai 2007 um 19:54

    puuhh,
    sieht schlecht aus, ich weiß nicht mehr weiter ;(

  • Script funktioniert nicht mehr nach AutoIt Update

    • Tweaky
    • 17. Mai 2007 um 19:38

    hm,
    verstehs nicht.
    Habe eben an Image hergeholt wo kein AutoIt installiert ist.
    Dann AutoIt 3.2.4.3 installiert und den aktuellsten Scite Editor.
    Aber es geht nicht.

    Nur bei bmp-Dateien wird was angezeigt, bei jpg nicht ?(

  • Script funktioniert nicht mehr nach AutoIt Update

    • Tweaky
    • 17. Mai 2007 um 19:18

    Hi,
    dies ist das Beispiel aus der zip-Datei

    [autoit]

    #include "image_get_info.au3"
    $file = FileOpenDialog("Please select file", "", "Image files (*.jpg;*.tif;*.gif;*.bmp;*.png)");
    If @error Then Exit
    $aInfo = _ImageGetInfo($file)
    If @error Then
    MsgBox (0, "Error", "Can't open file.")
    Exit
    Endif
    MsgBox (0, "All Picture Info", $aInfo)
    MsgBox (0, "Only Width and Height", _ImageGetParam($aInfo, "Width") & "x" & _ImageGetParam($aInfo, "Height"))

    [/autoit]
  • Script funktioniert nicht mehr nach AutoIt Update

    • Tweaky
    • 17. Mai 2007 um 19:01

    hi,
    ich hatte bisher die Version AutoIt 3.2.2.0 installiert.
    Damit hat dieses Beispiel
    http://www.autoitscript.com/fileman/users/Lazycat/udfs.html
    $sInfo = _ImageGetInfo($sFile)
    perfekt funktioniert.

    Nun habe ich auf 3.2.4.3 upgedatet.
    Nun funktioniert das Script nicht mehr.
    Es werden nur zwei leere msgbox angezeigt

    Warum geht dies nicht mehr

    danke :tongue:

  • Eintrag in ListView durch Pfeiltasten markieren

    • Tweaky
    • 16. Mai 2007 um 23:02

    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]
  • Eintrag in ListView durch Pfeiltasten markieren

    • Tweaky
    • 16. Mai 2007 um 21:38

    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

  • Eintrag in ListView durch Pfeiltasten markieren

    • Tweaky
    • 16. Mai 2007 um 20:41

    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]
  • Eintrag in ListView durch Pfeiltasten markieren

    • Tweaky
    • 16. Mai 2007 um 19:33

    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

  • Papierkorb leeren

    • Tweaky
    • 14. Mai 2007 um 13:59

    Ups,
    hätte nicht gedacht, das sogar das an Board hat. :rolleyes:
    Gibt wohl nix was nicht standardmäßig vorhanden ist.

    Aber wenigstens war ich nicht der einzige der es übersehen hat :rofl:

  • Papierkorb leeren

    • Tweaky
    • 14. Mai 2007 um 09:53

    Hi,
    ich will einen Button in einer GUI erzeugen.
    Beim Klick darauf soll der Paierkorb geleert werden.

    Wie kann ich den Paierkorb durch den Klick aufrufen?
    Oder wie kann ich ihn durch den Klick direkt löschen lassen.

    Habe bereits nach einem rundll-Befehl gesucht. Aber so wie es aussieht ist es keiner. X(

    Danke =)

  • Wird die Schleife nur einmal durchlaufen?

    • Tweaky
    • 12. Mai 2007 um 17:44

    EDIT: So das wird nix, es wird nicht funktionieren, wie ich es vorhabe.
    Muß alles komplett umwerfen und neu schreiben mit einer eigenen GUI.

    Trotzdem DANKE :tongue:


    Kurze Frage noch
    Ich muß ein .bac Datei öffnen. Durch diese .bac öffnet sich dann das Hauptprogramm. Wenn sie geöffnet ist, soll das Script weiterarbeiten.
    Wenn ich diese mit RUN öffne geht es, aber es erscheint das DOS Fenster, welches ich wegklicken lassen

    [autoit]

    Run(@COMSPEC & " /c " & $Dateipfad[$i], "", @SW_SHOW)
    Winwait("C:\WINDOWS\system32\cmd.exe")
    WinClose("C:\WINDOWS\system32\cmd.exe")
    msgbox(0,"", Winexists($Sicherungsdatei[$i] & ".bac - Backer 6"))
    WinWait($Sicherungsdatei[$i] & ".bac - Backer 6")
    WinActivate($Sicherungsdatei[$i] & "bac - Backer 6")

    [/autoit]

    Wenn ich es mit _RUNDOS probiert wird kein DOS Fenster geöffnet, aber es bleibt stehen, bevor die msgbox kommt. Warum?

    [autoit]

    _Rundos(@COMSPEC & " /c " & $Dateipfad[$i])
    msgbox(0,"", Winexists($Sicherungsdatei[$i] & ".bac - Backer 6"))
    WinWait($Sicherungsdatei[$i] & ".bac - Backer 6")
    WinActivate($Sicherungsdatei[$i] & "bac - Backer 6")

    [/autoit]

    EDIT: Hat sich erledigt.
    Hab gesehen, dass es noch ShellExecute gibt. Damit klappts :D

  • Wird die Schleife nur einmal durchlaufen?

    • Tweaky
    • 12. Mai 2007 um 17:23

    verstehs nicht so ganz
    Also dann wird die Schleife nur einmal durchlaufen.

    Und wenn ich dann ein anderes Backer-Profil mit einer anderen [$i] starte.
    Geht dies dann?

  • Wird die Schleife nur einmal durchlaufen?

    • Tweaky
    • 12. Mai 2007 um 16:10

    hm, also soweit ich dies sagen kann, stimmt das Script.
    Wenn ich bei der ersten while-Schleife (ab 93) ein ConsoleWrite reinmache, erscheint der Pfad zweimal.
    Einmal ist richtig. Das zweite Mal ist falsch.

    Das Problem ist folgendes:
    Wenn ich ein Baker-Profil starte hat dies den Namen "Daten.bac..."
    Wenn ich anschließend zum Hauptprogramm zurückkehre hat dieses genau den gleichen Titel.

    Da ich nun in der ersten While-Schleife (ab 93) gesagt habe, dass die Schleife durchlaufen werden soll, wenn "Daten.bac..." erscheint, wird die Schleife nochmal durchlaufen. :rolleyes:
    Dies ist aber falsch.

    Ich habe schon probiert den Titel des Hauptprogramm umzubenennen, was auch klappt, aber leider läuft es immer noch nicht.


    Hm, es will einfach nicht,
    habs noch mit der "class" des Titels probiert aber es will nicht

    [autoit]

    Opt("WinTitleMatchMode", 4)
    WinWait("classname=TMainWnd"))

    [/autoit]


    Es will einfach nicht.
    Kann wer mal schauen, ob ich die Schleife bereits verlassen habe?

    Danke :P

  • Wird die Schleife nur einmal durchlaufen?

    • Tweaky
    • 12. Mai 2007 um 00:42

    Hi,
    hab mal wieder ein kleines Problem. Für euch Profis sicher nur ein Problemchen :rofl:.

    Ich nutze das Datensicherungsprogramm Backer 6.6.
    Mit ihm kann ich Datensicherungen in einen Ordner erstellen. Dieser Ordner wird dann mit dem aktuellen Datum versehen.


    Für dieses Tool habe ich nun ein "Zusatz-Tool" geschrieben.

    Dieses benennt mir einen von mir gewählten Ordner mit älterem Datum in einen Ordner mit heutigem Datum um.

    Ist für das Script nicht unbedingt wichtig, nur damit ihr wisst um was es grob geht.


    Nun zu meinem Problem.

    Ich habe im Backer 3 solcher Sicherungsprofile.
    Mein Script durchläuft eine Schleife und prüft welches dieses 3 Profile gewählt wurde.
    Je nachdem welches gewählt wurde, wird dann der Zielordner anders gewählt.

    Wenn ich ein Profil auswähle, wählt mein Script den richtigen Ordner aus.
    Wenn ich dies wiederhole klappt es auch.
    Wenn ich jedoch ein anderes Profil (also ein anderes Element $i der Schleife) auswähle, bleibt der Ordner bestehen, obwohl sich dieser eigentlich ändern müßte.
    Nun ist meine Frage, warum dies nicht klappt ?(

    Hier mein Script:

    Spoiler anzeigen
    [autoit]

    ;------------------------------------------------------------------------------------------------------------------------------------
    ;Dieses Script ist bei der Anwendung des Backers hilfreich.
    ;Soll einen neue Sicherung angelegt werden, so bietet sich folgende Möglichkeit:
    ;Vor der Anwendung des Backers ein altes Verzeichnis mit Sicherungsdatum umbenennen in ein Verzeichnis mit heutigem Datum.
    ;Damit sichert Backer nicht die geänderten Daten. Dies bringt eine Zeitersparnis.

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

    ;Jedesmal den Ordner im Explorer umzubenennen ist jedoch umständlich. Deshalb dieses Tool.
    ;Einfach über dieses Tool den Backer starten und ganz normal mit dem Backer arbeiten.
    ;Den Rest erledigt dieses Script im Hindergrund.

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

    ;Es gibt drei Buttons
    ;"umbenennen" = Es muß ein Ordner ausgewählt werden. Dieser wird dann in das heutige Datum umbenannt.
    ;"zurueck" = Falls aus Versehen auf das falsche Backer-Profil geklickt wurde, kommt man hier wieder zurück.
    ;"neuer Ordner" = Es wird ein neuer, zusätzlicher Ordner mit dem heutigen Datum erstellt.
    ;------------------------------------------------------------------------------------------------------------------------------------

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

    #Include <Date.au3>
    #include <GuiListView.au3>
    #include <GuiList.au3>
    #include <GUIConstants.au3>
    #Include <Array.au3>
    #Include <File.au3>

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

    Dim $FileList2

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

    Opt("WinTitleMatchMode", 2)

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

    ;Tastenkombination zum Beenden des Backers und dieses Scripts
    HotKeySet("^y", "_beenden")

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

    ;Anzahl der vorhandenen Backer .bac Dateien mit Sicherungsordnung mit Datum
    $start = 0 ;Der Start-Wert ist die Zahl des ersten Ordners (immer 0)
    $ende = 2 ;Der Ende-Wert ist die Zahl des letzten Ordners (siehe unbedingt anpassen) < < < < < < < < < < < < < < < < < < ändern > > > > > > > > > > > > > > > > > > >

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

    Dim $Sicherungsdatei[$ende+1]
    Dim $Pfad[$ende+1]

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

    ;unbedingt anpassen, nicht benötigte Einträge deaktivieren mit ;
    $Sicherungsdatei[0] = "Daten" ;Name des Backer Profils (ohne.bac)
    $Sicherungsdatei[1] = "Internet" ;Name des Backer Profils (ohne.bac)
    $Sicherungsdatei[2] = "Peter" ;Name des Backer Profils (ohne.bac)
    $Pfad[0] = "N:\Datensicherung\Daten\" ;Ordner der Sicherungen
    $Pfad[1] = "N:\Datensicherung\Internet\" ;Ordner der Sicherungen
    $Pfad[2] = "N:\Datensicherung\Peter\" ;Ordner der Sicherungen

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

    ;Startdatei vom Backer
    $backer = "N:\Backer\Backer6.exe"

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

    ;---------------------- A B H I E R K E I N E A N P A S S U N G M E H R N Ö T I G ------------------------------------

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

    ;GUI erstellen
    GUICreate("umbenennen", 230, 450)
    $umbenennen = GUICtrlCreateButton("umbenennen", 15, 390, 50, 50, $BS_ICON)
    $zurueck = GUICtrlCreateButton("zurück", 90, 390, 50, 50, $BS_ICON)
    $ohne = GUICtrlCreateButton("neuer Ordner", 165, 390, 50, 50, $BS_ICON)
    GUICtrlSetImage ($umbenennen, "shell32.dll", 146)
    GUICtrlSetImage ($zurueck, "shell32.dll", 27)
    GUICtrlSetImage ($ohne, "shell32.dll", 205)
    GUICtrlCreateLabel("umbenennen", 8, 365, -1, -1, $SS_CENTERIMAGE)
    GUICtrlCreateLabel("zurück", 99, 365, -1, -1, $SS_CENTERIMAGE)
    GUICtrlCreateLabel("neuer Ordner", 158, 365, -1, -1, $SS_CENTERIMAGE)

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

    $listview = GUICtrlCreateListView("Bild", 75, 60, 80, 300, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_SORTDESCENDING, $LVS_SINGLESEL));$LVS_SORTDESCENDING ;$LVS_SORTASCENDING
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($listview, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    _GUICtrlListViewSetColumnWidth($listview, 0, 75)

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

    Dim $B_DESCENDING[_GUICtrlListViewGetSubItemsCount($listview)]
    _GUICtrlListViewSort($listview, $B_DESCENDING, 1)

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

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

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

    ;Backer starten und warten bis er geladen wurde
    Run($backer)
    WinWait("<unbenannt>.bac - Backer 6")

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

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

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

    ;Aktionen während der Hauptbildschirm vom Backer da ist
    While 1
    For $i = $start to $ende
    Select
    Case WinExists($Sicherungsdatei[$i] & ".bac - Backer 6")
    GUICtrlCreateLabel(" ", 75, 10, 80, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlSetData (-1, $Sicherungsdatei[$i])
    GUICtrlCreateLabel(" ", 75, 30, 80, -1, $SS_CENTERIMAGE)
    GUICtrlSetBkColor(-1, 0xFFD700)
    GUICtrlSetData (-1, StringReplace(_NowCalcDate(), "/", "."))
    Sleep(50)
    _aendern()

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

    Case NOT WinExists("Backer 6")
    Exit
    EndSelect
    Next
    WEnd

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

    ;Prüfung, ob der heutige Ordner bereits exisitert
    Func _aendern()
    If NOT FileExists($Pfad[$i] & StringReplace(_NowCalcDate(), "/", ".")) Then
    WinWait($Sicherungsdatei[$i] & ".bac - Backer 6", "Abbrechen")
    Send("{ENTER}")
    WinWait("Zusammenfassung - " & $Sicherungsdatei[$i] & ".bac - Backer 6", "&OK")
    Send("{ENTER}")
    _GUICtrlListViewDeleteAllItems ($listview) ;alle Einträge im ListView löschen
    _eintragen()

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $umbenennen ;Button zum umbenennen
    _umbenennen()

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

    Case $msg = $zurueck ;Button zum verlassen der GUI
    _zurueck()
    ExitLoop

    Case $msg = $ohne ;Button: neuer Ordner anlegen und kopieren
    DirCreate($Pfad[$i] & StringReplace(_NowCalcDate(), "/", "."))
    Sleep(50)
    _zurueck()
    ExitLoop

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

    Case $msg = $GUI_EVENT_CLOSE
    _zurueck()
    ExitLoop
    EndSelect
    WEnd
    Else
    EndIf
    EndFunc

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

    ;Vorhandene Ordner in die ListView eintragen
    Func _eintragen()
    GUIsetState(@SW_SHOW)

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

    $FileList2 = _FileListToArray($Pfad[$i], "*", 2)
    _ArraySort($FileList2, 1)
    ;~ _ArrayDisplay($FileList2,"$test1")

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

    For $i = 1 To UBound($FileList2)-1
    GUICtrlCreateListViewItem($FileList2[$i], $listview)
    Next
    EndFunc

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

    ;Ordner ausgewählt, dann diesen in das aktuelle Datum umbenennen
    Func _umbenennen()
    Local $list = _GUICtrlListViewGetSelectedIndices($listview, 1)
    If _GUICtrlListViewGetSelectedCount($listview) = 0 Then ;Prüfung, ob 1 Eintrag ausgewählt ist
    MsgBox(64,"Keine Dateien markiert", "Bitte markieren Sie die zu kopierenden Dateien")
    Else
    If (IsArray($list)) Then
    Local $k
    ;~ _ArrayDisplay($list,"$test")
    For $k = 1 To $list[0]
    DirMove($Pfad[$i] & $FileList2[$list[$k]+1], $Pfad[$i] & StringReplace(_NowCalcDate(), "/", "."), 1)
    Next
    _zurueck()
    EndIf
    EndIf
    EndFunc

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

    ;zum Backer zurückkehren
    Func _zurueck()
    GUIsetState(@SW_HIDE)
    If FileExists($Pfad[$i] & StringReplace(_NowCalcDate(), "/", ".")) Then
    WinWait($Sicherungsdatei[$i] & ".bac - Backer 6")
    Send("{ENTER}")
    EndIf
    EndFunc

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

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

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

    ;Bei drücken der Tastenkombination wird der Backer und dieses Script beendet
    Func _beenden()
    Winclose("Backer 6")
    Exit
    EndFunc

    [/autoit]

    Die "Funktionsweise"
    Ich drücke das Backer-Profil "Daten"
    Nun wird durch die (fehlerhafte ???) Schleife der Eintrag ausgewählt
    Dann kommt die GUI
    Dann wird die Funktion _aendern gestartet
    In _aendern wird u. a. die ListeView geleert
    Ich drücke den Button "zurueck"
    Dadurch wird die Funktion _zurueck gestartet
    Dadurch wird die GUI versteckt und man gelangt zum Backer zurück.

    Achso nochwas: Dies ist kein Problem des Backers. Es muss an meinem Script liegen :tongue:

    Hoffe es wird einigermaßen klar was ich meine

    Danke :D

  • Zwei Labelinhalte stehen übereinander weil sie transparent sind

    • Tweaky
    • 8. Mai 2007 um 18:32

    Danke, wieder was dazugelernt :D

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™