VB编程问与答

Author: 李惠萍 Date: 1998年 第46期 13版

#1  1.如何让文本框只接受数字?
  答:使用如下代码,在文本框的按键事件中加入:
  Private Sub Text1_KeyPress(KeyAscii As Integer)
  ′KeyAscii 32以下是一些控制键。
  If KeyAscii>=33 Then
  If KeyAscii<=vbKey9 And KeyAscii>=vbKey0 Then
  Else
  ′把KeyAscii设为0就是取消输入。
  KeyAscii=0
  MsgBox ″不要输入数字!″
  End If
  End If
  End Sub
#1  注意:KeyAscii键值与KeyCode相同,我们可以查看KeyCode值,不过有些Keycode键值必须在KeyDown和KeyUp中才有效,在KeyPress的KeyAscii中没用。利用KeyAscii=0的方式在KeyPress中有用,但在KeyDown中让KeyCode=0就不行了。
#1  2.VB中的进制转换是怎样的?
  答:用函数Oct()将十进制位数转换为八进制,用Hex()将十进制位数转换为十六进制,不过值得注意的是转换后数字型变为字符型。如果是一个变量我们可以用如下代码完成十进制向其他进制转换的目的。
  dim ANum as long
  ANum=&O10 ′&O是八进制的表示符号ANum自行转换为8。
  ANum=&HA ′&H是十六进制的表示符号ANum自行转换为10。
  如果我们有一个字符变量Astring为八进制的或十六进制的,用ANum=″&O″+Astring和ANum=″&H″+Astring能将它转换为十进制。
  VB中我没有找到二进制的转换函数,用如下代码可以实现十进制到二进制的转换。
  Option Explicit
  Private Function TenturnTwo(ByVal varNum As Long)
  Dim returnString As String, ModNum As Integer
  Do While varNum>0
  ModNum=varNum Mod 2
  varNum=varNum\2
  returnString=Trim(Str(ModNum))+returnString
  Loop
  TenturnTwo=returnString
  End Function
  Private Function TwoturnTen(ByVal varString As String)
  Dim SLen As Long,I As Long,returnNum As Long
  SLen=Len(varString)
  For I=0 To SLen-1
  returnNum=returnNum+Val(Mid(varString,I+1,1))*(2^(SLen-I-1))
  Next
  TwoturnTen=returnNum
  End Function 
#1  3.在VB5.0下,如何用程序改变中文与英文的输入方式?
  答:VB5.0在可以输入文字的地方(如TextBox,ListBox,ComBox...等)有一个输入法切换属性IMEMode。我们可以先用ImeStatus函数来检测当前的输入状态,并用IMEMode来控制其输入状态。
  下面是IMEMode的属性值。
  Text1.IMEMode=0(预定值)
  Text1.IMEMode=1(切换为中文输入)
  Text1.IMEMode=2(切换为英文输入)
  Text1.IMEMode=3(关闭中文输入的功能,也就是只能做英文输入。)