Gui-Liste für Daten aus einem Array

  • Hi

    so folgende Problemstellung:

    ich muss eine Auflistung von 3 Dateitypen lwp/doc/odt nebenander anzeigen.

    Da _ArrayDisplay($aFiles) nur immer je eine anzeigt bekam ich den tipp von einer Gui ^^


    Nur check ichs net :)

    btw wie kann ich z.b. 3 mal das array ausführen? und wie zähle ich die daten dann in der Gui hoch?

    also ich hätte gern die Liste die ich vom Array bekomme einfach 3 mal :)

    hoffentlich hats einer ein bisschen verstanden ^^

  • dafür gibts ja MEHRdimensionale Arrays oder mach einfach 3 Arrays - pack die Ausgabe z.B. in eine Filelist :!:

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

  • ich hab da mal was gekanupt

    nur ich bekomm in der 2ten und 3ten spalte IMMER nur den ersten wert angezeigt, die zählt er nciht mit hoch wiso?

    [autoit]

    ;Konverter SmartSuite in OpenOffice (Ordnerstruktur abarbeitung möglich)
    ;Autor: Carsten Groß
    ;Datum: 08.10.2008
    ;Version: 1.0
    ;Array Plugin by Bugfix

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

    HotKeySet("{ESC}", "Terminate")

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

    $pfad = FileSelectFolder("Wählen Sie den Ordner.", "")
    ;$dateityp = InputBox("Auswahl der Endung / Des Dateityps", "Bitte geben Sie hier die 3stellige Dateiendung des Dateityps an. lwp / doc / odt", "", "", 500, 10)
    ; Liest den Pfad und den Dateitypen ein

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

    $datei = 0
    ; Setzt Variablen

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

    ;=======================================================================================================================
    #include <array.au3>
    #include <file.au3>
    $dateityp1 = "odt"
    $dateityp2 = "doc"
    $dateityp3 = "odt"

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

    $alwp = _GetFilesFolder_Rekursiv($pfad, $dateityp1, 0)
    $adoc = _GetFilesFolder_Rekursiv($pfad, $dateityp2, 0)
    $aodt = _GetFilesFolder_Rekursiv($pfad, $dateityp3, 0)

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

    If $alwp[0] >= $adoc[0] and $alwp[0] >= $aodt[0] Then
    $y = $alwp[0]
    EndIf

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

    If $adoc[0] >= $alwp[0] and $adoc[0] >= $aodt[0] Then
    $y = $adoc[0]
    EndIf

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

    If $aodt[0] >= $adoc[0] and $aodt[0] >= $alwp[0] Then
    $y = $aodt[0]
    EndIf

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

    ;$y = 100
    $x = 1

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

    ;=======================================================================================================================
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiImageList.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work

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

    Global $GUI, $hImage, $hListView, $lwp, $doc, $odt
    $GUI = GUICreate("Vergleichsliste", 900, 600)

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

    $hListView = _GUICtrlListView_Create ($GUI, "", 2, 2, 894, 568)
    _GUICtrlListView_SetExtendedListViewStyle ($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
    GUISetState()

    ; GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    ; Load images
    ;~ $hImage = _GUIImageList_Create ()
    ;~ _GUIImageList_Add ($hImage, _GUICtrlListView_CreateSolidBitMap ($hListView, 0xFF0000, 16, 16))
    ;~ _GUIImageList_Add ($hImage, _GUICtrlListView_CreateSolidBitMap ($hListView, 0x00FF00, 16, 16))
    ;~ _GUIImageList_Add ($hImage, _GUICtrlListView_CreateSolidBitMap ($hListView, 0x0000FF, 16, 16))
    ;~ _GUICtrlListView_SetImageList ($hListView, $hImage, 1)

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

    ; Add columns
    _GUICtrlListView_InsertColumn ($hListView, 0, "lwp", 100)
    _GUICtrlListView_InsertColumn ($hListView, 1, "doc", 100)
    _GUICtrlListView_InsertColumn ($hListView, 2, "odt", 100)

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

    ; Add items

    While $x <= $y

    $lwp = $alwp[$x]
    $doc = $adoc[$x]
    $odt = $aodt[$x]
    _GUICtrlListView_AddItem ($hListView, $lwp, 0)
    _GUICtrlListView_AddSubItem ($hListView, 0, $doc, 1)
    _GUICtrlListView_AddSubItem ($hListView, 0, $odt, 2)

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

    ;~ _GUICtrlListView_AddItem ($hListView, "Row 2: Col 1", 1)
    ;~ _GUICtrlListView_AddSubItem ($hListView, 1, "Row 2: Col 2", 1)
    ;~ _GUICtrlListView_AddItem ($hListView, "Row 3: Col 1", 2)

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

    $x = $x + 1
    WEnd
    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()

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

    ; ################################### F U N K T I O N E N ###################################

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

    Func Terminate()
    Exit
    EndFunc

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================

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

    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    Case Else
    $sDelim = @CRLF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles,1), $sDelim, 1)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    If $aOut[0] <> 0 Then $aOut[$aOut[0]] = StringTrimRight($aOut[$aOut[0]], 1)
    Return $aOut
    Else
    Return StringTrimRight($strFiles, StringLen($sDelim))
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]
  • das aktuelle

    oben im skript sind die 3 endungen, können beliebig zum testen verändert werden

    bei mir sieht die liste imemr so aus

    daten1 - datensplaten2 - datenplate3
    daten2 - nix - - - - - - - - nix
    daten3 - nix - - - - - - - - nix
    ...


    wiso?

    • Offizieller Beitrag

    Hi,
    nun kann ich mir das Elend nicht länger mit ansehen :D
    Du hattest beim Einfügen der ListviewSubelemente immer in Index 0 geschrieben ;)

    Hier mal die angepaßte Version, leicht optimiert:

    Spoiler anzeigen
    [autoit]

    HotKeySet("{ESC}", "Terminate")

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

    $pfad = FileSelectFolder("Wählen Sie den Ordner.", "")
    ;$dateityp = InputBox("Auswahl der Endung / Des Dateityps", "Bitte geben Sie hier die 3stellige Dateiendung des Dateityps an. lwp / doc / odt", "", "", 500, 10)
    ; Liest den Pfad und den Dateitypen ein

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

    ;=======================================================================================================================
    #include <array.au3>
    #include <file.au3>
    Global $dateityp1 = "odt"
    Global $dateityp2 = "doc"
    Global $dateityp3 = "odt"

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

    Global $alwp = _GetFilesFolder_Rekursiv($pfad, $dateityp1, 0)
    Global $adoc = _GetFilesFolder_Rekursiv($pfad, $dateityp2, 0)
    Global $aodt = _GetFilesFolder_Rekursiv($pfad, $dateityp3, 0)

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

    Local $max = $alwp[0]
    If $adoc[0] > $max Then $max = $adoc[0]
    If $aodt[0] > $max Then $max = $aodt[0]

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

    Global $arOut[$max][3]
    For $i = 1 To UBound($alwp) -1
    $arOut[$i-1][0] = $alwp[$i]
    Next
    For $i = 1 To UBound($adoc) -1
    $arOut[$i-1][1] = $adoc[$i]
    Next
    For $i = 1 To UBound($aodt) -1
    $arOut[$i-1][2] = $aodt[$i]
    Next

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

    ;=======================================================================================================================
    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiImageList.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_LV = False ; Check ClassName being passed to ListView functions, set to True and use a handle to another control to see it work

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

    Global $GUI, $hImage, $hListView, $lwp, $doc, $odt
    $GUI = GUICreate("Vergleichsliste", 900, 600)

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

    $hListView = _GUICtrlListView_Create ($GUI, "", 2, 2, 894, 568)
    _GUICtrlListView_SetExtendedListViewStyle ($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES))
    GUISetState()

    ; GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    ; Load images
    ;~ $hImage = _GUIImageList_Create ()
    ;~ _GUIImageList_Add ($hImage, _GUICtrlListView_CreateSolidBitMap ($hListView, 0xFF0000, 16, 16))
    ;~ _GUIImageList_Add ($hImage, _GUICtrlListView_CreateSolidBitMap ($hListView, 0x00FF00, 16, 16))
    ;~ _GUIImageList_Add ($hImage, _GUICtrlListView_CreateSolidBitMap ($hListView, 0x0000FF, 16, 16))
    ;~ _GUICtrlListView_SetImageList ($hListView, $hImage, 1)

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

    ; Add columns
    _GUICtrlListView_InsertColumn ($hListView, 0, "lwp", 100)
    _GUICtrlListView_InsertColumn ($hListView, 1, "doc", 100)
    _GUICtrlListView_InsertColumn ($hListView, 2, "odt", 100)

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

    ; Add items

    For $i = 0 To UBound($arOut) -1
    _GUICtrlListView_AddItem ($hListView, $arOut[$i][0], 0)
    _GUICtrlListView_AddSubItem ($hListView, $i, $arOut[$i][1], 1)
    _GUICtrlListView_AddSubItem ($hListView, $i, $arOut[$i][2], 2)
    Next

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()

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

    ; ################################### F U N K T I O N E N ###################################

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

    Func Terminate()
    Exit
    EndFunc

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

    ;==================================================================================================
    ; Function Name: _GetFilesFolder_Rekursiv($sPath [, $sExt='*' [, $iDir=-1 [, $iRetType=0 ,[$sDelim='0']]]])
    ; Description: Rekursive Auflistung von Dateien und/oder Ordnern
    ; Parameter(s): $sPath der Basispfad für die Auflistung ('.' -aktueller Pfad, '..' -Parentpfad)
    ; $sExt Erweiterung für Dateiauswahl '*' oder -1 für alle (Standard)
    ; $iDir -1 Dateien+Ordner(Standard), 0 nur Dateien, 1 nur Ordner
    ; optional: $iRetType 0 gibt Array, 1 gibt String zurück
    ; optional: $sDelim legt Trennzeichen für Stringrückgabe fest
    ; 0 -@CRLF (Standard); 1 -@CR; 2 -@LF; oder beliebiges Zeichen
    ; Return Value(s): Array (Standard) od. String mit den gefundenen Pfaden der Dateien und/oder Ordner
    ; Array[0] enthält die Anzahl der gefundenen Dateien/Ordner
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;==================================================================================================

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

    Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
    Global $oFSO = ObjCreate('Scripting.FileSystemObject')
    Global $strFiles = ''
    Switch $sDelim
    Case '1'
    $sDelim = @CR
    Case '2'
    $sDelim = @LF
    Case Else
    $sDelim = @CRLF
    EndSwitch
    If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
    If $sExt = -1 Then $sExt = '*'
    If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
    _ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
    If $iRetType = 0 Then
    Local $aOut
    $aOut = StringSplit(StringTrimRight($strFiles,1), $sDelim, 1)
    If $aOut[1] = '' Then
    ReDim $aOut[1]
    $aOut[0] = 0
    EndIf
    If $aOut[0] <> 0 Then $aOut[$aOut[0]] = StringTrimRight($aOut[$aOut[0]], 1)
    Return $aOut
    Else
    Return StringTrimRight($strFiles, StringLen($sDelim))
    EndIf
    EndFunc

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

    Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
    If Not IsDeclared("strFiles") Then Global $strFiles = ''
    If ($Dir = -1) Or ($Dir = 0) Then
    For $file In $Folder.Files
    If $Ext <> '*' Then
    If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
    $strFiles &= $file.Path & $Delim
    Else
    $strFiles &= $file.Path & $Delim
    EndIf
    Next
    EndIf
    For $Subfolder In $Folder.SubFolders
    If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
    _ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
    Next
    EndFunc

    [/autoit]