用Visual Basic编程建立自己的回收站

原创 2001年06月03日 11:34:00

 

在Windows 95中删除一个文件或文件夹,只需用鼠标拖动文件(夹)到回收站,然后松开鼠标按钮即可,这种可视化的操作给用户带来了很大方便。如果程序开发人员在自己的程序中能做到这样,在自己的程序中也增加一个和Windows中风格相同的回收站,那么开发出的程序一定会受到用户的欢迎。怎么才能完成这种操作呢?本文介绍一种使用Visual Basic编程来完成这个动作的方法。

  在Microsoft Windows资料中将按下鼠标按钮移动对象称为拖,将鼠标按钮的松开称为放。在Visual Basic中,如果项目中使用多个窗体,可以把一个图标从一个窗体拖放到另一个窗体。控件允许两种拖动,这取决于DragMode特性的两个不同的值。缺省情况是DragMode特性的值为0,除特定情况外不允许拖动控件;将这个特性的值改成1(Automatic)意味着用户可以拖动控件。

  下面介绍拖动鼠标删除文件方法的实现过程。在Visual Basic的项目中允许用户拖动代表文件的图标至处理单元,此单元相当于Windows 95中的回收站,在给出警告之后把文件从磁盘中删除。

  第一步,首先启动一个有两个窗体的项目,在启动窗体的下角加一个图片框(或图像控件),将这个控件的Picture特性设置成TRASH03.ICO文件中的图标,该文件位于Icon库的Computer子目录中。如果使用图片框,将AutoSize特性设置成True(如果选择一个图像控件,将Stretch特性设置成False)。

  第二步,建立两个控件数组,一个是控件名为FileName的标签数组,另一个名字为Files的图像控件数组。将图像控件的DragMode特性设置成1(Automatic);将Visble特性设置成False,使标签和图像控件在运行时都不可见。通常,这些控件数组中的所有后续元素都继承这些特性。

  这个项目中的大多数工作都体现在下面的DragDrop事件过程中:

  Private Sub Garbage_DragDrop(Source As Control,X As Single,Y As Single)
  ‘local variables
  Dim Msg As String
  Dim ControlIndex As Integer,YesNo As Integer
  ControlIndex=Source.Index
  Forml.FileName(ControlIndex).Visble=False
  Msg= "Do you really want to delete"+
  Forml.FileName(ControlIndex).Caption
  YesNo=MsgBox(Msg,vbYesNo, "Confirmation Box")
  If YesNo=vbYes Then
  Kill(Forml.FileName(ControlIndex).Caption)
  Unload Files(ControlIndex)
  Unload Forml.FileName(ControlIndex)
  Else
  Forml.FileName(ControlIndex).Visible=True
  Forml.File(ControlIndex).Visible=True
  End If
  End Sub

  该事件过程中的ControlIndex这一行代码找出被拖动控件的索引;接下来的两行代码使图片框和标签在放置操作后暂时不可见。ControlIndex变量让Visual Basic从标签数组中提取标题(也就是文件名)。消息框的类型为=vbYesNo,因此是个Yes/No消息框,标题是Confirmation Box。Kill命令从磁盘中删除文件。一旦程序删除了文件,就从控件数组中卸除标签和图片框。如果用户操作有误,确认的消息框返回No,则程序代码使得原来的图片框和标签再次显现。

  下一步,建立一个称为Directons的通用过程,在一个窗体上显示出给用户提供的这个应用程序所需的信息,该窗体用作一个定制对话框。

  Sub Directons ()
  Forml.Hide
  Form2.Show
  Form2.Cls
  Form1.Print "This program illustrates dragging and dropping mouse operations."
  Form2.Print "The user gives a file spec inside the message box and a form"
  Form2.Print "appears with icons labelled by all the files with that file specifcation."
  Form2.Print "The user can drag the icon to be 'flushed' away i. e. deleted."
  End Sub

  对话框上OK按钮的Click过程是:

  Private Sub btnOK-Click ()
  Me.Hide
  Form1.Show
  End Sub

  启动窗体的Form-Load 过程需要装入Directons窗体并调用显示信息的通用过程。它可以这样的:

  Private Sub Form-Load ()
  Load Form2
  Directons
  End Sub

  启动窗体上的File 菜单有以下两项:

  New File Spec

  Exit

  单击New File Spec菜单项让用户查看新的目录或驱动器。这个菜单项会调用一个通用过程GetFile,从磁盘读入文件名。

  最后,是如何处理新的文件说明。用户第一次使用这个应用程序时,Visual Basic装入两个控件数组中一定数目的元素。程序需要改变标题中所含的信息,这些标题含有要删除的文件的名字。这两个控件数组只装入一次,然后使用Dir $命令建立一个字符串,从磁盘读入住处后将这个数组中的值赋给标签的Caption特性。该程序代码要读磁盘信息两次来恰当地重新确定数组尺寸。至于菜单项,因为“N”加了下划线,用户可以按N作为激活这一项的简捷键。菜单打开后这个菜单的控件名设置成mnuNewFileSpec。这个控件的Click事件过程是:

  Private Sub mnuNewFileSpec Click
  Unload Form1
  Load Form1
  GetFile
  End Sub
  Unload Form1这个代码行清除控件数组的旧元素。GetFile 处理过程是这样的:
  Public Sub GetFile ( )
  'local variables
  Dim FileSpec As String
  Form2. Hide
  FileSpesc=InputBox$ ("File specification?")
  If FileSpesc= "" Then
  Directons
  Else
  Form1.Show
  DisplayFiles (FileSpec)
  End If
  End Sub

  在启动窗体上显示文件的详细住处包含在一个通用过程DisplayFiles中,该过程只有一个参数,该过程如下:

  Public Sub DisplayFiles (FileSpec As String)
  ‘Local variables
  Dim NameOfFile As String
  Dim ControlIndex As Integer
  Form1 .Show
  Form1.Width=8000
  Form1.Height=5500
  Form1.Garbage.Move 7000,4200 'move the garbage can icon
  NameOfFile=Dir $(FileSpec)
  If NameOfFile= " " Then
  MsgBox "No Files found with that file specification
  End If
  ControlIndex= ControlIndex +1 'start with index=1
  Do While NameOgFile<> ""
  Load Form1.Files(ControlIndex)
  Load Form1.FileName(Contro;Index)
  Column=(ControlIndex Mod 6)
  Row=(ControlIndex-1)/6
  Form1.Files(ControlIndex).Move(1300*Column)+275, 800*Row+2 'to allow for menu
  Form1.FileName(ControlIndex).Move 1300*Column, 800*(Row+1)
  Form1.Files(ControlIndex).Visible=True
  Form1.Filename(ControlIndex).Visible=True
  Form1.Filename(ControlIndex).Caption=NameOfFile
  ControlIndex= ControlIndex+1
  If ControlIndex >30 Then
  MsgBox("Too many files!")
  Exit Do
  End If
  NameOfFile=Dir$
  Loop
  End Sub

  DO循环实现将图片框及标签分隔开,分隔的间距通过用不同的值试验确定。就像控件数组中的所有新元素一样,在将Visible特性设置成True之前,它们都是不可见的。

  为了结束程序,只需将事件过程与窗体上的Quit菜单项关联,并增加一个查询Unload事件来结束程序。

  Sub mnuQuit_Click()
  Unload Form2
  Unload Me
  End Sub
  Sub Form_Unload(Cancel As Integer,Unload Mode As Integer)
  End
  End Sub

  以上程序的设计方法,介绍了怎样在Visual Basic中如何用鼠标拖动删除文件以及对文件的处理方法。程序设计通过控制鼠标的动态操作,使得用户操作时感到方便直观。如果在自己开发的的程序中能做到这些,就可以让自己的程序也会具有Windows风格。当然实现鼠标拖动删除文件方法很多,此处谈论的方法供各位同仁参考。

