VB编程技巧几例 点击:1264 | 回复:4



水中鱼

    
发表于:2012-01-31 14:44:05
楼主
VB编程技巧几例
 
 
1 文本框内容的自动选择。
 
    在软件安装等一些场合需要将文本框中的内容自动选择,比如选择确省安装路径,在VB中可用如下的事件驱动代码:
 
 
sub text1_getfocus()
 
text1.selstart=0 ’选择起始位置
 
text1.sellength=65000 ’选择长度
 
end sub
 
sellength接近文本框允许的最大长度(65535),这样做是为了
 
强迫VB使用文本的实际长度。
 
 
 
2 防止自身多次运行。
 
    由于WINDOWS的多任务处理功能, 有些程序可能打开后忘记了,下次用时还可能再打开,这样做会占用系统资源降低系统效率。为了防止自身被多次运行,可利用VB应用对象提供的PrevInstance属性来检测内存中是否已有一个自身的副本,若有则给出提示后结束。一般将检测代码放在FORM_LOAD()中,因为程序一运行就要检测。
 
代码如下:
 
sub form_load()
 
if App.PrevInstance then
 
msg$=App.exename & ”has already run”
 
msgbox msg$,48 ’给出程序已运行的提示和一惊叹号以示警告
 
end
 
endif
 
end sub
 
 
3 格式化输入。
 
    在数据输入过程中,有些数据要求一定的格式,比如限制输入的只能为数字或英文字符,这可用VB的格式输入文本框来实现。它与文本框(TEXT BOX)功能基本相似,但多了一个MASK属性,MASK属性常用的设定如下:
 
       #—限定仅能输入数字0~9;
       A— 限定输入为英文字符及数字;
       ?—限定仅能输入英文字符;
       .—限定小数点位置;
       :—限定时间分隔号;
       /—限定日期分隔号
 
    不需编写代码,只要在设计时将格式化文本框对象(MASKED EDIT)的MASK属性设计好所需格式即可。比如 ## - ## - ## 可输入12-11-96。
 
4 用MSGBOX函数设计版权信息。
 
    MsgBox函数可用来设计简易的版权信息,它只能显示文本,如果要求不高的话可采用它,优点是非常方便,比如在菜单ABOUT项中显示版权信息。
 
    MsgBox函数的用法如下:MsgBox msg [, [type][, title] ]
 
       msg —需要显示的文字信息,如版权信息。
       type—按钮显示选择项。
       如 0 只显示 OK按钮(确省选择),4 显示 Yes 和 No 按钮
       title—标题文字信息。
 
 
    MSGBOX最多能显示1024个字符, 超出的将被截去;它可自动换行,如果你想强制换行的话需要在换行处加入换行符CHR(10)。
 
例子:
 
Sub Form_Click ()
 
Msg1 = ” Copyright (c) 1996” & Chr(10) & ”Ver
 
1.0 ” ’分两行显示
 
MsgBox Msg1, 0, ”Copyright demo” ’只显示一个OK按钮
 
End Sub
 
 
 
使用 IIF 和 SWITCH 以精减代码
 
 
    在很多地方你都可以使用一个更紧凑的 IIf 函数来代替 If...Else...Endif 的结构: 例:返回两个值中较大的一个 maxValue = IIf(first >= second, first, second)
 
 
    Switch 则是一个很少使用的函数,可是在很多方面它都提供比 If...ElseIf 结构更好的 例:判断 "x" 是正、负还是 null?
 
        Print Switch(x<0,"负",x>0,"正", True, "Null")
 
 
 
变量的地址
 
    VB5 内置了一个 VarPtr 函数,可是此函数在 VB4 中没有提供。可是你知道吗?VB4 的运行库中已经包含了此函数。只是在用它之前,我们需要声明一下:
 
        #If Win16 Then
 
       declareFunction VarPtr Lib "VB40016.DLL" (variable As Any) As Long
 
        #Else
 
       declareFunction VarPtr Lib "VB40032.DLL" (variable As Any) As Long
 
        #End If
 
    此函数在传递一个 Type 结构(如果此结构要求其一段是另一个变量或记录的地址)给一个外部的 API 程序时十分有用。
 
 
 
 
