用Delphi设计电子文档管理系统

技术与开发

当我们电脑上的电子文档越来越多时,要查找某一个电子文档,我们不得不在硬盘上一级一级目录的向下进行查找,这种方法不仅耗时而且很烦人。能不能通过编程用数据库技术来管理电脑上的电子文档呢?下面就来介绍如何使用Delphi7.0来编写电子文档管理系统。

一 设计思路

程序运行后,先选择相应的分类,然后打开“我的电脑”找到需要的电子文档,然后用鼠标左键拖动选中的文档至程序界面窗口,释放鼠标左键,程序获取本次鼠标拖曳操作的文档的信息,比如文件名、存放路径等,并将这些信息写入到数据库中,以备今后调用。

35-f14-02.jpg

二 代码编写

步骤1:用SQL SERVER建立一个数据库,并创建两个表Category和Book分别记录文档的分类与各分类的明细。

步骤2:在Delphi 7.0中新建一个工程,保存为Project1.dpr。在窗体中加入以下组件:TTreeView、TListView、TAdoConnection、TAdocommand。在TTreeView1的Items属性中加入表示文件分类的项目;设置TAdoConnection连接上SQL数据库,AdoCommand的connection属性设置为TAdoConnection组件。

在窗体TForm1的OnCreate事件中编写代码,关键代码如下:

procedure TForm1.FormCreate(Sender: TObject);

begin

DragAcceptFiles(Handle,True);//参数为True表示注册TForm1窗体为允许接受文件拖曳的窗体,Handle代表被注册窗体Tform1的句柄。

步骤3:因为要捕获WM_DR OPFILES消息,我们可以用覆盖TForm1父类WNDPROC的虚拟方法,仅对WM_DROPFILES消息进行处理,而其他消息交由父类的WNDP ROC处理,关键代码如下:

DragQueryFile(hDrop, Index, PFiles, MAXBYTE);//循环取得每个文件的路径并放入缓冲区PFiles

AdoCommand1.Execute;//执行插入命令

S:=ListView1.Items.Add;//在TlistView1组件中将拖拽进来的文件显示出来。

步骤4:试试看,拖曳进入程序窗体的文件是不是被记录在了TListView组件中。还剩下一个问题,那就是我们希望直接通过双击鼠标就能打开TListView组件中的文档,而不希望每次总是先打开Word再打开我们需要的文档。

其实这个功能非常简单,在我们的Delphi文件单元中引用shellapi单元,我们可以用函数shellexecute在shellapi单元进行声明。这里我们希望在TListView组件中通过双击打开文档,所以在TListView的OnDblClick事件中添加代码,其中关键代码如下:

if ListView1.Selected<>Nil then

//Handle表示父窗体的句柄,第二个参数表示操作的类型,'open'表示是执行打开操作,第三个参数是文档的路径及名称,必须是PCHAR类型,所以这里必须进行类型强制转换,第四、第五个参数可以忽略用Nil代替。第五个参数表示文档打开后窗体的显示方式,SW_SHOWN ORMAL值表示按正常模式显示文档的窗体。ShellExecute(Handle,'Open',PChar(ListView1.Selected.Cap tion),NIl,NIl,SW_SHOWNORMAL);

总结

通过这样的一个程序,使我们对平时收集的资料文件能更好的管理,不至于在寻找时打开许多窗口又花费大量时间。对那些在电脑里下载了大量资料,需要随时查阅的朋友应该有很大的帮助。

这个程序利用了Windows中的消息WM_DROPFILES,如果对Windows消息机制的原理和特点很熟悉,还可以给程序增添许多功能。

如果你想看表格和完整代码,请登录《电脑报》网站