用Visual Basic编程建立自己的回收站

2001年02月12日 14:27:00 用Visual Basic编程建立自己的回收站http://tech.sina.com.cn 2000/09/29 软件世界 王福生 杨洪勇  在W...
  • softart
  • softart
  • 2007年10月27日 07:50
  • 321

用Visual Basic编程建立自己的回收站

用Visual Basic编程建立自己的回收站http://tech.sina.com.cn 2000/09/29  软件世界 王福生 杨洪勇  在Windows 95中删除一个文件或文件夹,只需用鼠...
  • ghj1976
  • ghj1976
  • 2001年02月12日 14:27
  • 1138

在Visual Basic编程中运用数据结构

 在Visual Basic编程中运用数据结构章新苏  (江苏省水利科学研究所材料结构室)摘要:本文讨论了在VB编程中利用数组和自定义数据类型构造链表、栈和队列等数据结构的方法。关键词:Visual ...
  • l3300
  • l3300
  • 2005年02月21日 17:11
  • 671

Visual Basic调用Windows API函数的应用举例

  • zgqtxwd
  • zgqtxwd
  • 2008年05月01日 05:24
  • 149

Visual Basic.net还是C# ——如何选择.net语言

                        Visual Basic.net还是C#                                                ——如何选择.n...
  • cyz1980
  • cyz1980
  • 2007年04月10日 09:02
  • 1424

使用Visual Basic访问数据库几个注意的问题

使用Visual Basic访问数据库几个注意的问题作者:张嵘Visual Basic 3.x For Windows是一门开发Windows应用程序很好的一种语言,使用它能够开发出大型的应用系统。它...
  • zxlkxy
  • zxlkxy
  • 2002年02月07日 18:19
  • 667

Visual Basic 的基本数据类型

VB提供了11种基本数据类型,另外也可以自定义数据类型.这11种类型分别是:Byte(字节型)、Integer(整形)、Long(长整型)、Single(单精度浮点型)、Double(双精度浮点型)、...
  • bodohacker
  • bodohacker
  • 2006年08月26日 13:47
  • 1518

同时使用 Visual Basic 6 和 Visual Basic.NET 的最佳做法

 本页内容 概述 了解 Visual Basic 6...
  • naive1010
  • naive1010
  • 2006年07月05日 19:13
  • 2759

Visual Basic快捷教程——函数与子程序

函数是结构化程序设计的基础。函数的本质就是为了把程序切分成若干个相对独立的模块各司其职,而各个函数的作用也就是仅仅专门负责自己份内的那份功能。在Visual Basic中,函数是一组以Function...
  • baimafujinji
  • baimafujinji
  • 2017年04月19日 22:30
  • 3125

使用 Visual Basic 设计 Python 的 GUI:Visual Tkinter

Visual Basic 确实比较傻瓜,GUI 拖放就能够完成。而 Python 的 GUI 开发要相对复杂一点,wxPython、PyQt 这样的库,有点重量级,自带的 tkinter 比较轻便,但...
  • tooktang
  • tooktang
  • 2013年09月03日 19:01
  • 3091
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Visual Basic编程建立自己的回收站
举报原因:
原因补充:

(最多只允许输入30个字)