vb代码中&vb中 表示什么么

vb中怎么实现数据库的上一条和下一条,代码是什么?
[问题点数:20分,结帖人a]
vb中怎么实现数据库的上一条和下一条,代码是什么?
[问题点数:20分,结帖人a]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
本帖子已过去太久远了,不再提供回复功能。君,已阅读到文档的结尾了呢~~
vb语言编写代码中地各个符号是..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
vb语言编写代码中地各个符号是什么意义[资料]
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口Visual Basic|VB免费下载
资源大小:6M
周下载量:730次
软件属性:简体中文 免费软件
更新时间:
系统平台:
Win7/WinVista/WinXP/Win2000/Win98兼容软件
官方网站:
用户推荐:
用户评分:
相关软件:
相关热搜:
Visual Basic 6.0|VB是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。
Visual Basic 6.0|VB是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。VB6.0 简介VB6.0全称为VisualBasic 6.0,是微软公司于1998年推出的可视化编程工具MSDN之一,是目前世界上使用最广泛的程序开发工具之一。结构简单,编写程序对系统的资源占有极低,是程序编写者编写小型程序的第一选择!如果你是一个对编程一无所知,而又迫切希望掌握一种快捷实用的编程语言的初学者,那选择VB 6.0没错的。即使考虑到VB程序本身编译和运行效率较低的不足,但是它的快捷的开发速度,简单易学的语法,体贴便利的开发环境,它仍不失一款优秀的编程工具,是初学者的首选。【Visual Basic 语言特性】VB的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单建立应用程序的GUI系统,但是又可以开发相当复杂的程序。VB的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组建的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。过去的版本里面VB程序的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。窗体控件的增加和改变可以用拖放技术实现。一个排列满控件的工具箱用来显示可用控件(比如文本框或者按钮)。每个控件都有自己的属性和事件。默认的属性值会在控件创建的时候提供,但是程序员也可以进行更改。很多的属性值可以在运行时候随着用户的动作和修改进行改动,这样就形成了一个动态的程序。举个例子来说:窗体的大小改变事件中加入了可以改变控件位置的代码,在运行时候每当用户更改窗口大小,控件也会随之改变位置。在文本框中的文字改变事件中加入相应的代码,程序就能够在文字输入的时候自动翻译或者阻止某些字符的输入。VB的程序可以包含一个或多个窗体,或者是一个主窗体和多个子窗体,类似于操作系统的样子。有很少功能的对话框窗口(比如没有最大化和最小化按钮的窗体)可以用来提供弹出功能。VB的组件既可以拥有用户界面,也可以没有。这样一来服务器端程序就可以处理增加的模块。VB使用引用计数的方法来进行垃圾收集,这个方法中包含有大量的对象,提供基本的面向对象支持。因为越来越多组建的出现,程序员可以选用自己需要的扩展库。和有些语言不一样,VB对大小写不敏感,但是能自动转换关键词到标准的大小写状态,以及强制使得符号表入口的实体的变量名称遵循书写规则。默认情况下字符串的比较是对大小写敏感的,但是可以关闭这个功能。VB使得大量的外界控件有了自己的生存空间。大量的第三方控件针对VB提供。VB也提供了建立、使用和重用这些控件的方法,但是由于语言问题,从一个应用程序创建另外一个并不简单。&&&&
下载错误请点击举报
用户评分:
请打个分吧
请发表评论,字数不要少于10个哦~
小提示:您的评论对其他用户具有很重要的参考价值,请勿输入没有营养的点评内容,遇到问题请举报以方便我们及时处理。
12345678910
12345678910
12345678910博客访问: 149836
博文数量: 71
博客积分: 1249
博客等级: 中尉
技术积分: 675
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: WINDOWS
1,★ 什么是集合? 集合是一组相关的对象。窗体上的全部对象被称作controls(控件)集合,如果一个程序有多个窗体,就要在前面加上窗体名称,如:form1.controls,每个窗体都有一个controls集合。这种"集合"被视作也是该窗体的一个对象,它与窗体的关系地位有点象windows的文件夹。可以通过集合引用其中的对象,格式一,直接使用(集合名!元素):窗体名称.controls!对象名称.属性=属性值form1.controls!label1.caption="李新宁"注:其中的感叹号是controls集合与对象的连接符号格式二,采用该对象在controls中的索引值(集合名(索引)):窗体名称.controls(索引值).属性名=属性值form1.controls(1).caption="李新宁"注:一个对象在其所在窗体controls集合中的下标是如何排列的呢?--按对象创建时的顺序逆向确定其下标值,最后一个创建的对象下标为0,倒数第二创建的那个对象下标为1,如果该窗体共有n个对象,那么一开始创建的那个对象的下标为n-1.集合的运用:FOR EACH…IN…NEXT 循环 ,对一组对象(对象组)的操作。格式:FOR EACH 对象变量 IN 集合名对当前对象的操作过程NEXT对象变量以上用于对一组对象的操作,例如将窗体上所有对象的位置向左移1000缇:Private Sub Command1_Click()For Each lxn In Controls lxn是"当前对象"的"替身"lxn.Left = lxn.Left + 1000 将当前对象的left属性加1000Next lxn 下一个controls里的成员End Sub如果是有目的地选择一部分对象的移动,怎么办呢?可以利用对象的标记tag属性,区别不同对象,下例tag属性值为lxm的对象就不移动,Private Sub Command1_Click()For Each lxn In Controls --controls中的每个对象If lxn.Tag
"lxm" Thenlxn.Left = lxn.Left + 1000End IfNext lxnEnd SubPrivate Sub Form_Load()Command1.Tag = "lxm" --tag是个有趣的属性,它可以由程序员指定一个End Sub 该对象的"标记",好区别其他相关对象。集合不仅有controls一种,还有其他如窗体集合,数据库集合等,值得重视2★ 在文本框的一个输入字符串尾加上" &&chr(13)+chr(10)",它能自动换行。或者用VB的常数vbCrLf也可换行。相当于C中的"\n".如:a$="李新宁" &&chr(13)+chr(10) text1.text=a$3★ VB程序中的出错处理:错误处理程序使程序在出错时继续运行,处理出错的步骤是:1,在程序中可能出错的语句前加上一条语句:on error goto 标号:如: on error goto lxn:此处标号是当on error后一条语句出错时,程序将转到标号指定的"错误处理程序段"。通常放在本事件过程的底部。如果只是出错时起语旬转向的作用,则"错误处理程序段"可空。但标号及冒号不能少,如:commondialog1.cancelerror=true 列出出错的情形on error goto lxn: 出错时转向lxn:commondialog1.showsave 如果用户单击了"取消"按纽,就会"出错"。......lxn: 为空,只是跳过事件体,直按end sub了。end sub如果只是出错时将程序转到下一句,只要在出错语句前加上On Error Resume Next.真正的错误处理程序要用到一个属性变量:Err.Number,它就是在遇到程序崩溃时对话框中的那个数字,表示是第几号的错误。另外,在事件底部,错误处理程序开始的标号前,一般要加上 Exit Sub语句,以便使程序在无错的情况下不会去执行错误处理段。在错误处理程序结束时,要用"resume"将程序执行顺序返回程序中。resume后可跟标号,举一个例子如下:private sub command1_click()......on error goto lxn: 出错时转向lxn:......exit sub 防止程序正常时也执行后面的出错程序,因此无错时结束事件。lxn: 出错程序段标号(名称)if err.number=71 then 如果出现71号错误msgbox("软驱门没关好"),,"软驱出错" 提示resume 返回程序出错处,如果想只提示一次,那么用resume next执行下一句 else msgbox("无法找到此文件"),,"找不到" 其他错误resume stop: 转向标号为stop:语句end ifstop: 为空end sub还有一个属性变量err.description,它显示出错时的文字提示内容。可直按用msgbox输出到用户,注意:单独的resume语句返回出错的原程序语句,如果错误一直存在,那么就一直显示,因此,有必要改为resume next或在程序中采用如下技巧(出错提示三次后就越过错误):Private Sub Form_Load()Dim a% 在事件开头声明一个变量aOn Error GoTo lxn:Image1.Picture = LoadPicture("c:\")Exit Sublxn:If a < 3 Then 如果少于三次就继续提示MsgBox (Err.Description), , "error" 用msgbox函数输出对话框a = a + 1 用于记录次数Resume 返回出错处Elseresume next 返回出错下一条语句End IfEnd Sub访问系统DLL库:系统WINDOWS提供了三个DLL库,它们的库名为:USER32;GDI32;KERNEL32要访问DLL,先要给程序添加一个标准模块,在标准模块中声明DLL过程。Public Declare sub 过程名 lib "库名" alias "别名" (参数表)或Public Declare function 函数名 lib "库名" alias "别名" (参数表) as 返回值类型例:Public Declare Function GetWindowsDirectoryA Lib "kernel32" (ByVal lxn As String, ByVal lxm As Long) As Long 真酷!连参数名也自定了。说明:其中,过程名或函数名可以自定,如果是自定的(不同于DLL库中的名字),那么就必须在 Alias "别名"中写出它在DLL库中的全名;如果过程名或函数名就是DLL库中的过程名,则 Alias "别名"可以省略。如上例若将API函数GetWindowsDirectoryA换成ldd,写成:Public Declare function ldd lib "kernel32" alias "GetWindowsDirectoryA" _(byval lxn as string,byval lxm as long) as long 声明了API函数,它的调用与调用一般的VB函数没区别。参数表:声明部分的"形参"有两个值得注意的关健字:ByVal和 ByRefbyval意为"值传递",是将实参的值拷贝过来,API过程用的是"实参"的复制品,不会使原参数产生变化。byref意为"地址传递",是将实参在内存中的地址(指针)传递过来,如果在过程中改变了该地址的内容,那么会使原参数的内容产生变化。重大注意;字符串都是传地址的。如果在形参声明中用Byval,则传递字符串的首字符指针(也就是地址),如果用BYREF,则传递指向字符串首字符指针的指针。重大注意:在形参声明中不注明byval和byref的情况下,缺省为byref,即指针传递。在API访问和参数类型声明中,有一个很好的帮助工具,那就是API浏览器(在外接程序管理器中),在其中查找所需API,并查找相应类型声明,然后用剪贴板复制到标准模块的声明中,再自定义一个这种类型的变量,如:Public Type MEMORYSTATUS 数据类型声明,从API游览器中复制dwLength As LongdwMemoryLoad As LongdwTotalPhys As LongdwAvailPhys As LongdwTotalPageFile As LongdwAvailPageFile As LongdwTotalVirtual As LongdwAvailVirtual As LongEnd TypePublic Declare Sub GlobalMemoryStatus Lib "kernel32" _ API声明(lpBuffer As MEMORYSTATUS)Public lxn As MEMORYSTATUS 定义一个这样的变量,好在事件中调用时当实参用。调用API函数时,格式如下:CALL 函数名或过程名(实参)Call GlobalMemoryStatus(lxn)如果实参是一个"结构类型",引用时就用"实参.分量"来表示每一项返回值,如:MsgBox (lxn.dwAvailPageFile), , "a"MsgBox (lxn.dwAvailPhys), , "b"MsgBox (lxn.dwAvailVirtual), , "c"MsgBox (lxn.dwLength), , "d"MsgBox (lxn.dwTotalPageFile), , " e"MsgBox (lxn.dwMemoryLoad), , "f"MsgBox (lxn.dwTotalPhys), , "g" 这些a,b,c,d,e……是标题条中随便起的。4★ 用VB在硬盘上创建一个文件夹:Mkdir语句。格式:Mkdir "路径及文件夹名"mkdir "c:\windows\desktop\李新宁" 在桌面上创建个名为"李新宁"的文件夹又如: Private Sub Command2_Click()MkDir "c:\windows\desktop\mydir"End Sub如果缺省路径,则为本VB程序的当前路径,如:mkdir "mydir",在当前目录下创建一个文件夹,名为mydir.用VB删除一个文件夹(空文件夹):RmDir语句,格式:rmdir "路径及文件夹名"用法与上面类似,此不再说明.如果一个文件夹内有文件,那么,要先用KILL语句删除文件,再用rmdir删除文件夹。格式:kill "路径及文件名"在路径及文件名中,省略路径则指当前路径,并可用通配符"*"和"?"来删除多个文件,如:kill "*.txt" ,将当前目录下的所有文本文件全部删除。注意:KILL语句删除的文件不会放入回收站。在调用函数或过程时,该函数或过程如果作为表达式,则其实参要括号,如果调用时是作为语句,实参则不要括号。下面两句是等价的。SetWindowTextA Form1.hwnd, "API函数修改标题栏文字" --函数语句Call SetWindowTextA(Form1.hwnd, "API函数修改标题栏文字") --函数为表达式API调用格式中的 lib"库名" 有一点要注意,如果不是调用Windows\system文件夹下的DLL库,则要指明路径名,如:public declare function lxnsdll lib "d:\student\mydll.dll"(byval a as integer,byval b as integer) as long 5集合(collection):用来存储类似数组的一组同类变量,它与数组不同的是,集合是一种对象,它不仅可通过索引值来访问其中的元素,还可通过关健字来访问其中元素。声明格式:DIM(或PUBLIC) 集合名 as new collectiondim lxn as new collection既然集合是一个对象,就用方法和属性去操作它,有三个方法和一个属性:ADD方法:添加元素到集合对象中;格式:集合名.add 元素内容,关健字,添加到…前,添加到…后(添加位置)lxn.add 23,"李新宁", ,"李冬冬"上例表示在集合中"李冬冬"关健字所对应元素后面添加"李新宁"为关健字的元素23(我是想表示年纪)。REMOVE方法:删除一个元素;集合名.remove "关健字或索引位置"lxn.remove "李新宁" 或 lxn.remove 5 (如果元素"23"的索引号为5)索引值是VB自动给每个集合元素添加的,从第1个元素索引号为1开始。ITEM方法:引用集合对象中的元素,可省略,格式: 集合名.item(关健字)省略为:集合名(关健字或索引位置)x=lxn("李新宁") x就等于23。也可用索引位置,如 x=lxn(5)(如果"李新宁"所对元素的索引为5),索引位置(其实就是下标)最小从1开始。COUNT属性:返回集合中的元素个数。格式:集合名.count.如y=lxn.count,y就等于集合中元素个数。6★ 基本的类操作:类形象理解为"控件"即可,创建一个类,也就是自已创建一个象工具箱中控件那样的"新"控件。自己设置添加它的属性,方法。只不过自己发明的新控件没有图标,所有属性,方法,事件只能在代码中进行而已。类是用来创建对象实例的模板。1,在"工程"菜单中选"添加类模块"。在属性窗口修改它的"(名称)"属性为想要的名字,这个名字将作为这个类(为好理解,叫成"新控件")的名字。2,制作新控件属性:在类模块中通用部分(此时全都是)用Public声明一群变量,要指明具体类型,这些所有变量就成了新控件的属性。就这么简单。3,制作新控件方法:在类模块中建立新过程(用public sub...end sub或public function...end function),这些过程名将作为新控件的方法名。在过程里编写新控件功能的代码。4,编写类模块事件,类模块事件只有initialize和terminate两种。当我们在程序中用"新控件"创建一个对象时,在刚刚创建一刹那,触发这里的initialize事件,这个事件可处理对象实例创建时需要处理的初始化。新控件的运用:如何使用自己新做的"控件"呢?因为它没有在工具箱中的图标,不可直按"画"到窗体上,而要完全在代码中进行。1,在通用部分声明一个对象变量,使它指向"新控件"。如Dim lxn As class1class1是我自定的"新控件"名。注意:此时只是声明变量lxn为对象变量,但并没有具体代表哪个对象,要用SET语句来确定对象变量的值。用set…new…新建类模块对象。2,在FORM LOAD事件中创建一个"新控件"的对象,用SET…NEW语句,set 对象变量=new 新控件set lxn=new class1这时,对象变量名就成了创建的对象的名字(注:没有NEW是普通的赋值,有NEW就是新建对象)。3,进行对象可进行的各种操作。如:lxn.condition=true下面是自制一个"跑表"控件的例子。A ,类模块中:Option ExplicitPublic timectl As Date '这三个变量作为"跑表"类的属性Public condition As Boolean 'timectl为时间长度,condition为计时/停止状态Public starttime As Date 'starttime为基准时间Public Sub start() '开始计时方法condition = Truestarttime = Time starttime赋值为系统时钟的当前时间End SubPublic Sub stoptime() '停止计时方法Dim lxn As Datecondition = Falselxn = Time - starttime 时间差timectl = timectl + lxn 进行多次调用该过程时累积时间长度End SubPublic Sub reset() '清0方法condition = Falsetimectl = 0starttime = TimeEnd SubPrivate Sub Class_Initialize() 供新建实例时初始化starttime = Timetimectl = Time - starttimecondition = FalseEnd SubB,程序中:Dim mywatch As myclass 声明对象变量将指向myclass创建的实例Private Sub Command1_Click()Set mywatch = New myclass 重新新建Text1.Text = mywatch.timectlEnd SubPrivate Sub Command2_Click()Select Case mywatch.conditionCase Falsemywatch.startText1.Text = "on......"Case Truemywatch.stoptimeText1.Text = mywatch.timectlEnd SelectEnd SubPrivate Sub Form_Load()Set mywatch = New myclass 新建对象Text1.Text = mywatch.timectlEnd Sub7★ 程序中的APP对象,它主要提供如本程序的标题,版本信息,路径等有时很必要的信息,常用属性有:App.Title:返回本程序的标题。App.Path:返回本程序所在的路径。与curdir不完全相同,curdir是指当前路径。如果1个程序创建了快捷方式,则App.path和curdir就可能不同了。应以App.path为准。App.EXEname:返回本程序不含扩展名的根名如何在VB中控制关机?除了以前讲到的exitwindow***函数外,还有一种更简单的方法,只要在你需要的地方,比如按扭等等,在事件过程中加入Shell "rundll32.exe user.exe,exitwindows" 就可以了。对WIN2000无效!在VB中可打开控制面板,由用户进行设置,打开主面板:在事件过程中写x = Shell("rundll32.exe shell32.dll,Control_RunDLL",1) 也可打开各个具体项目,如x = Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl", 1) 打开的是控制面板中"多媒体"项。而x = Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5", 1) 打开的是"辅助选项"项目。而x = Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2", 1)显示的是"显示器"项目(中的"外观"选项卡,注:各个选项卡由尾部参数决定,这里是2)。8对象的引用在VB中很重要的一部分内容是对其他应用程序所包含的对象的引用,如运行WORD的某些功能,EXCEL的某些功能等等,可以大大丰富程序的实用性,并使程序简单化。这样理解:如Word这个大"程序"也是由许许多多的小"控件"单位做成的,我们在自己的程序中也可随意使用这些本属于Word的"控件"对象,只要把Word的对象库包含进来即可。要引用对象"Dim 变量 as new 对象库中对象名",如 dim x as new excel.application.在引用完后,要及时退出以释放内存。用Quit和给对象变量赋nothing值的办法。9动态地创建对象 Dim a As New Form1a.Show在代码中创建对象1。在(通用)中用WithEvents关健字声明1个对象变量,格式:Private WithEvents 新对象名 as 控件类private withevents text1 as textboxWithEvents的作用是可在代码窗口对新创建对象编写事件过程。声明后,你可以在代码窗口的对象下拉框中找到这个对象变量。2,在事件过程中用Set 新对象=Controls.Add("vb.控件类","控件类")set text1=controls.add("vb.textbox","textbox") 3,全面设置新对象的属性:由于要全部设置,所以会较多(不象直接画到窗体上那样有"缺省属性"),建议用with结构来进行。例下:Private WithEvents command1 As CommandButton '代码中创建对象Private Sub Form_Load()Set command1 = Controls.Add("vb.commandbutton", "button") '这句是关健,用With command1 button也行。.Caption = "退出".Visible = True.Left = 1000.Top = 1000.Width = 800.Height = 400End WithEnd Sub10怎样检查剪贴板上是否有文本?用判断剪贴板clipboard对象的gettext中字符串长度是否大于0来检查(如使"粘贴"菜单自动失效),如下例:If Len(Clipboard.GetText) > 0 Thenmnupaste.Enabled = TrueElsemnupaste.Enabled=FalseEnd If在keydown事件中用组合键:如要求用户输入Ctrl+X键,则如下:Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyX And Shift = vbCtrlMask Then Unload Me End Subshift的参数有vbAltMask(或4),vbCtrlMask(或2),vbShiftMask(或1),分别代表按下Alt,ctrl或shift键。11在VB中使用Windows的注册表:先介绍一下注册表,注册表有什么用?主要用来在程序初始化时保存某些以前由用户进行的设置。在windows文件夹下有一个Regedit.exe注册表编辑器,先打开它,左边一栏列出的多级"文件夹"样子的叫主键,每一个"文件夹"就是一个主键。右边一栏列出主键中包含的多个键,每个键包含"键名称"与"键数据"两部分:每个键都有"名称",键"数据"中存储的就是我们需要存入的内容。这样理解:"主键"就相当于文件夹,"键名称"就相当此文件夹下某文件名,"键数据"就相当此文件内容。1,向注册表写入一行文字:SaveSetting语句,其格式简单讲就是带4个字符串,而且这四个字符串确实可以是任意的,但是:注册表不是垃圾桶,而是有着很重要作用的程序管理功能,禁止乱写。SaveSetting 字符串1,字符串2,字符串3,字符串4SaveSetting "lxn56","startup","文件","这句话写到注册表里"前二个字符串表示在注册表中要创建的"主键"以存放文字,第3个字符串表示"键名称",第4个字符串表示"键数据",也就是需要存入注册表的文字内容。而正规的格式是:SaveSetting 程序名(主键),区域名(下级主键),注册表项的名称,注册表项SaveSetting "lxn56","startup","recentfile","c:\windows\RegEdit.exe"运用多个savesetting语句,贯以不同的"注册表项的名称"和"注册表项",则可在同一主键下创建多个键。2,读取注册表中的数据内容,一,GetSetting函数,读取1个键值,格式:变量=GetSetting(程序名,区域名,注册表项名)lxn=GetSetting("lxn56","startup","recentfile") 变量就等于先前写入的"名称"为recentfile的注册表项。二,GetAllSettings函数,读取1个主键内所有键值,注意:它返回一个包含各键"名称"和"数据"的二维数组,格式:数组名=GetAllSettings(程序名,区域名)如先Dim lxn(20,1) as stringlxn=GetAllSettings(App.title,"startup")那么,lxn(n,0)将表示一个键名称,lxn(n,1)将表示一个键数据。如下例:varFiles = GetAllSettings(App.Title, reckey) reckey是变量,不是字符串For i = 0 To UBound(varFiles, 1)mnulist(i).Caption = varFiles(i, 1)mnulist(i).Visible = TrueNext i3,删除注册表中1个主键或主键中1个注册表项:DeleteSetting语句,格式:DeleteSetting 程序名,区域名,注册表项名称如果参数中省略"注册表项名称",则将删除整个"区域名"下级主键。当对一个对象进行多项属性设置时,可用简略格式With…End With…格式,如:with command1.caption="退出".style=1.picture=loadpicture("e:\dmt\ico\face3.ico")end with照样即可。当我们用Dim 对象变量 as object: set 对象变量=(textbox等等)来引用对象时,在引用完后,应将对象卸载,可用Unload语句或--Set 对象变量=Nothing 类模块:类模块的初始事件只有两个:initialize事件:加载模块时的初始化代码;Terminate事件:卸载模块时的代码。一,向类中添加属性:一种方法是定义public变量(在类模快中通用或任何sub过程中都可以),第二种方法是使用Property属性过程.我们在一个程序中,使用对象属性,无非是设置属性值(如label1.caption="李新宁")或引用属性值(如lxn=text1.text),设置属性值时,我们让它调用prorerty let过程,设置的属性值用参数传递,如:在程序中:Dim lxn as new class1Private Sub Form_Load()lxn.volume=500 500传递到vNewValue参数中。End Sub在类模块中:private vol as string 类模块自身的变量Public Property Let volume(ByVal vNewValue As String) 在程序中设置的属性值 vol= vNewValue 通过vNewValue参数传过来End Property而引用属性值时,我们让它调用Property Get过程,如:在程序中:if lxn.volume>=500 then unload me在类模块中:Public Property Get volume() As Stringvolume = vol vol是类模块中用来传递属性值的局部变量End Property总之,property属性过程包括:1,向调用的程序返回属性值:Property Get过程;2,向调用的程序设置属性值:Property Let过程;3,Property Set过程。当属性的值为一个对象时,取代Let过程,设置对象变量的属性值。用属性过程设置类的属性是一个比较全面的方法(如需要设置只读属性等)。另外,也可以给一般的窗体Form增加自定义的属性,只要在窗体模块代码区域用public结合Property Let和Property Get就行了,注意要用public来声明属性过程。如:Dim a As Long 内部变量Public Property Let lxn(ByVal vNewValue As Long) 设置属性值的属性过程a = vNewValueEnd PropertyPublic Property Get lxn() As Long 引用属性值时的属性过程lxn = aEnd PropertyPrivate Sub Command1_Click() 设置属性值Form1.lxn = 500End SubPrivate Sub Command2_Click()Print Form1.lxn 引用属性值End Sub二,向类中添加方法:方法是类的主体,我们通过sub过程或function过程,并用参数的传递(程序中表现为方法的参数),返回值,属性的改变等来达到各种各样的目的三,向类中添加事件:用RaiseEvent语句,集合:建立集合:Dim 集合名 as new collection集合的通用属性方法:add方法,向集合中添加一项;append方法,向集合中附加一项;refresh方法:刷新集合中的数据;remove方法:从集合中删除一项;count属性:返回集合中元素的项数;item属性:在集合中标识某一个项,可省略;parent属性:返回代表集合父对象的对象。有时候,DLL过程的一个参数可能接受不确定数据类型,如果需要传递多种类型的数据,可将参数声明为as Any.这时,前面的ByVal也不要了,如uFlug as Any.一个程序的界面窗体在每次开始运行时总是一样的,如果想让窗体样式保持用户作的修改,在下次启动时能按用户的调整显示,就需要将窗体的left,top和windowstate等属性值另写入到一个ini文件里面。可用open语句另创建一个ini文件。编写DLL文件:在新建工程时选ActiveX DLL,其写法就和普通类模块写法一模一样(连缺省名class1都一样),自编属性与方法甚至事件,编写完后,在"文件"菜单中选"生成某某名.dll"进行编译即可。怎样使用编好的DLL文件呢?要在"工程"菜单"引用"中找到那个"某某名"(在保存DLL工程时自定的名字)选中复选框,然后就象创建word,excel等对象库引用那样创建对象变量,进行属性方法引用。(--怎么创建的"DLL"说来说去还是对象?不能象人家的system文件夹下的那样?我不明白。)举一个最简单的例子吧,说明一下:在新建工程中选ActiveX DLL->打开属性窗口,将模块class1更名为lxndll,再看看它的instancing属性是否为5(允许同时创建此"类"的多个实例)->写以下代码(求两个数中的大数)Public one As ingeger, two As Integer one和two是"lxndll"类的两个属性Public Function max(ByVal one As Integer, ByVal two As Integer) As Integer If one > two Then 类lxndll的max方法max = oneElsemax = twoEnd IfEnd Function->编译成DLL文件->另创建一个标准EXE工程->"工程"菜单"引用"中找到"工程1",选中复选框(如果有名称冲突,在"工程1属性"中将现工程改名)->在代码中写:Dim lxn As New lxndllPrivate Sub Command1_Click()x = 50y = 41z = lxn.Max(x, y)Print zEnd Sub就进行了"DLL"的引用12Windows API函数通常有以下诸类:底层服务--提供对Windows底层和核心服务的访问。用户接口服务--为应用程序创建和管理用户界面。系统服务--提供访问内存,文件系统,运行处理以及动态链接库等的途径。构建对象模型和ActiveX对象服务--帮助开发面向对象的应用程序和构件。图形和多媒体服务--生成图形输出,音频,视频设备访问。……等等。一点知识:调用API时,如普通VB内函数一样,用函数名(实参)来得到1个返回值,而API的返回值常常只是1个Long长整数,在很大程度上不能满足需要,应通过另一种重要的途径:传递字符串参数指针或结构类型参数指针,让API去改变传入的字符串参数或结构类型数据,也就达到了"返回值"的目的。重大注意:在向API函数传递字符串参数时,API函数不会为我们建立任何字符串空间,在把字符串传递给函数之前,必须建立1个足够长的空字符串(缓冲区),以处理可能返回的最长的字符串。通常是指定1个足够长的空格字符串,如"参数名=string(255," ")"或"参数名=space(255)"等等。在API调用中就从其左部开始写入返回值,返回后可能会有多余空格,去除多余空格可用: 返回参数=left(含空格返回参数,instr(含空格返回参数,chr(0))-1) 这里有一点知识说明一下:chr(0)不是空格(空格是chr(32)),而是API写返回值时的一种格式:在每写完1个字符串值的未尾都自动加上一个"\0",表示字符串结束(这是C语言的习惯)。通过查找这个"\0"(ASCII为0)的位置,就能知道返回值有多长,上面公式中的位置值再减1是将这个"\0"去掉。得到"纯"字符串。VB内部函数space函数:指定空格,返回空字符串或空变体类数据。格式:space(空格个数),如x=space(10),x就等于" (10个空格) "。怎样使1个窗口总在屏幕最顶层,即始终占据有效性?如果是在1个MDI程序内,被别的子窗体遮住,则可用1个定时器,在其timer事件中用该窗口的zorder方法就可以了,如:Private Sub Form_Load()Timer1.Interval = 500Timer1.Enabled = TrueEnd SubPrivate Sub Timer1_Timer()Form1.ZOrder 0End Sub在运行中,如果form1被别的窗口遮住,它立即返回屏幕表面。也可用API函数来实现1个窗口始终停留在屏幕表面(不限于1个MDI窗体)。用SetWindowPos函数,声明及调用如下: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 Private Sub Form_Load() SetWindowPos hwnd, -1, 0, 0, 0, 0, &H2&+ &H1End Sub form窗体就将停留在屏幕表面。将鼠标指针定位于自定义的屏幕坐标处:SetCursorPos函数。声明:Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long 调用如:Private Sub Command1_Click() Call SetCursorPos(600, 100) 将鼠标定位到屏幕(600,100)处。End Sub很简单,注:屏幕是以象素为单位的(与屏幕分辨率设定有关)。不是缇。重点笔记:消息消息是Windows告诉你的程序发生了哪些事件或要求执行特定操作的基本方法.例如,当用户点击一个按钮,移动鼠标,或是向文本框中键入文字时,一条消息就会被发送给你的窗体.所有发送的消息都有四个参数--一个窗口句柄(hwnd),一个消息编号(msg)还有两个32位长度(Long)的参数.hwnd即要接受消息的一个窗口的句柄,msg即消息的标识符(编号).该标识符是指引发消息的动作类型(如移动鼠标),另外两个参数是该消息的附加参数(例如当鼠标移动时光标的当前位置) 但是,当消息发送给你时你为什么看不到呢--就象有人在偷你的信一样?请先别恼火,让我告诉你. 小偷其实是Visual Basic.但它并没有偷走你的信,而是在阅读了之后挑出重要的以一种好的方式告诉你.这种方式就是你代码中的事件(Event). 这样,当用户在你的窗体上移动鼠标时,Windows会发送一条WM_MOUSEMOVE消息给你的窗口,VB得到这条消息以及它的参数并运行你在事件MouseMove中的代码,同时VB会把这条消息的第二个32位数(它包含了x,y坐标,单位为像素(Pixel),每个位16位)转换为两个单精度数,单位为缇(Twip). 现在,如果你需要光标坐标的像素表示,然而VB已经把它转换成了缇,因此你需要重新把它转换为以像素为单位.在这里,Windows给了你所需要的,但VB"好意地"进行了转换而使你不得不重新转换.你可能会问--我难道不能自己接收消息吗?答案是肯定的,你可以使用一种叫做子类处理(Subclass)的方法.但你除非必须否则最好不要使用,因为这与VB的安全程序设计有一点点的违背.(注:子类处理确实有很大的风险,但如果使用得当,是很有用处的.不过有一点一定要注意,即千万不要使用VB的断点调试功能,这可能会导致VB崩溃!)需要补充说明的是:你可以发送消息给你自己的窗口或其他的窗口,只需调用SendMessage或PostMessage(SendMessage会使接受到消息的窗口立刻处理消息,而Pos tMessage是把消息发送到一个称为消息队列的队列中去,等候处理(它将会在该消息处理完后返回,例如有些延迟)).你必须制定接受消息的窗口的句柄,欲发送消息的编号(所有的消息的编号均为常量,你可以通过API Text Viewer查得)以及两个32位的参数.--------------—API中的回调函数:回调函数是指将VB标准模块中的某个函数过程作为参数传递到API函数中,需要接收回调函数的API常是"枚举"功能的函数(如EnumWindows),用 "AddressOf 过程名"的格式进行传递。如:lxn&&= EnumWindows(AddressOf AddToList, 0&) EnumWindows第1个参数就是1个自定义回调函数AddToList。它存在于标准模块中。AddressOf操作符用于回调函数,来实现典型的"枚举",即连续调用回调函数遍历此API提供的一系列条目。举个例子吧:有个API叫EnumWindows,此函数枚举系统中当前加载的所有窗口句柄hwnd(形成一系列条目),每枚举出一个新窗口时就调用1次从其参数传入的回调函数。也就要用AddressOf来"连续调用"了。AddressOf传递的是过程的地址,而非通常的情况--传递过程返回值的地址。使用回调函数需要注意以下几点:1,AddressOf后跟1个function函数指针,不能是Sub过程指针;2,使用AddressOf的函数必须放在标准模块中,不能在窗体模块,类模块中;3,必须了解回调函数需要哪些参数。这些参数应由这个API提供。举1例如下:标准模块中:Public Declare Function EnumWindows Lib "user32" (ByVal _lpEnumFunc As Long, ByVal lparam As Long) As Long Public Declare Function GetWindowTextA Lib "user32" (ByVal _hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Public Declare Function GetWindowTextLengthA Lib "user32" _(ByVal hwnd As Long) As LongPublic Function AddToList(ByVal hwnd As Long, ByVal lparam As Long) As Long Dim sTitle As String '这是个回调函数,参数hwnd将由EnumWindows提供Dim lLen As LongDim lReturn As LonglLen = GetWindowTextLengthA(hwnd) + 1sTitle = String$(lLen + 1, 0)lReturn = GetWindowTextA(hwnd, sTitle, lLen)If lReturn > 0 ThenForm1.List1.AddItem Left(sTitle, lReturn)End IfAddToList = 1 这句不能丢,否则视为0就是调用失败。调用了也实为没调用。End Function窗体模块中:Private Sub Command1_Click()List1.Clearlxn&&= EnumWindows(AddressOf AddToList, 0&) End SubEnumWindows函数:枚举窗口列表中的所有父窗口(不包括按纽,菜单等等子窗口)。返回每1个窗口句柄hwnd传递到参数lpEnumFunc--用AddressOf指定的一个标准模块中的函数,使得每枚举1个窗口时都调用1次此函数。来操作每个窗口,参数lparam就不管它吧。GetWindowText函数:返回指定句柄窗口的标题文字。第2个参数是预定义的一个缓冲区,以存放返回值(常为1大串空格如string(255," ")),第3个参数是缓冲区长度(即空格的个数)。而"函数"返回值就是标题字符串的长度。GetWindowTextLength函数:返回指定句柄窗口的标题文字的长度。什么是进程?线程?在Windows的32位操作系统中实现了多任务与多线程。要了解单线程与多线程的区别就要先了解文件、进程、线程的区别。文件:一个应用程序在没有调用时(没有加载到内存中时---包括虚拟内存)叫文件或程序。进程:应用程序被加载到内存中后叫进程。线程:进程被CPU处理时叫线程。Windows 32位操作系统可让cpu在不同的时间段内处理不同的线程,这些线程可以来自于一个进程(多线程进程),也可以来自不同的进程。由于这个时间段很短,所以人们认为在一个较长的时间段内cpu在执行多个任务,所以说Windows 32位操作系统具有多线程多任务的功能。在做一个程序时可以调用多个线程,这叫多线程进程,也可以不调用多个线程这叫单线程进程。===================SendKeys语句此语句可代替手在键盘上敲击按键,很有意思。也就是说,可以让程序自动"击键"。如果用shell函数打开另1软件,那么可用此语句来实现对别的软件的自动控制。妙!SendKeys语句将1个或多个按键消息发送到屏幕上当前具有焦点的窗口(即活动窗口),就如同在键盘上进行输入一样。语法:SendKeys 按键字串,True或FalseSendKeys "abc",true其中,按键字串是指在键盘上接连按下了哪些键,多次按下构成的1个"按键字串",如连续按下A,B,C键为"ABC",要用引号。按键字串还可用变量,如:m="abc": sendkeys m,true.此时不要引号。第2个参数是表示当按键消息发送出去后是否等待。等待消息处理完毕才返回到过程中,而false则在按键发送出去后立即返回过程,去执行本程序的其他部分。关于按键字串的规则:1,普通字符键直接用字符表示即可,如"H5A2SD".2,非字符键用大括号括住键名表示,如按下ESC键为{ESC},按下NUMLOCK键为{NUMLOCK},按下PAGEDOWN为{PGDN},按下F2为{F2}等等。见下面的表。3,与Shift,Ctrl,Alt按键的组合键。与Shift键组合键,前面加"+"号,并将要与之同时按下的键用大括号括住,如表示"按下E键与C键的同时按下Shift键",表示为"+{EC}",而表示"按下E键的同时按下Shift键,但马上松开Shift键按C键",则表示为"+EC".要注意。同时按下Ctrl键是前加"^"号,同时按下Alt键是前加 "%"号。4,已赋予了其他功能的符号:加号(+);插入符(^);百分号(%);上划线(~);大括号({);中括号([);圆括号(( ).要表示"按下"这些键,则要用大括号括住,如表示加号为{+},表示右大括号为{}}。等等。5,重复多次按下某个键,可用简捷方法{键 次数}方式来表示,如重复按下10次H键,为{H 10},在键与次数间要用个空格隔开。并用大括号括住。再如重复按12次ESC键,则为{ESC 12}(不会有歧义,故不要用嵌套的大括号)。举个例子如下(自动让计算器算数):Private Sub Command1_Click()Dim ReturnValue, IReturnValue = Shell("CALC.EXE", 1) '运行计算器。AppActivate ReturnValue '激活计算器。For I = 1 To 100 '设置计数循环。SendKeys I &&"{+}", True '按下按键给计算器Next I '将所有I值相加。'SendKeys "=", True '取得总合。'SendKeys "%{F4}", True '用Alt+F4关闭窗口End Sub功能键如下:BACKSPACE:{BACKSPACE},{BS}或{BKSP} BREAK:{BREAK}CAPSLOCK:{CAPSLOCK} DELorDELETE:{DELETE}或{DEL} DOWNARROW:{DOWN} END:{END}ENTERRETURN:{ENTER}或~ ESC:{ESC}HELP:{HELP} HOME:{HOME}INSorINSERT:{INSERT}或{INS} LEFTARROW:{LEFT}NUMLOCK:{NUMLOCK} PAGEDOWN:{PGDN}PAGEUP:{PGUP} PRINTSCREEN:{PRTSC}RIGHTARROW:{RIGHT} SCROLLLOCK:{SCROLLLOCK}TAB:{TAB} UP:{UP}F1-F16:{F1}-{F16}是否可用此语句来枚举软件密码,让电脑自动输入每1个可能的值,以达到破解的目的,我想如果可能的话,会是1种纯天然的破解法。主要的ASCII值在32-126之间,包括了大小写字母.数字和标点符号。在计时器事件中不断累加ASCII值("%"符号不能进行枚举,它好象会暂停计时器事件)。对位数少的密码还是能起到一些作用吧。NO。★ 在VB中如何打开一个可执行文件?用shell函数,格式为:任务ID号=shell(路径及程序名称,运行时的窗口样式)如:x = Shell("D:\unzipped\tc001\C语言速成3.0\caic300.exe", 1) 任务ID号:一个可执行文件如果打开成功,就返回一个任务ID号(一个整数),如果打开不成功,就返回0。随便用一个变量表示。路径及程序名称:包含路径及程序名,必需的参数或命令行变量,如打开同一个包里的程序,用CurDir关健字取得当前路径,由于在同一路径下,再加上要执行的程序名就可以了,如:Private Sub Command4_Click()Y$ = "\软件片尾.exe" 用一个字符串变量,注意:斜杠不能丢。hl$ = CurDir + Y$ CURDIR是返回当前的路径(自动获取)x = Shell(hl, 1) h1代表了完整的路径名及程序名称这样,不管"软件片尾"在什么路径下,只要和这个VB程序在一起,就可运行它。msgbox对话框在出现时会伴随一个警告声音,如果用"变量=msgbox("a",b,"c")"的方式,即作为表达式,声音重一些,如果用"msgbox "a",,"c" ",即作为语句,声音就轻些。在调用函数或过程时,该函数或过程如果作为表达式,则其实参要括号,如果调用时是作为语句,实参则不要括号。下面两句是等价的。SetWindowTextA Form1.hwnd, "API函数修改标题栏文字" --函数语句Call SetWindowTextA(Form1.hwnd, "API函数修改标题栏文字") --函数为表达式★ 色彩函数:RGB(红,绿,蓝);我们知道,任何色彩都是由红色,绿色,蓝色三原色组成的,用RGB(红,绿,蓝)函数,指定一个色彩中的红,绿,蓝色的成份值,来得到各种各样的颜色,三种原色的成份值范围在0-255的整数之间,值越大表示此类色成份越浓,如:text1.backcolor=RGB(255,0,0) ,TEXT对象背景色为红色;text1.backcolor=RGB(0,255,0) TEXT对象背景色为绿色text1.backcolor=RGB(0,0,255) TEXT对象的背景色为蓝色text1.backcolor=RGB(255,255,0) TEXT对象的背景色为黄色……三种成份值都为0时为黑色,三种成份值都为255时为白色。在我们编程中通常用RGB表示颜色,而缺省情况是用1个长整数来表示的,怎样将point方法返回的长整数转换为RGB呢?公式如下:用XXX表示point方法返回的表示颜色的长整数:红色成份=XXX Mod 256绿色成份=((XXX And &HFF00)/256)&Mod 256蓝色成份=(XXX And &HFF0000)/65536★ DIR函数:查找文件或确定某文件是否存在。返回文件名,格式:变量=DIR(路径及文件名,属性)a=dir("d:\vb6\lxn*.*")(用来查找时就要用通配符*来代替一些部分)可以不指明文件名,而只指明路径,如a=dir("c:\windows\"),这时,多次调用可连续返回"windows"这个文件夹目录下的全部常规文件。(隐含文件等要用"属性"参数),上例a为查到的满足条件的第一个文件,如果要将所有满足条件的文件全部查到,则要省略参数重复调用DIR函数,在第二次调用DIR省略参数时,视为接着寻找下一个满足条件的文件,例下:Private Sub Command1_Click()lxn = Dir("d:\vb6\lxn*.*") 指定一定的路径,在这个文件夹下查找Do While lxn
"" 如果还有满足"lxn*.*"特征的文件时(不然调用DIR返回空 List1.AddItem lxn 把查到的文件名放入列表框中lxn = Dir() 继续查找下一个LoopEnd Sub"属性"参数有以下几个:vbNormal 0 常规 (缺省)vbReadOnly 1 只读vbHidden 2 隐藏vbSystem 4 系统文件vbVolume 8 磁盘卷标;如果指定,则其它属性都会忽略vbDirectory 16 目录或文件夹vbArchive 32 存档注:如果给Dir函数指定参数,Dir不仅会返回指定属性类型的文件,还会返回所有属性值比它小的文件,如lxn=dir("c:\",16)不仅返回文件夹,还将返回常规(属性为0),只读(为1),隐含(为2)……等属性值小于16的全部文件。"属性"参数的设置值最大可为63。用0+1+2+4+8+16+32得到,这样将返回所有的文件(夹),如只显示文件夹,而不显示任何文件,先设"属性"参数为16,再结合一个函数GetAttr,例下:lxn = Dir("c:\", 16) 此例只能显示根目录下的文件(夹),若要查多级子目录Do While lxn
"" 下的文件(夹),可采用将查到的文件夹名又累加到Dir If lxn
"." And lxn
".." Then 路径中去的办法,嵌套进行。If GetAttr("c:\" &&lxn) = 16 Then List1.AddItem lxnEnd IfEnd Iflxn = Dir()Loop其中有个函数GetAttr:格式:整型变量=GetAttr(路径及文件名)lxn=GetAttr("c:\windows"),lxn就等于16(windows是文件夹嘛)返回一个文件或文件夹的属性值,是只读的还是隐藏或是文件夹等,用一个整数值表示,如下:0:常规文件1:只读属性文件;2:隐藏文件;4:系统文件:16:文件夹。32:存档属性文件返回值就是这些值的和,如有个文件lxn既是只读又是隐藏,那么 a=getattr("c:\lxn"),a就等于3。★ 有关取得时间信息的函数(它们返回的都是integer型数),看下面的例子一下便懂。年 = Year(#3/22/2000#) "年"就等于2000月 = Month(Date) 月=6日 = Day(Date) 日=23 (今天的日期嘛,用中文当变量,怎么样?)小时 = Hour(#7:03:44 AM#) 小时=7(AM表示上午)分钟 = Minute(Time) 分钟=12星期=WeekDay(Date) 返回1代表星期日,返回2代表星期一等等。秒种 = Second(#7:43:12 PM#) 秒钟=12(PM表示下午)此外还有三个直接的函数:Now 获得当前的日期和时间。如:01-9-13 16: 09: 42.Date 获取当前日期。如:01-9-13Time 获取当前时间,如:16: 09: 42★ 将一个字符串或值为字符串的变体变量转换为整型变量,首先要确定该字符串内存储的是否为纯"数字"字符,可用IsNumeric函数来检测,如:if isnumeric(lxn)=true then a=cint(lxn)★ 文件操作的一部分函数:读取当前目录函数:Curdir函数。格式:Curdir(驱动器)。例:Curdir("c")返回C驱动器的当前目录,如果驱动器省略,则返回当前驱动器的当前目录。复制文件的FileCopy语句,格式:FileCopy 源文件路径及文件名,目标路径及文件名FileCopy "e:\games\Bh2k\Bh2000.exe", "c:\windows\desktop\bb.exe"注:不能复制正打开的文件。设置文件属性SetAttr函数,读取文件属性GetAttr函数:设置文件属性格式:SetAttr 文件路径及名称,属性值SetAttr "c:\windows\desktop\bb.exe", 1字符串的比较:一般在VB中缺省的比较是区分大小写的,如A<a,B<b,而我们有时需要不区分大小写的比较,这时可在模块的顶部声明段用"Option Compare Text"关健字来声明是"文本比较模式",(区分大小写的是二进制比较:Option Compare Binary ).★ 处理字符串的函数:去空格:LTrim(字符串):去掉字符串左端空格;RTrim(字符串):去掉字符串右端空格;Trim(字符串):去掉字符串两端空格。查找:InStr(查找的起点,父字符串,要查找的子字符串,0或1或2),返回父字符串中第1次出现要查找子串的位置值(为整型值),最后"0或1或2"为参数,0表示区分大小写,1和2表示忽略大小写。查找起点从父串开头最小1开始。如:lxn = InStr(1, "abcdeffgh", "fgh", 1) lxn等于7。其实用instr(父串,子串)就可以了,如lxn=Instr("abcdeffgh","fgh").Filter:搜索字符串数组中的特定子串,格式:filter(一维字符串数组,要查找子串)s = Filter(lxn, "bc")返回一个新的数组,其中包含多个查找到的满足条件的字符串。怎样的"满足条件"?如上面lxn有多个元素,其中有lxn(9)="abc",lxn(12)="bcd",这2个就是满足条件,而lxn(3)="b"就不满足了。有时我们不知道它会返回多少个元素,可将查询结果赋给一个变长数组。如上面应先dim s() as string.返回的s有:s(0)="abc",s(1)="bcd".Join:将字符串数组组合成一个字符串,格式:新字符串=Join(一维字符串数组,元素间分隔符)a$=join(lxn,"")注:元素间分隔符是指定每两个原来的"元素"间的分隔符号,如果缺省,则用空格分开,如果为"",则紧密连接,如有个lxn有"abc","bcd","cde"三个元素,那么a$=join(lxn),a$就为"abc bcd cde",而a$=join(lxn,""),返回"abcbcdcde",而a$=join(lxn,";")则返回"cde"split:将字符串分隔成字符串数组,格式:split(字符串,标识元素边界的字符,限定元素个数)如果元素个数设为-1,则返回全部子字符串(元素)。StrReverse:反转字符串,格式:StrReverse(字符串),很简单。如a$=StrReverse("abcd"),a$就等于dcba.Replace:对字符串中特定子串进行查找并替换,格式:新字符串=Replace(原字符串,查找子串,替换为子串,查找起点,替换次数) 查找起点若缺省,则从原字符串开头起查找子串,替换次数若设为-1,则将查到子串全部进行替换(缺省)。例如:a$ = Replace("lxnlxm,my name is lxn", "lxn", "李新宁"),将lxn换成李新宁,a$等于"李新宁lxm,my name is 李新宁"★ 文件操作函数补充:FileAttr:返回用Open打开文件的模式。FileDataTime:检索文件的日期,时间。FileLen:返回文件的字节长度。相当于LOF,只是filelen后可指定任一文件名,而LOF后是"在程序中用Open打开的文件号"。FreeFile:返回下一个可用的文件句柄。Loc:返回当前文件位置。Lock:锁定文件。LOF:返回打开文件的长度。Name…As…重新命名文件,目录。Reset:关闭所有open语句打开的文件。格式: ResetSeek:返回当前文件位置。UnLock:对文件进行解锁。★ 编写对象的自动拖放操作:1。将要拖放对象的dragmode属性设置为1(这样就可自动拖动)2。设置要拖放对象在拖动过程中的图标提示:dragicon属性。3。编写拖放终点对象的dragdrop事件(或dragover事件)过程。例:将窗体上图片框1的图片拖到图片框2里:Private Sub Form_Load()Image1.Picture = LoadPicture("c:\我的文档\my webs\红楼梦4.bmp") 加载图片Image1.DragMode = 1 对象可移动Image1.DragIcon = LoadPicture("c:\ucdos\ico\print.ico") 移动时的图标End SubPrivate Sub Image2_DragDrop(Source As Control, X As Single, Y As Single) Image1.Visible = False 当移到图片框2时,图片框1隐藏。Image2.Picture = Image1.Picture 将图片复制到图片框2中End Sub在image2的dragdrop事件中有三个参数:source和x以及y,source的意思是"源对象",即要拖动对象,这里可用它来代替image1,如在事件过程中写:source.visible=false image2.picture=source.picture★ 在窗体中添加简单的动画:对象的移动 MOVE 方法:要移动的对象.MOVE 移动后横坐标,纵坐标,宽度,高度picture1.move 800,500 (单位:缇;1缇=1/1440英寸用MOVE方法不仅可以移动对象位置,而且可以改变对象的尺寸大小,如下:对象名.move left,top,width,heightForm1.Move 00, 50 (注:单位为缇)例:Private Sub Form_Load()Picture1.Picture = LoadPicture("c:\我的文档\my webs\红楼梦1.bmp") Timer1.Interval = 1Timer2.Interval = 1Timer1.Enabled = TrueTimer2.Enabled = FalseEnd SubPrivate Sub Timer1_Timer()If Picture1.Left > 0 And Picture1.Top > 0 Then Picture1.Left = Picture1.Left - 50Picture1.Top = Picture1.Top - 70ElseTimer2.Enabled = TrueTimer1.Enabled = FalseEnd IfPicture1.Move Picture1.Left, Picture1.TopEnd SubPrivate Sub Timer2_Timer()If Picture1.Left < 5000 And Picture1.Top < 3000 Then Picture1.Left = Picture1.Left + 50Picture1.Top = Picture1.Top + 70ElseTimer1.Enabled = TrueTimer2.Enabled = FalseEnd IfPicture1.Move Picture1.Left, Picture1.TopEnd Sub★ 添加标准模块:"工程"菜单"添加模块"菜单项。module 1是缺省模块名。此名字可在其属性窗口中改变(只有此一项"属性")。标准模块与窗体模块并列于一个工程之内。在标准模块中声明公用变量(或叫全局变量)格式:public 变量名 as 类型public lxn在前面我们用DIM定义变量,它们都只是局部变量,即只在某个事件过程中可见,而在标准模块中定义的全局变量,则在整个工程中可见,即定义一次之后在其它任何事件中可直接访问。在标准模块中创建通用过程:通用过程在整个程序中可见。象全局变量一样。可创建三种类型的通用过程:函数过程 ,子过程(也叫sub过程) ,属性过程函数的语法格式:public function 函数名(形参表) as 返回值类型 (这个"as返回值类型"不能丢!!) 函数体函数名=返回值End function在事件过程中调用函数的方式为:变量=函数名(实参) --它代表一个确定值,本质是一个变量,可以出现在变量可出现的任何地方。附出错经验一则:我想在一个事件中用个变量a,使第一次单击该事件时a=1,第二次单击该事件时a=2;第三次单击该事件时a值为3,即自增1的运算,我在事件中写:dim a a=1a=a+1可每次单击都得到同一个值2,原来,这是因为a是该事件中的局部变量,每单击一次就重新执行一次,后来,我想在form_load()事件中写:dim a a=1,然后在 该事件中只写 a=a+1,结果却变成a每次都是1,怎么回事?form_load事件不是每次程序运行时自动运行的吗,没错,但form_load本身也只是一个事件,在其中定的变量dim a也属局部变量,只在form_load一个事件中可见,因此在另一个事件中用到的a根本没定义,如何定义一个变量在同一个窗体模块中各事件均可见呢?那就是在"(通用)"部分进行变量的声明,这样在该窗体模块中都可见,但通用部分不能直接进行赋值等运算(可按格式编写函数,子程序等等,同标准模块),参考办法:(通用):dim a form_load():(在其他事件也可,只要在引用a值的那个事件前能赋a=1即可)a=1 引用a的事件:a=a+1,"对象.属性名"的本质是一个变量,是在该窗体模块(通用)中缺省声明的变量在标准模块中创建子过程:格式:public sub 子过程名称(形参) --此处要括号过程体end sub函数与sub过程的不同是:函数用其名字返回一个值,子过程处理一段程序过程,无返回值。在标准模块子过程中设置某个对象属性时,必须指明哪个窗体,如:public sub lxn() form1.image1.visible=true end sub 其中那个"form1."不能丢。在事件中调用子过程的格式: 子过程名称 实参 --这里的实参不要用括号,如果调用时作为表达式才要括号,多个实参用逗号分开。不论是函数或是sub过程,其形参与实参之间必须保证类型与数量的一致。★ 在文本框的一个输入字符串尾加上" &&chr(13)+chr(10)",它能自动换行。或者用VB的常数vbCrLf也可换行。相当于C中的"\n".如:a$="李新宁" &&chr(13)+chr(10) text1.text=a$
阅读(3862) | 评论(2) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
: 错误处理程序使程序在出错时继续运行
这个好强大,C++好像不行.....vb& &是 xp 上的 语言,c++ 比它强大&&我觉得
错误处理程序使程序在出错时继续运行
这个好强大,C++好像不行
请登录后评论。

我要回帖

更多关于 vb计算器代码 的文章

 

随机推荐