精易论坛

标题: 通用对话框[多选对话框]系统对话框 [打印本页]

作者: NOCOL    时间: 2016-10-19 14:57
标题: 通用对话框[多选对话框]系统对话框
本帖最后由 NOCOL 于 2016-10-19 14:58 编辑
  
窗口程序集名保 留  保 留备 注
通用对话框类   
变量名类 型数组备 注
文件覆盖提示1整数型当类型为保存文件对话框时,如果用户指定了一个已经存在的文件,是否询问用户确定覆盖此文件。默认值为真。
目录必须存在1整数型是否允许用户指定一个不存在的目录。默认值为真。
不改变目录1整数型在对话框关闭后是否自动返回到进入对话框时的文件目录。默认值为假。
是否多选1整数型是否需要使用多选。默认值为假。
文件记录字节集  
打开文件打开文件名_  
创建时提示1整数型当类型为打开文件对话框时,如果用户指定了一个不存在的文件名称,是否提示用户即将创建它。默认值为假。
文件必须存在1整数型当类型为打开文件对话框时,是否允许用户指定一个不存在的文件。默认值为真。

子程序名返回值类型公开备 注
_初始化 当基于本类的对象被创建后,此方法会被自动调用
创建时提示1 = #OFN_CREATEPROMPT
文件必须存在1 = #OFN_FILEMUSTEXIST
文件覆盖提示1 = #OFN_OVERWRITEPROMPT
目录必须存在1 = #OFN_PATHMUSTEXIST
不改变目录1 = 0
是否多选1 = 0
子程序名返回值类型公开备 注
_销毁 当基于本类的对象被销毁前,此方法会被自动调用

