




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
代码基础:变量的简单定义格式:dim 变量名 这种定义未指明变量的数据类型,这时的变量类型是变体类型,它自动识别字符串或数字(字符串要加引号)。数据类型的定义方法:定义变量最简单的方法是用Dim关键字,它的语法:Dim 【变量名】As 【数据类型】如:Dim Index As Integer也可以在一行中定义多个变量,如:Dim Index As Integer , Number As Long但把多个变量定义成同一类型不能写:Dim Index , Number As Integer ,这样实际index是变体变量。有时为了简便,也以符号进行简单的定义,作用是和上面一样的。整型可以用%代替,长整型可以用&代替,单精度可以用!,双精度实型可以用#定义,字符型用$,如刚才的第一个例子可以写成:Dim Index% 等价于 Dim Index As Integer对于常量的定义用Const定义,如:Const COLOR=255。const PI=3.1415926注:变量一般用小写,常量则全部大写。对于程序中经常出现的数值,应设常量,这样一是书写方便,其二,如果要改变该数值,只需改变定义常量的语句值,而不需改变每个语句,提高了效率。重点笔记: 变量变量名要以字母开头,在变量名中唯一能用的符号是下划线(_),相同的大写或小写字母的变量,视为同一变量,即不区分大小写。变量的作用范围关健字:Public(公用), Private(单个模块),Dim(局部);在VB代码区域中包含四类模块区域:窗体,MDI窗体,标准模块,类模块。这是第一层;每一模块区域又分成了通用区域和过程区域,这是第二层。这就是VB的结构,各个区域之间界线分明。变量受这些因素的影响也要采用不同方式,标明它的作用范围是全局还是单个模块还是单个过程。1,在单个事件过程中可见的:在本过程内部用DIM关健字;2,在单个模块中可见的:在本模块顶部(窗体模块会标明通用字样)声明段用Private关健字(也可用DIM关健字);注意,不能在一个过程内部声明模块级变量。3,在所有模块可见的:在任一模块顶部(窗体模块会标明通用字样)声明段用Public关健字,注意:1,在Form窗体模块顶部的通用部分不能声明public的数组,常数,结构类型和API函数。2,在一个过程的内部不能声明公用变量。在一个事件中用DIM声明的局部变量,每次触发时产生,完成后消失,不会保留事件运行后的值;如果要一直保留一个局部变量的值,要使用-静态变量。在过程内部用static关健字声明,它能在第二次触发该事件时保留前一次运行结果,继续运算,而不会来个重新DIM,初始化,它只在运行时第一次触发该事件时进行初始化。注:静态变量如果要初赋值,不能直接进行,要根据变量未赋值的状态使用if语句,如lxn为变体变量:if lxn=EMPTY then lxn=336525,例下:Private Sub Command1_Click()Static lxn As Integerlxn = 5 错!应改为 If lxn = 0 Then lxn = 5lxn = lxn + 1Print lxnEnd Sub变量的数据类型:一,数值型。1,整型(integer),声明字符%,范围-32768到32768。占用2字节。2,长整型(long),声明字符&,范围-2147483648到2147483648。占用4字节。3,单精度实型(single),声明字符!,小数点后有效数字7位,占用4字节。4,双精度实型(double),声明字符#,小数点后有效数字15位,占用8字节。5,货币型(currency),声明字符,(Email地址中的那个at号小老鼠),这种类型精度高,专用于货币计算或定点计算,小数点后有效数字4位,占用8字节。6,字节型(byte),存储0-255之间的整数,常用来存储二进制数据,图形和声音文件等,它只占1个字节,节省资源!二,字符串型(string),声明字符$.1,变长字符串变量,平常定义的如:dim(public) lxn as string,运行时自动调整长度。2,定长字符串变量,定义如:dim(public) lxn as string*50,这时lxn被定义为包含50个字符的变量,给它赋值时若少于50个字符,则用空格补足(要删除空格用Trim和RTrim函数),多于50个则删掉。使用定长字符串的情形如在随机文件的读写操作中,注:定长字符串不能在类模块中定义为公用(public)变量。三,日期型(date)任何可辩认的文本日期都可赋值给date变量,日期文字前后要加上#号,或直接用文本定义,格式:dim 变量名 as date.dim lxn as date赋值格式:变量=#(或)月/日/年/ 时:分:秒 AM或PM#(或)lxn=#06/14/01 20:50:31 AM# 或lxn=06/14/01 8:50:31 PM如果是一个数值直接赋给日期型变量,如lxn=35477.998,则小数点左边的值代表日期信息,小数点右边的值代表时间信息(如午夜为0中午为0.5),上面lxn的时间值显示为97-2-16 23:57:07.(我没看懂)。四,逻辑型(boolean)也叫布尔型变量,它只有两个值:true(-1)和false(0).问题:当为true时值是1还是1?我试了一下是1,即用print cint(x)试的。五。变体型(variant)可适用于各种数据类型,一个没有指明类型的变量VB就指定为此类型。六,对象型(object或commandbutton或textbox.等对象名,模块名)这种变量为指向程序中对象的指针,先声明为某类型对象,格式:dim 变量 as 对象类型名 (如果对象为object,则表示可指向任何类型对象) dim lxn as commandbutton (定义lxn为按纽对象类指针),赋值格式: set 变量名=对象名称Set lxn=command1这时,就可以用lxn来代替command1了,如: lxn.caption=退出注:如果加上New关健字,可以新建窗体,类模块,对象库中的对象,对象变量就成了1个对象。Set变量名=New对象名称 。七,自定义类型,也叫结构类型。第1步:建立类型:必须在模块级用type语句定义,格式:private(或public) type 类型名成员1 as 类型成员2 as 类型end type如: private type ldda as stringb as integerc as stringend type第2步:定义此类型的一个变量:格式:dim(或public等) 变量名 as 刚才创建的类型如: dim lxn as ld d第3步:变量的赋值及使用:用点号连接每一个成员,分别赋值,赋值格式:变量.成员1=值变量.成员2=值如: lxn.a=李小敏lxn.b=336525lxn.c=李新宁凡是在程序中使用时,就要以变量.成员名来引用。八,枚举类型。在模块通用部分声明,格式:Private(Public) Enum 类型名 private enum lxn成员1(可选=常数) 李新宁成员2(=常数) 李小敏end Enum end Enum然后在程序中定义一个此类型变量,Dim 变量 as 类型。如:dim m as lxn意思是:变量m的取值范围是 :李新宁(值为0)或李小敏(值为1)值为0?不给成员赋值,缺省状态时第1个成员为0(相当于写:李新宁=0)第2个成员为1类推,总之成员的值为一个长整数。可自己赋给。枚举类型的作用是在代码中可简化某些总在几个值之间切换的情况,引用如写if m=李新宁 then end(这种类型实用价值不大)。变量数据类型的转换,有以下函数:cbool(字符串或数值表达式) -返回布尔类型,如:a=2:b=2:lxn=cbool(a=b)那么lxn值为truecbyte(0到255的整数) -返回BYTE类型ccur(参数) -返回货币型cdate(一个有效的日期表达式) -转换为日期型cint(参数) -返回(或叫转换)integer型,参数的小数部分四舍五入clng(参数) -返回long型,小数部分四舍五入。csng(参数) -返回single(单精度)型,cdbl(参数) -返回double(双精度)型。cvar(参数) -返回变体型cstr(参数) -返回string字符串型。判断代码中一个变量的数据类型的函数:vartype(变量名)或typename(变量名),vartype(变量名)返回一个整数值,如返回2代表整型,3代表长整型,4代表单精度,5代表双精度,7代表日期型,8代表字符串等。例如有个叫lxn的变量,不知它是什么类型,可用x=vartype(lxn),如果x等于2就说明lxn是整型,8就是字符串等等。typename(变量名)返回一个该变量类型名的字符串,如lxn是整型变量,那么typename(lxn)返回值为integer字符串。 数组的定义类似于变量定义,所不同的是数组需要指定数组中的元素个数,例如:Dim lxn(99) As Integer这个数组中包含100个元素,下标从0到99。也可以指定下标的起始值,例如:Dim lxn(2 to 10) As Integer这个数组含有九个元素,下标从2到10。还可以定义多维数组:Dim lxn(4,2 to 5,3 to 6) As Integer上例定义了一个三维数组(444)。 VB算术运算符:+(加),-(减),*(乘),/(除),(整除),Mod(取余数),(乘方),&(字符串连接)算术运算符优先级:()括号;乘方;-负号;*。/乘,除;整除;Mod取余;+,-加,减VB比较运算符:=(等于),(不等于),(大于),=(大于等于)逻辑运算符: And:两边表达式为真时,结果为真;Or:两边表达式只要有一个为真时,结果为真;Not:后面跟的表达式若为真,结果为假,后跟表达式为假,结果为真;Xor:两边表达式一真一假时,结果为真,若两边表达式同真同假,结果为假。 IFTHEN语句:简单: if 条件 then 语句复杂: if 条件1 then语句11语句12语句13elseif 条件2 then语句21语句22语句23elseif 条件3 thenelse前面条件都不成立时执行语句end if分支结构:select case 语句结构:select case 变量 (也可以是一个属性或表达式)case 可能值一(数值,字符串或其他值)语句case 可能值二语句case 可能值三语句case 可能值四,可能值五,可能值六(如果有多个可能值都执行一条语句,写在一起,用逗号隔开)语句case else (也可以没有)语句end select在select case 语句中可以使用关系运算符大于小于等于=等关系运算符,需要用关键字IS和TO。用个例子来说明:Private Sub Command1_Click()Dim age As Integerage = Text1.TextSelect Case ageCase Is 100 (如果age大于100时)Label1.Caption = 你真是个老不死!Case Else (如果age不满足以上所有值的范围时)Label1.Caption = 按道理我要尊重你。End SelectEnd Sub看会了吧,就照着用即可。循环结构:FORNEXT语句:格式:FOR 循环变量=初值 TO 终值 STEP 步长循环体NEXT 循环变量如果在循环执行过程还未结束时要跳出循环,可用exit for 语句。例:Private Sub Command2_Click()Dim a%, name$For a = 1 To 10name = InputBox(输入姓名)Print nameIf name = lxn Then Exit ForNext aEnd Sub第二种很重要的循环结构是: DO 循环格式:A。 DO WHILE 条件循环体LOOPB。 DO循环体LOOP WHILE 条件将WHILE条件放在循环体的前面与后面,是不同的,A格式的条件在前,执行时先检测条件,为真则执行循环,为假则不执行循环,如果第一次检测条件即为假,则一次也不执行循环,B格式的结构WHILE条件在后,能保证不论条件的真假至少能执行一次循环。例:Private Sub Form_Load()Dim hs$, ss%Dohs = InputBox(输入, 华氏) -INPUTBOX的提示栏,标题栏,它的所有输入都是字符型ss = Int(Val(hs) + 40) * 5 / 9 - 40)MsgBox ss, , 摄氏度 -MSGBOX的输出内容,标题栏,无按纽参数Loop While hs 但逗号不能少end -由于是在form_load事件中,所以这个end不可丢。End Sub上例将华氏温度转为摄氏度。(下一页) (返回) 编写对象的自动拖放操作: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:ucdosicoprint.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 5000, 0, 5000, 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 ThenPicture1.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 ThenPicture1.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 aa=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$ 什么是集合? 集合是一组相关的对象。窗体上的全部对象被称作controls(控件)集合,如果一个程序有多个窗体,就要在前面加上窗体名称,如:form1.controls,每个窗体都有一个controls集合。这种集合被视作也是该窗体的一个对象,它与窗体的关系地位有点象windows的文件夹。可以通过集合引用其中的对象,格式一,直接使用(集合名!元素):窗体名称.controls!对象名称.属性=属性值form1.controls!label1.caption=李新宁注:其中的感叹号是controls集合与对象的连接符号格式二,采用该对象在controls中的索引值(集合名(索引):窗体名称.controls(索引值).属性名=属性值form1.controls(1).caption=李新宁注:一个对象在其所在窗体controls集合中的下标是如何排列的呢?-按对象创建时的顺序逆向确定其下标值,最后一个创建的对象下标为0,倒数第二创建的那个对象下标为1,如果该窗体共有n个对象,那么一开始创建的那个对象的下标为n-1.集合的运用:FOR EACHINNEXT 循环 ,对一组对象(对象组)的操作。格式: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一种,还有其他如窗体集合,数据库集合等,值得重视。 数组: 固定了元素数量的数组叫定长数组,元素数量可在程序运行中改变的数组叫动态数组。定长数组的声明:全程(公用)数组(在标准模块中):public 数组名(第1维长度,第2维长度,) as 数据类型局部数组(在某事件中):static 数组名(第1维长度,第2维长度,)as 数据类型例: public lxn(19) as string 下标从0到19共20个元素。创建动态数组:步骤:1。不指明下标定义数组。如public lxn() as integer,同时在标准模块中定义一个变量。 如: public a as integer2.在程序某处设置一个变量(或其他可确定值)值,如:a=inputbox(输入,个数);3。用redim语句确定数组大小。如: redim lxn(a)也可以不用第3步,直接在数组使用时用a限定其FORNEXT循环上限。for x=1 to alxn(x)=next x在一个事件的中途要退出这个事件,用 Exit Sub 关键字。 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执行下一句 elsemsgbox(无法找到此文件),找不到 其他错误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), , aMsgBox (lxn.dwAvailPhys), , bMsgBox (lxn.dwAvailVirtual), , cMsgBox (lxn.dwLength), , dMsgBox (lxn.dwTotalPageFile), , eMsgBox (lxn.dwMemoryLoad), , fMsgBox (lxn.dwTotalPhys), , g 这些a,b,c,d,e是标题条中随便起的。(上一页) (下一页) (返回) 用VB在硬盘上创建一个文件夹:Mkdir语句。格式:Mkdir 路径及文件夹名mkdir c:windowsdesktop李新宁 在桌面上创建个名为李新宁的文件夹又如: Private Sub Command2_Click()MkDir c:windowsdesktopmydirEnd 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库名 有一点要注意,如果不是调用Windowssystem文件夹下的DLL库,则要指明路径名,如:public declare function lxnsdll lib d:studentmydll.dll(byval a as integer,byval b as integer) as long在程序中窗体的运行位置是用一个叫做窗体布局的窗口来调整的,可否用另外的替代法,而不用这个不精确的窗体布局窗口呢?当然可以,那就是在代码中,例如要使窗体居于显示器中央,有两个新属性变量,screen.width和screen.height,分别表示本显示器的屏幕宽度(screen.width)和显示器高度(screen.height).用屏幕宽度减去窗体FORM1宽度再除以2,就可得到FORM的left左边距了(也就是横坐标吧),用屏幕高度减FORM1高度再除以2。就可得到FORM的top上边距了(纵坐标),这样便可居中,如下:Form1.Left = (Screen.Width - Form1.Width) / 2Form1.Top = (Screen.Height - Form1.Height) / 2VB基本概念:对象-对象是具有某些特性的具体事物的抽象。我在使用VB时遇到一个问题,我想用一个组框(frame1)将几个按纽括在一起,可是当组框画上去后却会把按纽都覆盖掉。按纽不见了(在frame1图层下面),怎么办?什么办法可以决定几个对象重合时,哪个在上,哪个在下?办法如下:1,选中要改变图层前后的对象;2,在格式菜单中顺序菜单项中选置前(在上面)或置后(在下面)即可。另外,在代码中也可以,用zorder方法,格式:对象名.zorder 0或1(0为置前,1为置后)frame1.zorder 1重点笔记: 事件在WINDOWS中最主要的事件就是鼠标事件,特别是其中的click单击事件,此外还有dblclick事件:双击事件,用法与click一样。mousedown事件:鼠标按下时发生,有一个值得注意的参数button,它返回按下鼠标左键还是鼠标右键,采用if button=vbleftbutton.代码来写。mouseup事件:鼠标先按下然后抬起时发生,用法与mousedown一样。mousemove事件:鼠标经过时发生。第二类的事件就是键盘事件,这类事件的掌握要加强。一个控件得到焦点后,就可以触发这一类事件,有以下几种:keydown事件:按下键盘上某个键时发生。但键盘上键那么多,需要用它返回的keycode参数来指明按了哪个键,例下:Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyB ThenPrint 你按下了字母BElseIf KeyCode = vbKeyF1 ThenPrint 你按下了F1键End IfEnd Sub注:在keycode参数中,主键盘上的数字键和数字小键盘上的数字键是不同的,主键盘上用vbkey0-vbkey9表示,而小键盘上的键用vbkeyNumpad0-vbkeyNumpad9来表示。keyup事件:松开按键时发生,与keydown事件用法一样。keypress事件:按下某个键接着松开这个键时发生。注意,它的参数与keydown及keyup不同,它是采用字符ASCII码的方式,即用一个叫Keyascii的参数名,可以区分大小写,但有些功能键不能用。if keyascii=0到255的一个整数 then .来写,例如:Private Sub Form_KeyPress(KeyAscii As Integer)If KeyAscii = 120 Then 120是小写字母x的ASCII码值Unload MeElseIf KeyAscii 57 Then 数字键的ASCII码在这个范围内MsgBox (你输入的不是数字), 48End IfEnd Sub其他重要的事件有:change事件:当对象的内容改变时发生。gotfocus事件:当焦点从一个对象移动到当前对象时,当前对象发生gotfocus事件。lostfocus事件:当焦点从当前对象移出时,当前对象会发生lostfocus事件。 keydown事件和keypress事件有什么实际运用上的差别?keydown多常用于功能键(如F1),需要shift,ctrl,Alt+字符键的组合键,区分数字小键盘和常规数字键等keypress所不能的情况,keypress以ASCII码来区分按键,侧重键的内容,而keydown和keyup侧重键的位置。我想在文本框中限制只能输入数字,怎么办最方便?可用keypress事件,如下:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii 57 ThenKeyAscii = 0 等于0表示没按键,它在text1对象text属性接入字符前产生,因Beep 此可限制输入。End IfEnd Sub集合(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就等于集合中元素个数。自定义过程:Private(或public,static) sub 过程名(形参)end sub调用:Call 过程名(实参) 或 过程名 实参自定义函数:private(或public,static) function 函数名(形参)as 类型函数名=值end function调用:函数名(实参) 为一个确定值,上面函数与过程区别是:函数一定有返回值,所以定义时要指明(返回值)类型,并在函数过程中设定函数名=值来确定返回值。调用函数时如果也用CALL,则函数的返回值就失去意义(这样合是合法)。 基本的类操作:类形象理解为控件即可,创建一个类,也就是自已创建一个象工具箱中控件那样的新控件。自己设置添加它的属性,方法。只不过自己发明的新控件没有图标,所有属性,方法,事件只能在代码中进行而已。类是用来创建对象实例的模板。1,在工程菜单中选添加类模块。在属性窗口修改它的(名称)属性为想要的名字,这个名字将作为这个类(为好理解,叫成新控件)的名字。2,制作新控件属性:在类模块中通用部分(此时全都是)用Public声明一群变量,要指明具体类型,这些所有变量就成了新控件的属性。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中语文 第一单元 第3课 囚绿记说课稿2 新人教版必修2
- 第5课 智能安防护安全说课稿-2025-2026学年小学信息科技泰山版2024六年级上册-泰山版2024
- 2025合同样本:电子产品代理合同范本
- 电池厂原材料存储条件实施管理规定
- 8.1《荷花淀》教学设计 2024-2025学年统编版高二语文选择性必修中册
- 化肥厂化肥样品反馈细则
- 本册综合教学设计-2023-2024学年小学英语Level 3剑桥国际少儿英语(第二版)
- 人教版(2016年)七年级历史下册 说课稿 第8课 金与南宋的对峙
- 人教版初中历史与社会八年级上册 1.2.1 早期国家与社会 说课稿
- 六年级信息技术上册 奇妙的爬行动物说课稿2 冀教版
- 考务资格审核培训
- 2025四川成都蒲江县国有资产监督管理局县属国有企业招聘管理人员7人考试参考题库及答案解析
- 人工智能算力中心项目技术方案
- 电动车骑行安全培训课件
- 2025-2026学年北师大版(2024)小学数学三年级上册《综合实践:校园里的八个方向》教学设计
- GB/T 46238-2025淡水水下搜救机器人通用技术条件
- 创造性思维训练题库及答案
- 2025版施工合同主体变更与工程竣工结算协议
- 选矿技术基础知识培训课件
- 校车安全管理操作规范
- 2025-2026学年苏科版(2024)初中物理九年级上册教学计划及进度表
评论
0/150
提交评论