yarsye 发表于 2010-12-21 10:58:49

(已解决)既选择文件夹又选择文件?把FileSelectFolder和FileOpenDialog结合起来?

本帖最后由 yarsye 于 2011-1-4 13:04 编辑

想实现这样的功能:
1.可以多选文件夹。
2.可以多选文件。
3.可以同时实现2和1.

当用FileSelectFolder时,只会返回单个文件夹位置,不能多选。
当用FileOpenDialog时,可以实现表面上多选文件夹但是却不能真正多选,当选择2个文件夹时,点击打开,就进入另外一个文件夹里面去了。选择2个文件是OK的,返回路径中间有个‘|’分开的。

可以实现这复杂的功能吗?

已解决:换个思路走了

mo_shaojie 发表于 2010-12-21 12:45:21

楼主的意思是一只手拿两张刀来使用?

zch11230 发表于 2010-12-21 12:59:27

楼主是这个意思吗我觉得可能不行 因为好多类似的软件不行 就算是能行 也会造成操作不方便 比如我双击一个文件夹应该判断为打开呢 还是选择并添加呢?留名等高人出一个完美的解决方案

yarsye 发表于 2010-12-21 13:08:56

回复 3# zch11230


    其实我要做的是就是选择你上图中的那4个文件(2个文件夹+2个文件)然后一起导到另外一个地方。

yarsye 发表于 2010-12-21 13:11:58

#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个文件然后复制到服务器的另外一个地方

yarsye 发表于 2010-12-21 13:23:21

回复 2# mo_shaojie


    FileSelectFolder可以选择多文件夹吗?貌似不行
FileOpenDialog当选2个文件夹时也是不行的 。
或者有其他的UDF函数吗?

lsqyx528 发表于 2010-12-21 14:06:12

围观中。。

yarsye 发表于 2010-12-21 14:10:44

欢迎围观 {:face (125):}

飘云 发表于 2010-12-21 14:54:42

这个我觉得用ListView控件应该可以实现,思路就是先要有个input作为路径数据来源,然后读取input中的那个路径,有了路径就能检索,然后将检索到的文件和文件夹显示到ListView控件中,然后在ListView控件中进行选择,ListView的扩展功能还是蛮丰富的,说不定用TreeView也行~

yarsye 发表于 2010-12-21 20:41:43

回复 9# 飘云


    在研究treeview 真的很多函数 好复杂

_ddqs. 发表于 2010-12-21 21:28:26


;用循环做多次选择解决
Global $FolderA

$Select = FileSelectFolder()
$i = 0
While $Select<>""
       
        ReDim $FolderA[ $i + 1]
        $FolderA[$i] = $Select
        $i += 1
        $Select = FileSelectFolder()
       
WEnd


;处理所有文件夹文件 + 选择文件到 文件数组

...

;遍历文件数组,处理某一文件

...


yarsye 发表于 2010-12-22 11:35:00

回复 11# _ddqs.


    Redim这样不行吧

_ddqs. 发表于 2010-12-22 11:45:28

回复 12# yarsye


先全局
    Global $FolderA

yarsye 发表于 2010-12-22 12:06:45

回复 13# _ddqs.


    OK Thank you

接下来就是处理数组了

不过最好一次能搞定就好了 要不然我要选20文件夹 还得弹出来20次

wwwmhk 发表于 2015-1-5 11:49:52

感谢了,希望提供能选中某一类型文件
页: [1]
查看完整版本: (已解决)既选择文件夹又选择文件?把FileSelectFolder和FileOpenDialog结合起来?