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...
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...
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:
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]
Hi,
gibt es sowas in VB? Selbst bauen?
Mega
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?
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)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Guidelete($FormExclude)
ExitLoop
Case $Button4
Guidelete($FormExclude)
ExitLoop
Case $Button1
$Select=FileSelectFolder("Select Folder",Guictrlread($QuelleInput))
$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)
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
Case $Button3
[/autoit] [autoit][/autoit] [autoit]????????
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]EndSwitch
WEnd
Hi,
mit GeCount ne Schleife machen und dann z.B. den Text ausgeben lasen.
Mega
Also, dein Remove hat nen Fehler, wenn nichts ausgewählt ist. Du hast Step -1 vergessen:) und Die Einträge bekommst du folgendermasßen:
Case $Button2
$Index=_GUICtrlListBox_GetSelItems($Edit1)
for $i=$index[0] to 1 Step -1
_GUICtrlListBox_DeleteString($Edit1, $Index[$i])
next
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)
Hey, danke fürs debuggen und für die Lösung !