VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - VB问题全功略(39)
发表评论(0)作者:不详, 平台:VB6.0+Win98, 阅读:10330, 日期:2002-02-02
VB问题全功略(39)

191、一个快速注册 DLL 及 OCX 的方法
192、如何在程序中设定打印机的打印方向?
193、如何更改在 VB 编辑环境中文件存取的预设路径?
194、如何抓出 Access 的 Table 栏位中的【叙述】部份呢?
195、如何叫出 IP 组态视窗?

191、一个快速注册 DLL 及 OCX 的方法

有时候我们在 VB 中要引用某一个 DLL 或 OCX 时,会出现文件未注册的讯息,这时,我们可以使用人工注册的方法,也就是直接在命令列中使用 regsvr32.exe 来做,做法如下:

文件注册:C:\Windows\System\Regsvr32.exe C:\Windows\System\Test.ocx
取消注册:C:\Windows\System\Regsvr32.exe /u C:\Windows\System\Test.ocx

这些动作我们也可以直接写到程序中,使用 Shell 来执行,但是我现在要说的,都不是上面提到的方法!

注意看罗!方法如下:

1、在资源管理器中找到 C:\Windows\System\Regsvr32.exe 并【复制】 ( 按鼠标右键选复制 )
2、将目录移到 C:\Windows\SendTo 后,执行【贴上快捷方式】 ( 按鼠标右键选贴上快捷方式 )
3、将快捷方式名称改成【REGISTER】
4、OK

现在,如果您想替某一个文件做注册动作,例如:C:\Windows\System\Test.ocx,您只要打开资源管理器,找到 C:\Windows\System\Test.ocx,按鼠标右键选【传送到】【REGISTER】即可完成注册动作了!

注:有一个地方要注意的是,Regsvr32.exe 只能注册 32 位的文件!如果要用它来注册 16 位的文件,会有错误讯息产生。

192、如何在程序中设定打印机的打印方向?

当您在使用 VB6 中的 DataReport 时,有没有遇到过一种情形:系统设定的打印机打印方向预设是直印,而您的报表却是横式的,但是您却无法更改印表机的打印方向,除非您到控制台的打印机中去更改预设为横印!

如果您不希望使用者自行去更改打印机的设定,您就必须在程序中帮他设定好,以下的模组文件 Orient.bas 就是用来设定打印机的直印或横印的,说明如下:

Sub ChngPrinterOrientationLandscape(ByVal frm As Form):设定为直印
Sub ChngPrinterOrientationPortrait(ByVal frm As Form):设定为横印

在程序中使用方式如下:

1、设定为直印:ChngPrinterOrientationPortrait Me
2、设定为横印:ChngPrinterOrientationLandscape Me

193、如何更改在 VB 编辑环境中文件存取的预设路径?

我开发系统时,会将所有系统的原始程序码存放在固定的目录下,例如 c:\work,而各系统的目录就是:

人事系统:c:\work\employee
会计系统:c:\work\account
销售系统:c:\work\sale

所以我会希望在 VB 的编辑环境中,每次做开档、存档时的预设路径是 c:\work,但是 VB 预设的路径却不是如此,通常预设路径就是系统安装的路径,如下:〈指安装时不异动预设路径时〉

VB版本 预设开档、存档的预设路径
VB3: C:\VB
VB4-16: C:\VB4
VB4-32: C:\Program Files\Microsoft Visual Basic
VB5: C:\Program Files\DevStudio\VB
VB6: C:\Program Files\Microsoft Visual Studio\VB98

通常我们都不会直接将文件存在这些目录下,但是您每次开档、存档它总是停在那儿,然后您才开始重新更改目录到您要的路径上,才能存档或开档,这让人有点厌烦,如果您要让预设路径停在某一个您指定的路径,例如 c:\work,作法如下:

1.找到启动 VB 的快捷方式,可能在【开始】【程序集】中或在桌面上! (注一)
2.在快捷方式上按鼠标右键,选【内容】,出现内容问话框。
3.选择第二个页签,就是【快捷方式】页签。
4.将【开始位置】栏之路径改成您要的路径,就 OK 了!


更改完毕之后,下一次您在 VB 编辑环境中,要做开档、存档时的预设路径就是您自己设定的路径了!

