上传附件界面设计

本文介绍了如何在Delphi中扩展TListView控件以支持文件拖放,通过设置DragAcceptFiles并处理WM_DROPFILES消息来接收文件。同时,讲解了SHFileOperation函数的使用,用于执行文件的移动、复制、删除和重命名等操作。通过示例代码展示了如何在Delphi中实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在完成出警信息界面设计后再思考如何方便的上传办案资料,采用Tlistview显示已经上传的附件,采用拖动的方法以及打开opendialg方法可以选择多个文件,得到这组文件的文件名等信息,现在的问题是如何像资源管理器一样显示上传的附件,做到类似邮件客户端foxmail的效果?这个(1.上传附件后正确的显示)完成以后就是扩展inquestinfoex表,给一个二进制子段以存储图片附件信息,然后基本上客户端上上传及查看附件功能已经完成。3问题就是如何将附件刻录到光盘中?光盘刻录的是讯问,难道要附件与讯问关联。今天我参考了批处理常用命令,mssqlserver常用系统存储过程,opendialg使用总结,文件拖动总结,listview使用总结,现将几篇较好的文章装载如下:

delphi组件] TOpenDialog 用于显示一个“文件选择”对话框

打开对话框组件(TOpenDialog)TOpenDialog组件用于显示一个“文件选择”对话框,俗称打开对话框。它显示时,在一个列表框中显示当前目录下的所有文件名,用户通过鼠标或键盘,指定其中一个文件名,单击“OK”按钮,就完成了选择文件的操作。

1.TOpenDialog组件的典型用法

“打开”对话框是用TOpenDialog组件实现的,TOpenDialog组件是非可视组件。
Filter属性用于设置文件过滤器,让对话框只列出特定类型的文件。在设计时可以单击Filter属性旁的省略号“.”按钮,打开“Filter.Editor”对话框,在“Filter.Name”栏键入关于过滤器的简短说明,在“Filter”栏键入通配符,在设计期,把“打开”对话框组件加到窗体上,看到的是TOpenDialog组件的图标,只有调用对话框的Execute方法,才能在运行期看到真正的对话框。

2.TOpenDialog组件的重要属性

DefaultExt-------------此属性用于指定一个默认的扩展名
FileName---------------此属性用于指定一个文件名
Files------------------通过此属性可以访问多个文件
Filter-----------------此属性用于设置文件过滤器
FilterIndex------------此属性用于指定哪个过滤器是默认过滤器
InitialDir-------------设置此属性可以指定另外一个目录
Options----------------此属性用于设置“打开”对话框的选项
Title------------------此属性用于设置对话框的标题

(1)DefaultExt属性
此属性用于指定一个默认的扩展名。如果用户在对话框中选择的文件没有带扩展名,就用这个属性作为文件的扩展名,如果不需要默认扩展名,应当把这个属性设为空。

(2)FileName属性
FileName属性可以指定一个文件名。在打开对话框时,这个文件名出现在对话框的“文件名”框中。在对话框中,可以指定其他文件名,如果单击“OK”按钮,对话框将关闭,并且FileName属性变成用户新指定的文件名,包括文件的路径和扩展名。FileName属性也可以指定一个不存在的文件名,表示将打开一个新文件。

(3)Files属性
如果Options属性包含ofAllowMultiSelect元素,表示允许一次选择多个文件,这些文件可以通过Files属性访问。Files属性是一个TStrings对象。

(4)Filter属性
此属性用于设置文件过滤器,让对话框只列出特定类型的文件。在设计时,可以单击 Filter属性旁的“...”按钮,打开“Filter Editor”对话框,在“Filter Name”栏键入关于过滤器的简短说明,在“Filter”栏键入通配符,例如通配符“*.txt”表示让对话框只显示扩展名为.txt的文件。当然,用户可以在“打开”对话框的“文件名”框内直接输入一个扩展名不为 .txt文件名的文件。同时,Filter属性可以设置多个过滤器,这些过滤器将显示在“打开”对话框的“文件类型”组合框内。

(5)FilterIndex属性
如果有多个过滤器,这个属性用于指定哪个过滤器是默认过滤器。默认过滤器将显示在“打开”对话框的“文件类型”组合框的编辑框中。注意,过滤器的序号从1开始。

(6)InitialDir属性
此属性用于设置打开对话框第1次打开时的默认打开目录。例如要将打开对话框的默认打开目录设置为C盘根目录,就可以将InitialDir属性设置为“C:/”。

