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 |