您的位置:寻梦网首页编程乐园VB 编程乐园VB问题全功略

VB问题全功略(63

上一页63下一页

311、如何让 VB 编辑环境文件存取的预设路径依项目不同而自动调整?
312、您知道 Debug 物件的 Assert Method 吗?
313、如何使用键盘移动控制项或改变控制项的大小?
314、如何快速移除项目中没有用到的元素?
315、如何知道磁盘机是使用那一种文系统?

311、如何让 VB 编辑环境文件存取的预设路径依项目不同而自动调整?

在【问题: 如何更改在 VB 编辑环境中文件存取的预设路径?】中,我告诉大家如何让各版本的 VB,在编辑环境中的的预设文件存取路径,由 VB.EXE 所在的路径,改成您自己设定的路径,例如 c:\work,但是有人和我反应,他们各系统的项目的目录是:
人事系统:c:\work\employee
会计系统:c:\work\account
销售系统:c:\work\sale

虽然将路径改成 c:\work 已经比原来的状况好一点了,但是,像人事系统,它的路径是 c:\work\employee,所以,当您选择 VB 的 Menu 选单中的开启或存文件时,它的路径会自动跳到 c:\work,您还是要再往下开启 employee 这个目录,才是您真正要存取文件的路径。如果在开启这个项目时,它的预设文件存取路径能自动设成 c:\work\employee 的话,就更完美了!

我们能够做到当我开启某一个 VB 的项目后,每次我存取文件的路径,就设定成该项目所在的路径吗?答案是:可以的!要如何做呢?

以上面我们提到的人事系统为例,它的路径是 c:\work\employee,项目文件名是 employee.vbp,步骤如下:

1、请开启文件总管,找到 c:\work\employee\employee.vbp。
2、在 employee.vbp 上按鼠标右键,出现下拉选单。
3、在选单中选取【建立快捷方式】,产生快捷方式文件,假设命名为【人事系统项目】。

好了,下一次当您要编辑 employee.vbp 时,您不必先启动 VB 了,您只要直接开启您所建立的命名为【人事系统项目】的快捷方式文件,它就会直接帮您开启 VB、载入 employee.vbp,而且当您要开文件或存文件时,它的预设路径就是 c:\work\employee 了。

注意事项:

1、您可以将您建立的快捷方式文件拉到桌面上,以方便使用,若您负责 5 个项目,就放 5 个快捷方式文件在桌面上。
2、记得要由快捷方式文件启动 VB 才有效!

为什么经过以上的设定之后就可以达到言个效果呢?

请您在您所建立的快捷方式文件上按鼠标右键,出现下拉选单,选择【内容】,会出现快捷方式问话框。
请选择其中第二页【快捷方式】页,看看它的开始位置,以上面的人事系统为例,是 c:\work\employee,它就是您在 VB 编辑环境中开文件存文件的预设路径!

312、您知道 Debug 物件的 Assert Method 吗?

我们都知道,在我们开发系统时,如果您想追踪某一个变数值、程序流程或参数传递....等,我们可以在程序中设中断点,要设定中断点有二个方法:

1、可以在想停顿的程序码上按 F9,例如在下图中的 Me.Caption = 'Test' 上按 F9。
2、直接在下图中 Me.Caption = 'Test' 左方的灰色地带用鼠标点一下。

设定中断点后,程序码的底色会改变,例如下面的中断点为红色底,且程序左方的灰色地带会出现一个类似圆形的不规则图形,例如下图中 Me.Caption = 'Test' 左方有一红色圆点!


在 Design Time 执行程序时,若遇到中断点,程序会暂停执行且出现即时运算视窗,我们就可以在程序中运用 Debug.print 来显示一些我们想看到的变数值或其他资料,当然也可以直接在即时运算视窗中用 ? 来看资料,例如上面图片中的 ?me.Caption 就是一个例子!

不过设定中断点有以下几个缺点:

1、每次重新开启项目就要设定一次!
2、每次程序执行到中断点都会停下来,如果中断点是在回圈中,而且回圈数很多的话,就很累人了!
  因为您可能只是希望它在某些情况下才停下来让您 Debug 而已。

在 VB5.0 之后,Debug 物件多提供了一个 Method 叫做 Assert,它可以解决上面提到的问题,您只要设定一次就可以了,而且,您可以设定在什么情况下,才让程序停下来让您 Debug!

语法说明:Debug.Assert 布林运算式

当 Debug.Assert 后面的运算式运算结果为 False 时,程序才会停下来,例如:当您在存取资料库时,您希望在第 413 笔资料时下来检查,您可以这样写:

Debug.Assert MyRecords.RecNumber <> 413


当资料不是第 413 笔,条件式为 True,它就不会停下来了!上面只是举一个例子而已,在 Debug.Assert 后面您可以设定任何判断式来达到您的目的!

最后要提醒您的,是上面提到的只有在 Design Time 才有效,Make EXE 之后就没作用了!

313、如何使用键盘移动控制项或改变控制项的大小?

当您做完表单设计之后,为了怕写程序时不小心挪动表单上的控制项,很多人会将表单上的控制项做锁定,但是,一直到您程序完成之前,您可能常常需要稍微调整画面的控制项位置及控制项的大小,这时您必须先解除控制项的锁定,才能用鼠标来移动控制项或改变控制项的大小。

特别强调用鼠标的原因是,我想告诉您,其实这时候用键盘或许更方便一点,为什么呢?

在键盘的快速键中,
使用【Ctrl + 方向键】可以用来移动控制项,而
使用【Shift + 方向键】则可以用来改变控制项的大小。
它作用的原则是根据您在 VB 编辑环境中设定的格线宽度及高度!

而键盘真正比鼠标方便的地方是,就算您已经锁定表单上的控制项,上面提到的快速键还是可以使用的!

314、如何快速移除项目中没有用到的元素?

当您开发的项目愈来愈大,Form 愈来愈多时,由于在开发中或系统上线后,系统或程序的修改,当初有一些您在【项目】【设定使用元素】中设定的元素 (其实就是出现在工具箱中的控制项),可能现在在整个项目中根本已经用不到了,可是由于 Form 太多了,您已经很难检查,到底那一个元素,现在已经用不到!

这些您设定的元素,在您制作安装磁盘的时候,它的相关文件都会一迸放到安装磁盘中,所以您的安装磁盘中就会多放入一些您根本用不到的文件,而使得您要多准备好几片磁盘,才能放得下日益膨胀的安装程序!

现在有一个简单的方法,不用您自己去检查,就可以轻松的移除这些再也用不到的控制项,方法如下:

1、请先开启某一个项目。
2、打开【项目】【设定使用元素】问话框。
3、按下【Shift】键的同时,用鼠标按下【确定】按钮。

好了,就是这么简单!请检查您的工具箱,是不是有少掉一些元素了呢!

如果您想试试看,却没有项目可试,很简单,请开启一个新的项目,打开【项目】【设定使用元素】问话框,随便勾选一些项目 (勾得愈多效果愈大),您的工具箱中会多出一些控制项,请随便将其中一二个拉到表单上,代表您有使用到这几个元素。好了,现在请您按照上面的步骤做一次,当您最后按下【确定】按钮之后,您就会发现,那些您没用到的控制项,都已经从工具箱中移除了!

315、如何知道磁盘机是使用那一种文件系统?

现在硬件愈来愈好,硬盘容量愈来愈大,很多人的硬盘都采用 FAT32 的文件系统,当然还有人采用 FAT16,而 NT 则可能为 NTFS,在 VB 中我们也可以判断出来!

'在表单的声明区中加入以下的声明及模组:

Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal _
lpVolumeNameBuffer As String, ByVal _
nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, _
lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal _
lpFileSystemNameBuffer As String, ByVal _
nFileSystemNameSize As Long) As Long

Public Function WhichFileSystem(ByVal Drive As String) As String
Dim sVolBuf As String * 255
Dim sSysName As String * 255
Dim lSerialNum As Long
Dim lSysFlags As Long
Dim lComponentLength As Long
Dim lRes As Long
lRes = GetVolumeInformation(Drive, sVolBuf, 255, lSerialNum, lComponentLength, lSysFlags, sSysName, 255)
If lRes Then
WhichFileSystem = Left$(sSysName, InStr(sSysName, Chr$(0)) - 1)
Else
WhichFileSystem = "<unknown>"
End If
End Function

'在程序中要使用时,只需传入磁盘机代号即可,如下:

Msgbox WhichFileSystem("C:\")

以下是我自己的机器测试结果!

注意:

在 NT 上的光盘机 J:\,由于已经 Map 成网路磁盘机,所以侦测结果为 FAT 而不是 CDFS!

上一页63下一页