(已解决)既选择文件夹又选择文件?把FileSelectFolder和FileOpenDialog结合起来?
本帖最后由 yarsye 于 2011-1-4 13:04 编辑想实现这样的功能:
1.可以多选文件夹。
2.可以多选文件。
3.可以同时实现2和1.
当用FileSelectFolder时,只会返回单个文件夹位置,不能多选。
当用FileOpenDialog时,可以实现表面上多选文件夹但是却不能真正多选,当选择2个文件夹时,点击打开,就进入另外一个文件夹里面去了。选择2个文件是OK的,返回路径中间有个‘|’分开的。
可以实现这复杂的功能吗?
已解决:换个思路走了 楼主的意思是一只手拿两张刀来使用? 楼主是这个意思吗我觉得可能不行 因为好多类似的软件不行 就算是能行 也会造成操作不方便 比如我双击一个文件夹应该判断为打开呢 还是选择并添加呢?留名等高人出一个完美的解决方案 回复 3# zch11230
其实我要做的是就是选择你上图中的那4个文件(2个文件夹+2个文件)然后一起导到另外一个地方。 #include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <File.au3>
#Include <Array.au3>
#Region ### START Koda GUI section ### Form=d:\4 study\autoit\code\ctl file copying utility\form2.kxf
$Gui = GUICreate("Server File Copying Utility", 619, 590, 249, 122)
GUISetBkColor(0x99B4D1)
$ListBox1 = GUICtrlCreateListView("Name|Size", 0, 144, 289, 240)
list(@AppDataCommonDir)
$Button1 = GUICtrlCreateButton(">", 4, 87, 30, 25)
$Button2 = GUICtrlCreateButton(">>", 260, 88, 31, 25)
$Button3 = GUICtrlCreateButton("<", 565, 89, 31, 25)
$Button4 = GUICtrlCreateButton("<<", 317, 90, 32, 25)
$ListBox2 = GUICtrlCreateList("", 312, 144, 289, 240)
GUICtrlSetData(-1, "")
$Input1 = GUICtrlCreateInput("Input1", 56, 48, 233, 21)
$Input2 = GUICtrlCreateInput("Input1", 376, 48, 225, 21)
$Label1 = GUICtrlCreateLabel("System1", 8, 8, 67, 17)
$Label2 = GUICtrlCreateLabel("System2", 320, 8, 43, 17)
$Label3 = GUICtrlCreateLabel("Location", 8, 48, 45, 17)
$Label4 = GUICtrlCreateLabel("Location", 320, 48, 45, 17)
$Edit1 = GUICtrlCreateEdit("", 0, 432, 609, 129)
GUICtrlSetData(-1, "Edit1")
$Log = GUICtrlCreateLabel("Log", 0, 408, 22, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
;~ Case $Button1
;~ $Button1FileOpenDialog = FileOpenDialog('Select the Files in your server','','所有文件(*.*)',4)
EndSwitch
WEnd
;=====================Functions below=====================
Func list($dirname)
$FileList = _FileListToArray($dirname)
If UBound($FileList) <> '' Then
For $i = 1 To $FileList
If StringInStr(FileGetAttrib($FileList[$i]), 'D') Then
GUICtrlCreateListViewItem($dirname & '\' & $FileList[$i] & '||文件夹', $ListBox1)
Else
GUICtrlCreateListViewItem($dirname & '\' & $FileList[$i] & '|' & FileGetSize($dirname & '\' & $FileList[$i]) & '|?', $ListBox1)
EndIf
Next
EndIf
Endfunc ;==>list正在努力使用fileopendialog来代替要实现的功能 ,选择2个文件夹 或者2个文件然后复制到服务器的另外一个地方 回复 2# mo_shaojie
FileSelectFolder可以选择多文件夹吗?貌似不行
FileOpenDialog当选2个文件夹时也是不行的 。
或者有其他的UDF函数吗? 围观中。。 欢迎围观 {:face (125):} 这个我觉得用ListView控件应该可以实现,思路就是先要有个input作为路径数据来源,然后读取input中的那个路径,有了路径就能检索,然后将检索到的文件和文件夹显示到ListView控件中,然后在ListView控件中进行选择,ListView的扩展功能还是蛮丰富的,说不定用TreeView也行~ 回复 9# 飘云
在研究treeview 真的很多函数 好复杂
;用循环做多次选择解决
Global $FolderA
$Select = FileSelectFolder()
$i = 0
While $Select<>""
ReDim $FolderA[ $i + 1]
$FolderA[$i] = $Select
$i += 1
$Select = FileSelectFolder()
WEnd
;处理所有文件夹文件 + 选择文件到 文件数组
...
;遍历文件数组,处理某一文件
...
回复 11# _ddqs.
Redim这样不行吧 回复 12# yarsye
先全局
Global $FolderA 回复 13# _ddqs.
OK Thank you
接下来就是处理数组了
不过最好一次能搞定就好了 要不然我要选20文件夹 还得弹出来20次 感谢了,希望提供能选中某一类型文件
页:
[1]