(7)Options属性
此属性用于设置“打开”对话框的选项。它设定了如下16个用户可选值。
. ofAllowMultiSelect:用户可以一次选择多个文件。
. ofCreatePrompt:如果用户输入的文件名是不存在的,当用户单击“OK”按钮时,将显示一个提示框,询问要不要建立这个文件。
. ofExtensionDifferent:如果用户所选文件的扩展名与DefaultExt属性设置的默认扩展名不同,就包含这个元素。
. ofFileMustExist:用户输入的文件名必须是已存在的。
. ofHideReadOnly:对话框中不显示“以只读方式打开”复选框。
. ofNoChangeDir:即使用户在对话框中选择了其他目录,但对程序来说,当前目录总是对话框第一次打开时的目录。
. ofNoDereferenceLinks:如果用户选择的是快捷方式文件(.lnk),FileName属性是快捷方式文件本身,而不是快捷文件指向的文件。
. ofNoLongNames:不允许长文件名。
. ofNoReadOnlyReturn:不允许用户选择只读的文件,否则将显示一个警告框。
. ofNoTestFileCreate:保存文件时不进行写保护、磁盘满、驱动器门打开等检查。
. ofNoValidate:不对文件名中的字符进行合法性检查。
. ofOverwritePrompt:用于“另存为”对话框中,如果用户指定的文件名已存在,将显示一个警告框用来让用户选择是否要覆盖已有的文件。
. ofPathMustExist:用户输入的路径必须是已经存在的,否则将显示警告。
. ofReadOnly:选中“以只读方式打开”复选框。
. ofShareAware:对话框不理会所有的共享错误。
. ofShowHelp:对话框中将显示“帮助”按钮。

(8)Title属性
此属性用于设置对话框显示时的窗口标题。例如大多数据库程序都有还原数据库功能,其打开对话框的标题就可以设置为“打开还原文件”。

3.TOpenDialog组件的重要事件

OnCanClose----------当用户试图关闭对话框时将触发这个事件
OnFolderChange------当用户在对话框中改变、扩展或折叠了一个目录(也叫文件夹),将触发该事件
OnSelectionChange---当用户打开对话框、选择某个目录或文件、选择另一个过滤器、建立一个新的目录时将触
发这个事件
OnShow--------------当对话框调用Execute方法、并且对话框还未显示时触发此事件
OnTypeChange--------当用户在对话框中选择了另一个过滤器时,将发生这个事件

(1)OnCanClose事件
当用户试图关闭对话框时将触发这个事件。这样就有机会对用户输入的文件名进行检查。如果文件名不符合要求,就把CanClose参数设为False,表示不允许关闭对话框。

(2)OnFolderChange事件
当用户在对话框中改变、扩展或折叠了一个目录(文件夹),将触发该事件。在程序中可以利用此事件获取用户浏览过的目录。

(3)OnSelectionChange事件
当用户打开对话框、选择某个目录或文件、选择另一个过滤器或建立一个新的目录时将触发这个事件。
OnSelectionChange事件与OnFolderChange事件相比触发的概率比较高。

(4)OnTypeChange事件
当用户在对话框中选择了另一个过滤器时,将触发这个事件。在此事件中结合FilterIndex属性的使用,可以获取当前对话。

4.TOpenDialog组件的重要方法

TOpenDialog组件最重要的方法就是Execute方法。此方法能够显示对话框,以供用户设置文件路径及文件名。其使用方法如下:
OpenDialog1.Execute;

Delphi中实现让TListView接收文件拖放

在使用Delphi开发应用程序时常常要使用到TListView列表视控件,但是仅仅使用TListView的原有属性、方法和事件是不够的,常常需要在程序开发过程中对列表视的功能进行扩展,

比如对列表视添加任意列组合排序、ListItem拖动、CustomDraw自绘制、加入背景图等功能,由此可见Delphi自带的TListView列表视控件功能有限,并不让人感到满意。为了让列表视具有更多的功能,我们只有求助于第三方控件,或者自己编写代码对TListView进行改造。

最近我在用Delphi开发一个应用软件的过程中,需要实现让TListView列表视可接收资源管理器或文件管理器文件拖放,并将接收到的文件名和路径显示在TListView列表视中的功能,一下子找不到可以实现此功能的第三方控件,于是便摸索着自己写代码实现了该功能。现将该功能的实现方法整理出来,方便大家以后在工作当中需要使用到类似的功能时做为参考。

一、编程思路

Windows应用程序下实现接收文件的方式是这样的:首先应用程序需要使用VOID DragAcceptFiles(HWND hWnd, BOOL fAccept)函数声明该应用程序中的窗口或控件的句柄可以接受资源管理器或文件管理器发送的WM_DROPFILES消息,窗口或控件的句柄由DragAcceptFiles()参数的hWnd指定,并相应的在应用程序中增加对WM_DROPFILES消息进行处理的代码;当应用程序(准确的说是调用DragAcceptFiles()函数时在参数hWnd中指定的句柄所对应的窗口或控件)接收到WM_DROPFILES消息时,应用程序调用DragQueryFile、DragFinish, DragQueryPoint这三个函数对接收到的消息进行处理,关于这几个函数的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值