注一:找到启动 VB 的快捷方式档的方法如下:
1.如果快捷方式在桌面上,您直接做以上的 4 个动作即可。
2.如果快捷方式是在【开始】【程序集】中,则它们的位置是在 c:\windows\Start Menu 之中。(注二)

注二:要找 c:\windows\Start Menu 之中的快捷方式,有二个方法:
1.直接由资源管理器找到 c:\windows\Start Menu 的目录,再找寻快捷方式。
2.在任务栏上空白处按鼠标右键,选【属性】,出现【任务栏属性】问话框。选择【开始菜单栏】页签,按下【进阶】按钮,会出现【资源管理器--Start Menu】,就可以找到快捷方式档了。
194、如何抓出 Access 的 Table 栏位中的【叙述】部份呢?

不知道大家是否使用过 Microsoft Office 的 Access 来打印过 Access 资料库的文件架构?也就是 Access 的【文件产生器】。如果您没有使用过,现在可以试看看!在 Access 的 Menu 中选择【工具】【分析】【文件产生器】,稍待一会儿就会出现【文件产生器】视窗。

将资料库文件架构印出来,可以方便我们在程序设计时对于资料库的存取,及资料库栏位的比对。不过 Access 虽然有中文版,但是它终究是国外的人开发的产品,我在使用时,就一直有个麻烦,那就是在简式打印时,它对于每一个栏位,只会打印出栏位名称、资料类型及栏位大小。 (缺【叙述】的中文说明)

如果您在设计 Table 时,使用中文为栏位名称,那就没有问题,每一个栏位,只要打印出栏位名称、资料类型及栏位大小就够了,不过据我所知,由于习惯及其他因素(例如: 和其他不同类型的资料库做转移,像 Oracle/SQLServer),许多人还是使用英文来命名栏位,然后在【叙述】中输入中文说明,那样的话【文件产生器】产生的文件就有点不符合 求了,因为它不会印出【叙述】的中文部份!

既然【文件产生器】不太符合某些人的实际需求,而又不想自己做文件,那就只能自己写程序来做了!要如何抓出 Access 的 Table 栏位中的【叙述】部份呢?

以下是一个实际范例,您只要在 Form 中放一个 CommandButton (Command1) 即可:

Dim db As Database

注释:以下 Function  要二个参数,sTable 是 Table 名称,sField 是栏位名称
Function Getdescription(sTable As String, sField As String) As String
Dim Sna As Recordset
Dim i As Integer
Dim existDescr As Boolean

Set Sna = db.OpenRecordset(sTable, dbOpenTable)
existDescr = False
For i = 0 To Sna(sField).Properties.Count - 1
If Sna(sField).Properties(i).Name = "Description" Then
existDescr = True: Exit For
End If
Next

If existDescr Then
Getdescription = Sna(sField).Properties("Description")
Else
Getdescription = ""
End If
End Function

Private Sub Command1_Click()
Dim x As String
MsgBox Getdescription("AABLE_L", "AABLE_LNO")
End Sub

Private Sub Form_Load()
Set db = opendatabase("c:\hris\ability.mdb") 注释:资料库
End Sub

195、如何叫出 IP 组态视窗?

有人会说,这些资料直接进到【控制面板】的【网路】不是就可以看到了吗?没错,都可以看得到,但是很多公司在替使用者做完网路设定之后,怕使用者进去乱改,造成内部网路连线的问题,都会将控制面板中的部份项目锁定或移除 (使用 System Policy Editor)!其实也不要乱改,不知道各位有没有发现?每次您进到【控制面板】的【网路】中去看一些设定之后,您若按下【确定】按钮,即使您没有更改任何东西,Win95/98 也会重新安装驱动程序,它会要求您放入光碟,这样子有时候就会造成问题!所以每次我看完网路设定之后,总是按【取消】按钮来退出控制面板!

其实 Windows 还有提供一支程序可以让我们看到这些配接卡、网路卡的 IP 设定!那就是 WINIPCFG.EXE。所以只要以下的程序码就可以了:

Private Sub Command1_Click()
Shell "c:\WINDOWS\WINIPCFG.EXE", 1
End Sub