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

VB问题全功略(6)

上一页(6)下一页

26、如何快速设定 Form 上所有控制项的 TabIndex 顺序
27、Boolean 值的转换
28、呼叫子程序(Subroutine)
29、输入时,自动转换成大写?
30、输入时,自动转换成小写?

26、如何快速设定 Form 上所有控制项的 TabIndex 顺序

由于在设计 Form 上的控制项时,不一定会依照输入的顺序,在完成设计之后,我们通常会重设各控制项的 TabIndex 顺序,当 Form 上的控制项比较多时,设定起来相当麻烦,常常还会设错。

有一个很简单又不容易出错的方法,是从画面上的右下角往左上角 (方向是先向左再往上),逐一的将控制项的 TabIndex 属性设成 0。
1:右手用滑鼠点一下右下角的控制项,左手按 F4,将 TabIndex 设成 0。
2:右手往左用滑鼠点一下倒数第二个控制项,左手按 F4,左手按 0。
3:右手往左用滑鼠点一下倒数第三个控制项,左手按 F4,左手按 0。
4:重复以上动作直到左上角第一个控制项为止。

好了,您已经设定好整个 Form 上所有控制项的 TabIndex 顺序了!其原理就是当您设定一个控制项的 TabIndex 为 0 时,原来 TabIndex 为 0 的控制项,TabIndex 就变成了 1、而 1 的变成 2...依序 +1 改变。

27、Boolean 值的转换

我们都知道 Boolean 这个资料形态只有 True/False 二种值,但是当我们要存到资料库时,我们常常会将它转成数值,您可以直接设定 True=-1 / False =0,若您必须使用函数转换,很可能会用 Val(),但是小心,其结果是错的!

您必须使用 Abs() 或 CInt(),为什么呢?看结果就知道了!

Val(True) 结果是 0

CInt(True) 结果是 -1

Abs(True) 结果是 1

28、呼叫子程序(Subroutine)

当我们呼叫子程序 (Subroutine) 时,有二种方法:
1、Call MyRoutine(参数)
2、MyRoutine 参数

注意第二个方法不可以使用括号 (),否则 VB 会误认为是运算子,本来应该是传址 (Reference),就会变成了传值 (Value)!看看以下的例子就知道了:

Call MyRoutine(Text1) 正确

意思是要将 Text1 这个控制项传入 MyRoutine 中,但是如果拿掉 Call 这个字,VB 传给 MyRoutine 的却变成了 Text1 的内含值了!也就是 Text1.text。

MyRoutine(Text1) 错误

MyRoutine 要的本来是一个控制项,结果却传入了一个字串,您会得到一个《type-mismatch / 资料型态不符》

29、输入时,自动转换成大写?

要自动转换大小写,很多人首先想到的一定是 UCase$ 及 LCase$,但是要使用这二个函数,一定不可以在 Key_Press 事件中使用,否则您若输入《abc》,结果却变成《CBA》,为什么呢?

因为当您输入 a 之后,UCase$ 会替您转换成 A,但是转换完后,滑鼠的游标会停在 A 的前面,您继续输入 b,变成了 bA,UCase$ 又替您转换成 BA,转换完后,滑鼠的游标又停在 BA 的前面,您继续输入 c,变成了 cBA,UCase$ 又替您转换成 CBA! 若您不相信,可以自己试试 

在 Key_Press 中正确的作法,是判断它的参数 KeyAscii !a 的 Asc 值是 97,A 的 Asc 值是 65,所以要自动将小写转成大写,写法如下:

Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii >= 97 And KeyAscii <= 122 Then
KeyAscii = KeyAscii - 32
End If

30、输入时,自动转换成小写?

要自动转换大小写,很多人首先想到的一定是 UCase$ 及 LCase$,但是要使用这二个函数,一定不可以在 Key_Press 事件中使用,否则您若输入《ABC》,结果却变成《cba》,为什么呢?

因为当您输入 A 之后,LCase$ 会替您转换成 a,但是转换完后,滑鼠的游标会停在 a 的前面,您继续输入 B,变成了 Ba,LCase$ 又替您转换成 ba,转换完后,滑鼠的游标又停在 ba 的前面,您继续输入 C,变成了 Cba,LCase$ 又替您转换成 cba! 若您不相信,可以自己试试 

在 Key_Press 中正确的作法,是判断它的参数 KeyAscii !a 的 Asc 值是 97,A 的 Asc 值是 65,所以要自动将大写转成小写,写法如下:

Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii >= 65 And KeyAscii <= 90 Then
KeyAscii = KeyAscii + 32
End If

上一页(6)下一页