子程序名返回值类型公开备 注
文件对话框初始化 
参数名类 型参考可空数组备 注
过滤器文本型成对使用,例如:“MP3文件(*.mp3)|*.mp3|mpg文件(*.mpg)|*.mpg”
初始过滤器整数型指定初始的过滤器,0为第一个过滤器。默认值为0。
初始目录文本型指定当打开对话框时所自动跳转到的目录。如不指定,则一般情况下默认路径为从“我的文档”开始。
默认文件后缀文本型指定当用户没有输入文件的后缀名称(扩展名)时所自动使用的文件后缀名称
创建时提示逻辑型当类型为打开文件对话框时,如果用户指定了一个不存在的文件名称,是否提示用户即将创建它。默认值为真。
文件必须存在逻辑型当类型为打开文件对话框时,是否允许用户指定一个不存在的文件。默认值为真。
文件覆盖提示逻辑型当类型为保存文件对话框时,如果用户指定了一个已经存在的文件,是否询问用户确定覆盖此文件。默认值为真。
目录必须存在逻辑型是否允许用户指定一个不存在的目录。默认值为真。
不改变目录逻辑型在对话框关闭后是否自动返回到进入对话框时的文件目录。默认值为假。
是否多选逻辑型是否需要使用文件多选。默认值为假。
打开文件.实例句柄 = 取实例句柄_ (取执行文件名 ())
打开文件.过滤器 = 子字节集替换 (到字节集 (删全部空 (过滤器)), { 124 }, { 0 }, , ){ 0 }{ 0 }
打开文件.过滤器索引 = 选择 (初始过滤器 ≤ 0, 1, 初始过滤器 + 1)
打开文件.初始目录 = 初始目录
打开文件.默认扩展名 = 默认文件后缀
如果真 (是否为空 (创建时提示))
创建时提示1 = 选择 (文件必须存在, #OFN_CREATEPROMPT, 0)
' //当类型为打开文件对话框时,如果用户指定了一个不存在的文件名称,是否提示用户即将创建它。默认值为假。

如果真 (是否为空 (文件必须存在))
文件必须存在1 = 选择 (文件必须存在, #OFN_FILEMUSTEXIST, 0)
' //当类型为打开文件对话框时,是否允许用户指定一个不存在的文件。默认值为真。

如果真 (是否为空 (文件覆盖提示))
文件覆盖提示1 = 选择 (文件覆盖提示, #OFN_OVERWRITEPROMPT, 0)
' //当类型为保存文件对话框时,如果用户指定了一个已经存在的文件,是否询问用户确定覆盖此文件。默认值为真。
如果真 (是否为空 (目录必须存在))
目录必须存在1 = 选择 (目录必须存在, #OFN_PATHMUSTEXIST, 0)
' //是否允许用户指定一个不存在的目录。默认值为真。
如果真 (是否为空 (不改变目录))
不改变目录1 = 选择 (不改变目录, #OFN_NOCHANGEDIR, 0)
' //在对话框关闭后是否自动返回到进入对话框时的文件目录。默认值为假。
如果真 (是否为空 (是否多选))
是否多选1 = 选择 (是否多选, #OFN_ALLOWMULTISELECT, 0)
' //是否需要使用文件多选。默认值为假。

子程序名返回值类型公开备 注
打开逻辑型 多选文件,返回文件路径以";"分隔。打开失败或取消返回空文本
参数名类 型参考可空数组备 注
窗口句柄整数型
类型整数型0. 打开文件;1. 保存文件
文件名文本型
对话框标题文本型对话框窗口标题
对话框样式整数型0为大框,1为小框。
变量名类 型静态数组备 注
是否成功逻辑型 
temp字节集 
文件名数组文本型0
N整数型 
所选文件文本型 
打开文件.标题 = 对话框标题
连续赋值 ({  }, 打开文件.文件名, 打开文件.文件标题, temp, 文件记录)
打开文件.窗口句柄 = 窗口句柄
如果真 (不改变目录1 = 0)
文件记录 = {  }
判断 (文件名 ≠ “”)
temp = 到字节集 (文件名)
temp = 子字节集替换 (temp, { 59 }, { 0 }, , )

temp = 文件记录
打开文件.文件名 = temp + 取空白字节集 (选择 (是否多选1 ≠ 0, 2048, 256)取字节集长度 (temp) + 1)
打开文件.文件名最大长度 = 取字节集长度 (打开文件.文件名)
打开文件.结构大小 = 76
判断 (类型 = 0)  ' 打开文件,
打开文件.标记 = 位或 ( #OFN_HIDEREADONLY, #OFN_EXPLORER, #OFN_ENABLESIZING, 创建时提示1, 文件必须存在1, 文件覆盖提示1, 目录必须存在1, 不改变目录1, 是否多选1)
如果真 (对话框样式 ≠ 0)
打开文件.标记 = 位或 (打开文件.标记, #OFN_ENABLEHOOK, #OFN_EXPLORER )
是否成功 = 取打开文件名_ (打开文件)

判断 (类型 = 1)  ' 保存文件
打开文件.标记 = 位或 ( #OFN_EXPLORER, #OFN_ENABLESIZING, 文件覆盖提示1, 目录必须存在1, 不改变目录1, 是否多选1)
是否成功 = 取保存文件名_ (打开文件)




如果真 (是否成功)
' 文件名 = 删首尾空 (取字节集数据 (打开文件.文件名, #文本型, ))
文件记录 = 打开文件.文件名
temp = 打开文件.文件名
temp = 取字节集左边 (temp, 寻找字节集 (temp, { 0, 0 }, ) - 1)
' 调试输出 (到文本 (打开文件.文件名))
判断 (寻找字节集 (temp, { 0 }, ) ≠ -1 是否多选1 = #OFN_ALLOWMULTISELECT )
文件名数组 = 分割文本 (到文本 (子字节集替换 (temp, { 0 }, { 124 }, , )), “|”, )
如果真 (取文本右边 (文件名数组 [1], 1)“\”)
文件名数组 [1] = 文件名数组 [1]“\”
计次循环首 (取数组成员数 (文件名数组) - 1, N)
判断 (取数组成员数 (文件名数组) - 1 ≠ N)
所选文件 = 所选文件 + 文件名数组 [1] + 文件名数组 [N + 1]“;”

所选文件 = 所选文件 + 文件名数组 [1] + 文件名数组 [N + 1]
处理事件 ()
计次循环尾 ()
文件名 = 所选文件
文件名 = 取字节集数据 (temp, #文本型, )

连续赋值 ({  }, 打开文件.文件名, 打开文件.文件标题, temp, 文件记录)
所选文件 = “”
清除数组 (文件名数组)
' 连续赋值 (0, 打开文件.文件名最大长度, 打开文件.文件标题最大长度)
返回 (是否成功)

部分源码,源码非原创,看到问答区有人求,论坛也没有,顺势发出来把,使用API调用系统对话框

当然,如果有好评,以后有好东西我也会发出来的哟,你们的支持就是我的动力
通用对话框含(多文件对话框).zip (4.15 KB, 下载次数: 321)


作者: 星辰Stranger    时间: 2016-10-19 15:03
路过看看~
作者: 小明无敌    时间: 2016-10-19 16:32
。。。。。。。。。好多               
作者: Conquer    时间: 2016-10-19 19:23
下载学习经验  
作者: 万物皆有定数    时间: 2016-10-20 23:12
支持开源~!感谢分享
作者: dazhujia1    时间: 2016-10-21 10:53
可以看下,感谢
作者: rongbin    时间: 2017-1-5 16:24
这个看着不错啊,试试看
作者: 孤独xiao凯    时间: 2017-1-14 21:17
部分源码,源码非原创,看到问答区有人求,论坛也没有,顺势发出来把,使用AP
作者: 胡俊德    时间: 2017-6-6 16:46
取回文件路径“”“qq:860222219

作者: 太行山搬书    时间: 2018-10-28 00:30
下载学习,学习分享
作者: dipingwei    时间: 2021-11-8 11:19
很好的例程,学习
作者: a1273822396s    时间: 2022-3-10 22:36
水水水水水水水水水水水水水水水水
作者: a1273822396s    时间: 2022-3-10 22:37
顶顶顶顶顶顶顶顶顶顶
作者: zawlxp    时间: 2022-3-27 01:21
谢谢︿( ̄︶ ̄)︿分享
作者: 凌lingy    时间: 2022-6-8 23:59
66666666666666666666666
作者: zhangkun2001    时间: 2022-6-27 08:38
可以看下,感谢
作者: 小白阿    时间: 2023-2-20 04:25
        支持开源~!感谢分享
作者: 伐木堆0    时间: 2023-8-10 19:09
谢谢大佬
作者: 5zhiwuzhi5    时间: 2023-9-5 14:47
感谢大佬分享
作者: kaizhiye    时间: 2023-12-14 09:35
学习一下,谢谢
作者: luobin800    时间: 2024-1-6 17:00
研究一下
作者: 909677836    时间: 2024-1-19 14:47
感谢分享
作者: 909677836    时间: 2024-1-19 15:08
能写个判断对话框里选的是什么类型后缀吗?

作者: tulio1688    时间: 2024-2-20 17:45
源码非原创
作者: tulio1688    时间: 2024-2-20 17:45
源码非原创源码非原创
作者: aoshiyu    时间: 2024-2-26 02:24
好像不能直接选择文件夹
作者: aoshiyu    时间: 2024-2-26 02:26
多开文件夹 可以调吗   你这个是打开文件和 保存文件
作者: amycarl    时间: 2024-4-20 17:06
多谢分享
作者: YSH5858    时间: 2024-8-19 13:35
谢谢分享!
作者: 迷你装修霸王龙    时间: 2024-10-7 17:44
感谢大佬分享!
作者: 迷你装修霸王龙    时间: 2024-10-7 17:47
最后的人
作者: guansidong    时间: 2025-3-29 00:44
支持开源~!感谢分享 查看全部评分




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4