向文件中写入非 ASCII 字符
 
 
    如何向一个文件中写入非ASCII字符(ASCII码在128-255之间)?这在 VB3 中按常规方法就可以很好处理。但是,自 VB4 起,微软引入 Unicode 后,此问题就显得有些麻烦。方法如下:
 
      Dim a As Byte ‘如果你不用 Unicode,微软推荐使用 Byte 类型替换 String 类型
 
      a=&HF5 ‘此处直接给处 ASCII 码即可
 
      Open "test.dat" For Binary As #1
 
      Put #1, , a
 
      Close (1)
 
 
VB中感叹号“!”与圆点“.”的用法差异
河北 马昱
 
 
    在Visual Basic中,惊叹号“!”与圆点“.”都用于给对象命名,但两者语法上却存在很大的区别,这点在编程时尤其需要注意。
 
    圆点操作符“.”用来表示对象的属性和方法,在引用时,需要用到对象的Name、圆点和需要的属性或方法。例如要引用文本框Textl中的文本属性时可用reponse$=Text1.Text,再如要改变Form1窗体返回或读取对象高度的单位时用Form1.ScaleHeigh=2000表示。
 
    感叹号“!”常用于当一个控件作为一个特性访问的情况下,例如引用Fomr2中Text1文本框文本属性时,可采用response$=Form2!text1.text语法格式。
 
    虽然两者的语法应用结构有较大差异,但两条语句的性能是相同的,值得注意的是如果你在感叹号“!”的位置使用“.”可以获得对窗体上Text1特性的直接访问权,为了进一步增加感性认识,你不妨运行下面的例子来试试。
 
    1.建立一个新项目,并在Form1窗体中增加一个命令控件。
 
    2.双击Form1窗体,编辑Form-Load事件并输入:
 
        Form1!Command1.Caption=”Text”
 
        Form1.Command1.Caption=”It Works”
 
    3.运行试项目,这时你就会在Command1命令框中看到字符串It Works。
 
    为了在程序中清楚地界定引用的控件名和该控件的属性或方法,增加程序的可读性,最好使用感叹号“!”,这也是VB的推荐方式。
 
 
 
0、""(空字串)、Null、Empty、与 Nothing 的区别
 
 
    先回答以下问题吧! 经过以下的叙述之后, 变量 A、B、C、D 分别等于 0、""、Null、 Empty、 Nothing 的哪一个?
 
Dim A
 
Dim B As String
 
Dim C As Integer
 
Dim D As Object
 
    A 等于 Empty, 因为尚未初始化的「不定型变量」都等于 Empty。但如果检测 A = "" 或 A = 0, 也都可以得到 True 值。
 
    B 等于 "", 因为尚未初始化的非固定长度「字串」都等于 "" 。 但请注意 B<> Null。
 
    C 等于 0, 这个还有问题吗?
 
    D 等于 Nothing, 尚未设定有物件的「物件变量」都等于 Nothing, 但请不要使用 D = Nothing , 而要使用 D Is Nothing 来判断 D 是否等于 Nothing, 因为判断 是否相等的符号是 Is 不是 = 。
 
    最令人迷惑的地方是 Null 这个保留字, 请看以下语句:
 
Print X = Null
 
Print X <> Null
 
    结果都是输出 Null(不是 True 也不是 False), 这是因为任何一个运算式只要含有 Null , 则该运算式就等于 Null, 实际上想要判断某一数据是否为 Null 绝对不能使用:
 
        If X = Null Then ‘ 永远都会得到 Null
 
    而要使用:
 
        If IsNull(X) Then
 
    哪一种数据会等于 Null 呢? 除了含有 Null 运算式之外, 就属没有输入任何数据的「数据字段」(在数据库中) 会等于 Null。
 
 
 


楼主最近还看过



xiaobeiweng

  • 精华:0帖
  • 求助:9帖
  • 帖子:10帖 | 424回
  • 年度积分:0
  • 历史总积分:1461
  • 注册:2009年8月25日
发表于:2012-08-27 09:32:01
1楼
好野。。                                ~

ZHI_GOOD

  • 精华:0帖
  • 求助:1帖
  • 帖子:14帖 | 541回
  • 年度积分:0
  • 历史总积分:111
  • 注册:2015年10月04日
发表于:2017-04-11 15:41:47
2楼

好资料,好好学习,天天向上!!!

cxbabc

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 17回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2012年3月02日
发表于:2017-06-20 11:12:34
3楼

写得不错,好好学习一下

stream13510

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2017年12月22日
发表于:2018-05-24 11:06:43
4楼

写的不错,好好学习下

SSI ļʱ