开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7512|回复: 28
收起左侧

[易源码分享] 通用对话框[多选对话框]系统对话框

[复制链接]

结帖率:100% (4/4)
发表于 2016-10-19 14:57:47 | 显示全部楼层 |阅读模式   北京市北京市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 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, 下载次数: 281)

评分

参与人数 1好评 +1 精币 +5 收起 理由
冰点 + 1 + 5 支持开源~!感谢分享

查看全部评分


结帖率:85% (11/13)

签到天数: 24 天

发表于 2024-8-19 13:35:10 | 显示全部楼层   广东省广州市
谢谢分享!
回复 支持 反对

使用道具 举报

签到天数: 9 天

发表于 2024-4-20 17:06:00 | 显示全部楼层   江苏省徐州市
多谢分享
回复 支持 反对

使用道具 举报

发表于 2024-2-26 02:26:57 | 显示全部楼层   重庆市重庆市
多开文件夹 可以调吗   你这个是打开文件和 保存文件
回复 支持 反对

使用道具 举报

发表于 2024-2-26 02:24:59 | 显示全部楼层   重庆市重庆市
好像不能直接选择文件夹
回复 支持 反对

使用道具 举报

发表于 2024-2-20 17:45:32 | 显示全部楼层   泛播地址
源码非原创源码非原创
回复 支持 反对

使用道具 举报

发表于 2024-2-20 17:45:12 | 显示全部楼层   泛播地址
源码非原创
回复 支持 反对

使用道具 举报

发表于 2024-1-19 15:08:11 | 显示全部楼层   广东省广州市
能写个判断对话框里选的是什么类型后缀吗?
回复 支持 反对

使用道具 举报

发表于 2024-1-19 14:47:33 | 显示全部楼层   广东省广州市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)
发表于 2024-1-6 17:00:54 | 显示全部楼层   重庆市重庆市
研究一下
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 2023-12-14 09:35:35 | 显示全部楼层   云南省临沧市
学习一下,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表