Mehrere Ordner auswählen

  • Hallöchen

    Habe wieder mal ein GUI-herausforderung. Wie kann ich mehrere Ordner auswählen?
    Mit

    $var=FileSelectFolder("Choose a folder.","")

    kann ich nur einen einzelnen selektieren, und mit Fileopendialog nur Files...

    • Offizieller Beitrag

    Stimmt, mit FileSelectFolder() läßt sich nur ein Ordner wählen.
    Aber wenn du mehrere möchtest, kannst du den Dialog ja in einer Schleife aufrufen und erst mit Abbruch ohne Auswahl wird diese beendet:

    [autoit]

    Local $arFolder[100], $i = 0, $path = @MyDocumentsDir
    While True
    $arFolder[$i] = FileSelectFolder("Ordner auswählen", $path)
    If @error Then ExitLoop
    $i += 1
    WEnd
    ReDim $arFolder[$i+1]

    [/autoit]
  • Also als GUIvorschlag:
    listbox
    button add -> FikeSelectFolder
    button remove -> aus listbox entfernen
    button ok -> array rückgabe
    button cancel -> error = 1 rückgabe

  • Noch ne frage: Wie bekomme ich dann alle Items aus der Listbox wieder zurück?

    Spoiler anzeigen
    [autoit]

    FormExclude = GUICreate("Folder", 349, 279, 193, 125)

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

    $Edit1 = GUICtrlCreateList("", 24, 24, 185, 233,BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL) )

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

    $Button1 = GUICtrlCreateButton("Add Folder", 232, 24, 99, 25, 0)
    $Button2 = GUICtrlCreateButton("Remove Folder", 232, 56, 99, 25, 0)
    $Button3 = GUICtrlCreateButton("Ok", 232, 200, 99, 25, 0)
    $Button4 = GUICtrlCreateButton("Cancel", 232, 232, 99, 25, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Guidelete($FormExclude)
    ExitLoop

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

    Case $Button4
    Guidelete($FormExclude)
    ExitLoop

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

    Case $Button1
    $Select=FileSelectFolder("Select Folder",Guictrlread($QuelleInput))

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

    $index=StringinStr($Select,"\",0,-1)

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

    $Select=StringRight($select,stringlen($Select)-$index)

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

    _GUICtrlListBox_BeginUpdate($Edit1)
    _GUICtrlListBox_AddString($Edit1, $Select)
    _GUICtrlListBox_EndUpdate($Edit1)

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

    Case $Button2

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

    $Index=_GUICtrlListBox_GetSelItems($Edit1)

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

    for $i=$index[0] to 1
    _GUICtrlListBox_DeleteString($Edit1, $Index[$i])
    next

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

    Case $Button3

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

    ????????

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

    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von Boardercrime (14. November 2008 um 14:49)

  • Also, dein Remove hat nen Fehler, wenn nichts ausgewählt ist. Du hast Step -1 vergessen:) und Die Einträge bekommst du folgendermasßen:

    Spoiler anzeigen
    [autoit]

    Case $Button2

    $Index=_GUICtrlListBox_GetSelItems($Edit1)

    for $i=$index[0] to 1 Step -1
    _GUICtrlListBox_DeleteString($Edit1, $Index[$i])
    next

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

    Case $Button3
    $strings = ""
    For $i=0 To _GUICtrlListBox_GetCount($Edit1)-1
    $strings &= _GUICtrlListBox_GetText($Edit1,$i) & @CRLF
    Next
    $strings = StringTrimRight($strings,2); remove last CRLF
    MsgBox(0, '', $strings)

    [/autoit]