VBGood网站全文搜索 Google

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

16、如何避免程式重复执行?(侦测是否存在前一副本,若有,则结束目前新启动的程式)
17、如何让一个 App 永远保持在最上层 ( Always on Top )
18、表单配置视窗和解析度
19、连续变量的声明 Dim a, b, c as string * 4
20、正确的除错 (Debug) 方式
16、如何避免程式重复执行?(侦测是否存在前一副本,若有,则结束目前新启动的程式)

使用者在启动程式后,有时会将程式缩小在工作列上,之后要用时,又会重新启动一次程式,资料库程式有时会因此造成资料错乱!若您不希望使用者重复启动程式,您可以使用 APP 物件来判断,方法如下:

Private Sub Form_Load()
If App.PrevInstance Then 注释:检视前一版本
MsgBox "此程式已经在执行中!", 48
End
End If
End Sub

17、如何让一个 App 永远保持在最上层 ( Always on Top )

请在声明区中加入以下声明

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Const SWP_NOMOVE = &H2 注释:不更动目前视窗位置
Const SWP_NOSIZE = &H1 注释:不更动目前视窗大小
Const HWND_TOPMOST = -1 注释:设定为最上层
Const HWND_NOTOPMOST = -2 注释:取消最上层设定
Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE

注释:将 APP 视窗设定成永远保持在最上层
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS

注释:取消最上层设定
SetWindowPos Me.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS

18、表单配置视窗和解析度

这个地方不是要告诉您如何写出一支程式,会自动根据使用者荧幕的解析度调整 Form 及各控制项的大小,也就是适用于各种解析度的程式。那是另一个主题!

由于我在集团式的公司资讯中心上班,在我的开发过程中,我的使用者依不同公司别,分成几个族群,有的公司都是使用 640x480 的解析度,有的都用 800x600,设计公司则是 1024x768,为了替这些公司开发软件,在 VB5.0 以前,写各家公司的程式以前就必须先调整荧幕的解析度 (否则在解析度 800x600 的电脑上开发的程式,在 640x480 解析度的电脑中执行时,右方和下方的画面会跑出荧幕外面),有的电脑一改变解析度就必须重新开机,更是麻烦!

VB5.0 以后,VB 多提供了一个功能,就是【表单配置视窗】,从此以后,您可以在高解析度的荧幕中,开发低解析度的程式,要怎么做呢? 《假设您的电脑解析度是 1024x768》

很简单!在【表单配置视窗】上的荧幕上按滑数右键,选择【解析度】。看到了吗!在【表单配置视窗】上的荧幕上,出现了二个虚线框,上面各标明了 640x480 及 800x600。好了!现在您可以开始开发各种不同解析度的系统了!

例如您要开发的系统,解析度是 640x480,您只要注意不要让您的表单超出 640x480 的虚线框就可以了!

19、连续变量的声明 Dim a, b, c as string * 4

我想声明 a,b,c 三个字串变量

Dim a, b, c as string * 4 (错的)

这样的声明在 VB 中,结果可能和您要的不同!
有些程式语言,例如 C,类似以上的声明表示三个字串变量。
但是在 VB 中却不是如此!

以上的声明在 VB 中表示声明了 a,b 2 个 variant (不定形态变量),以及 c 这个字串变量。

要声明 a,b,c 三个字串变量,正确的写法如下:

Dim a as string * 4
Dim b as string * 4
Dim c as string * 4

若想写在同一行,也可以,写法如下:

Dim a as string * 4, b as string * 4, c as string * 4

20、正确的除错 (Debug) 方式

当程式执行起来怪怪的,很多人在除错 (Debug) 时,都喜欢在程式中使用中断点 (Break) 加上 MsgBox 来看执行结果,但有些时候,这样子的作法会造成某些事件 (Event) 无法触发,甚至改变事件原来触发的顺序!

比较正确的作法是在程式中使用 Debug.Print "事件名称/要显示的讯息" ,而不要用中断点 (Break)。