第三章VB的基本语法.ppt

上传人:sccc 文档编号:5940790 上传时间:2023-09-06 格式:PPT 页数:44 大小:212.54KB
返回 下载 相关 举报
第三章VB的基本语法.ppt_第1页
第1页 / 共44页
第三章VB的基本语法.ppt_第2页
第2页 / 共44页
第三章VB的基本语法.ppt_第3页
第3页 / 共44页
第三章VB的基本语法.ppt_第4页
第4页 / 共44页
第三章VB的基本语法.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《第三章VB的基本语法.ppt》由会员分享,可在线阅读,更多相关《第三章VB的基本语法.ppt(44页珍藏版)》请在三一办公上搜索。

1、第三章VB的基本语法,3.1 基本数据类型数值型integerlongsingledoublecurrencybyte字符串类型string日期类型date同时表示日期和时间dim firstday as datefirstday=#99/12/31#firstday=“99/12/31”firstday=“22:30:50”,逻辑类型boolean逻辑型变量的取值范围只能是true(-1)或false(0)。Dim switch as booleanswitch=trueswitch=-1 这两条赋值语句功能是相同。变体类型variant变体型变量是一种十分灵活的变量,可以保存各种类型 的数

2、据。在定义变量中没有明确指明数据类型时,变量缺省时定义为变体类型。dim xdim y as variant上述两个语句都是定义一个变体变量。,对象类型定义对象变量时,可以直接指明对象的类型。dim obj1 as commandbuttondim obj2 as textbox定义了对象变量后,使用set语句为对象变量赋值。Set obje=command1obj1.caption=“打开”修改命令按钮的标题obj1.fontbold=true用户自定义类型它类似于C语言中的“结构体”类型的数据。Type 类型名元素名 as 类型元素名 as 类型元素名 as 类型end type,例:定义

3、一个employee(职工)类型,其中包括职工号、姓名、年龄。Type employee empno as integer name as string*10 age as integerend type dim emp as emloyee 在后面的程序中我们可以用“变量.元素”这样的形式来引用各个成员。emp.name=“张三”emp.no=83001emp.age=213.2 变量的声明在VB中使用一个变量时,可不加任何声明而直接使用,叫做隐式声明。使用这种方法虽简单,但却不利于程序调试,所以一般对于变量最好先声明,后使用。设置方式:在“工具”菜单中选“选项”,在对话框中选“编辑器”,在

4、“要求变旦声明”中选中。dim 变量名 as 数据类型dim name as stringdim sum(3)as integer,使用static声明变量static 变量名 as 数据类型static a as integer使用static声明变量为静态变量。它与dim声明的变量不同之处在于在执行一个过程结束时,过程中所用到的static变量的值会保留,下次再调用此过程时,变量的初值是上次调用结束时被子保存留的值,而dim 声明的变量在过程结束时不保留,每次调用时需要重新初始化。3.3 运算符和表达式算术运算符+-*/(整除)mod关系运算符=逻辑运算符notandorxor(逻辑异或)

5、eqv(逻辑等于),3.3 字符串连接运算符+&c=“abcd”+“ef”c=“abcd”&“ef”这两式子的运算结果是相同。但是,由于“+”号同时也是加法运算符,VB又支持变体型的变量,所以将加号用做字符串连接运算符有时会引起混淆。因此,在进行字符串连接时应该 选用“&”操作符而不是“+”操作符。3.4 基本语句赋值语句变量名=表达式条件语句1)if then 语句2)if then 语句组 endif,3)if then 语句组1 else 语句组2 endif(例:ch03 ex3.vbp)4)if then 语句组1 else if then 语句组2 else 语句组3 endif(

6、例:ch03ex4.vbp),语句组1,条件,语句组2,T,F,条件1,语句组1,条件2,语句组2,语句组3,T,F,T,F,多分支语句select case 变量或表达式 case 值1 语句组1 case 值2 语句组2 case 值3 语句组3 case else 语句组nend select(例:ch03ex5.vbp)变量或表达式:可以是整型或字符串表达式值:是一组用逗号分隔枚举值。,(例:编写一个分数等级转换表分数等级=90 优=80 良=70 中=60 及格=60 不及格x=Val(Text1.Text)Select Case x 10 Case 10,9 Text2.Text=

7、优 Case 8 Text2.Text=良 Case 7 Text2.Text=中 Case 6 Text2.Text=及格 Case 0,1,2,3,4,5 Text2.Text=不及格End Select 转向语句goto 标号on 表达式 goto 标号1,标号2,,循环语句1)do while 条件 语句体 exit do 语句体 loop2)do语句体 exit do 语句体 loop while 条件 条件真时退出循环3)do until 条件 条件假时执行循环体 语句体 exit do 语句体 loop4)for 循环变量=初值 to 终值 step步长 语句体 exit for

8、 语句体 next 循环变量,例:(实验书第三章练习三)编写求一元二次方程根。(ch03练习3.vbp)注:format(numer,fmt)功能:将数值型量转为字符型量。Numer:为一个数值型 量。Fmt:为用户定义格式。#:显示数字,不在前或后补0。0:显示数字,在前或后补0.:小数点。,:千位符。%:百分比。例:x=2.33333format(x,“#.#”)结果为:2.33 字符串例:求 1+2+3+100的和(ch03ex6.vbp)例:设计一个窗体打印九九乘法表(ch03ex7.vbp)例:编写求1*1+2*2+3*3+100*100的和。Vb常用函数:(见P67),3.5 以对

9、象为核心的程序设计在VB的程序设计中,对象起着最重要的角色,窗体是一个对象,每一个放置在窗体上控件也都是对象。由于VB是面向对象的程序设计语言,它的代码结构与对象有着很大关系,在VB中每一个窗体和控件都有一些预先定义好了的事件。例:命令按钮对象,当用户单击命令按钮时,命令按钮对象会产生click事件。,Click事件,Private sub command1_click()被驱动执行的程序end sub,(单击鼠标左键),对程序而言,可以不处理这个事件,此时这个事件对程序便没有什么作用。但是如果程序要处理这个事件,该如何进行?,因此,如果觉得某个对象的某种事件有进行处理的必要,则以“该对象的名

10、称”与“该事件的名称”定义这个事件程序,如下示:private sub 对象名_事件名()在此编写希望被驱动执行的程序 end sub 将来该对象的这个事件发生时,其对应的事件程序会被驱动。以后学习每一种对象时,需了解该对象会产生哪些事件和事件发生时机,这样才能让用户与所编写的程序充分产生交互关系。了解对象的特性其实很多对象只要看它的名字,就可以了解它的基本特性。例如:textbox 同时亦可以通过了解对象的属性。懂得控制对象控制对象的方法不外乎以下两种:1)设置对象属性2)调用对象方法,其实方法是对象内部的子程序,这种子程序的作用是要求对象执行某件工作。例如:很多控件都具有move方法,调用

11、这个方法可让控件移动它的位置。查阅“方法”要了解某一种对象提供了哪些方法,可以打开该 对象的MSDN帮助文件,再选取“方法”选。3.6 常用事件在程序设计中应用事件驱动模式是VB程序的主流,我们必须了解每一种对象会产哪些事件,以及这些事件产生的时机。随着对象在特性上的差异,可能产生的事件也会有的不同。下面先介绍一些常用事件,及在程序设计中应用。生与灭事件事件 发生时机initialize 窗体第一次被装入时terminate 窗体最后一次被卸载时load 窗体每一次被装入时unload 窗体每一次被卸载时 queryunload 窗体每一次被卸载时,Initialize与load事件区别同样都

12、是发生在窗体被装入时,两者很容易混淆,实际上intialize事件只有在窗体第一次被装入时发生,而load事件是在窗体每次被装入时都有发生。例:打开第三章formlife.vbp什么程序代码写在intialize或load事件程序?1)控件的初始化:几乎都是放在load事件程序中,因为控件会随着窗体的卸载而一起被清除,所以每次被装入时都要进行初始化。2)变量的初始化:放在initialize事件程序中居多,因为变量的内容光焕发不会随着窗体的卸载波而消失。当然,如果希望每次窗体被装入时都有重新设置变量的内容,就要将变量的初始化放在load事件程序中。如何禁止用户使用关闭按钮半闭窗体?在unloa

13、d事件程序中含有一个cancel参数,如果将这个参数设置为true则窗体就不能关闭。,例:在程序中不允许用户通过单击关闭按钮关闭窗体。Dim switch as booleanform_unload if not switch then cancel=true endif end sub command1_click switch=true unload me end subQueryunloadd与unload事件有何区别queryunload比unload事件先发生。,Queryunload事件比unload事件多了一个unloadmode参数 unloadmode可以取值 意义 vbfo

14、rmcontrolmenu(=0)用户单击窗体上的关闭按钮 vbformcode(=1)unload语句调用 vbappwindows(=2)用户结束windows操作系统也即可以利用unloadmode参数来判断用户是否用鼠标单击了窗体上的关闭按钮。借助queryunload事件的参数简化上面的程序。Private sub command1_click()unload meend subprivate sub form_queryunload(cancel as integer,unloadmode as integer)if unloadmode=vbformcontrolmenu the

15、n cancel=trueend sub,Queryunload事件另一个应用:经常用来检验程序结束前,窗口关闭前是否已经保存了该保存的东西,如果尚未保存,就显示一个对话框的信息。对话框msgbox函数使用。Msgbox函数格式:msgbox(prompt,buttons,title)prompt:是一个字符串,设置显示在对话框中信息内容。Buttons:(可选参数)用于显示对话框中显示按钮数。形式、图样见P77。Tile:(可选参数)设置显示在对话框标题中信息。,title,prompt,buttons,例:练习使用msgbox函数(ch03练习11.vbp)1)调用msgbox显示两个按钮

16、(是,否),提示信息“要关闭窗体吗?”。是,关闭窗体,否,2)调用msgbox提示信息为“操作错误”显示图标为3)调用msgbox提示信息为“没有满足条件的记录”,显示图标为:例:(第三章练习5)编写一个程序,当用户单击窗体关闭按钮时,弹出对话框,要用户确定是否真的关闭窗体,是关闭,否取消关闭窗体。状态改变的事件 事件发生时机 activate 当窗体成为活动窗口时 deactivate 当窗体不再是活动窗口时 gotfocus 对象获得焦点时 lostfocus 对象丢失焦点时 rezies 对象大小改变时,Activate与gotfocus事件有何区别只有窗体对象才有activate事件,

17、其他控件都有没有activate事件,它表示窗体变成“活动窗口”gotfocus事件中,除了窗体对象含有这个事件外,其它控件如命令按钮,文本框、复选框、图片框等,也都有含有这个事件。当光标落在某个对象上(对象获得焦点时)则会发生gotfocus事件。例:当输入光标移到textbox时,整个textbox都变成被选区。注:在textbox控件对象中有两个属性,用途是用来设置选取区。Selstart 设置选取区的起始位置sellength 用来设置选区的长度private sub text1_gotfocus()text1.selstart=0 text1.sellength=len(text1.

18、text)end sub例:(第三章练习六)当输入光标移到textbox时,希望将其文字颜色设置为红色,以提醒用户注意,当输入光标离开textbox其文字还原原来的黑色。,当窗体大小改变时会发生resize事件例:让控件随着窗体一起调整大小。(在窗体上放置textbox及picturebox)private sub form_resize()text1.left=0text1.top=0text1.width=me.scalewidth/2text1.height=me.scaleheightpicture1.left=me.scalewidth/2picture1.top=0picture1

19、.height=me.scaleheightend sub键盘类事件 事件 发生时机 keypress 用户按下键盘并且放开时 keydown 用户按下键盘时 keyup 用户放开按键时,例:(ch03/ex12.vbp)P85鼠标类事件 事件 发生时机click 用户在对象上按下鼠标左键并且放开时dblclick 用户在对象上面双击鼠标时mousedown 用户在对象上面按下鼠标左键时mouseup 用户在对象上面放开鼠标左键时mousemove 用户在对象上面移动鼠标时mouseup和click事件有何区别1)如果用户在对象上按下鼠标左键,而鼠标仍然在对象上时放开鼠标,会先发生mouseu

20、p事件再发生click事件。2)若用户在对象上按下鼠标左键,然后将鼠标移到对象之外再放开鼠标:只发生mouseup事件。3)若用户在对象之外按下鼠标左键,然后将鼠标移到对象上再入开鼠标:只发生mouseup事件。,Mouseup与click选择在windows操作的惯例中,所谓“用鼠标单击”指的是“按下鼠标左键,不要移开鼠标并放开鼠标左键”(也就是click意思)。因此,如果程序想要针对用户“用鼠标单击”做反应,就应该 将程序编写在click事件程序中。至于mouseup事件通常与mousedown配对使用。例:写一个可供用户画线的程序,当用户按下鼠标左键时,决定线段的第一点,然后用户会移动鼠

21、标,当放开鼠标左键时,就由第一点画一条线到鼠标指针所在的位置。(ch03练习7a.vbp)如何在对象上作图1)用pset方法画点格式:对象名.pset(x,y),颜色其中颜色可以用RGB函数指定或符号常量(vbred vbgreen vbblue)rgb(red,green,blue)其中:red,green,blue取值0255的整数。点的大小由对象的drawWidth属性决定。功能:返回一个颜色值。,例:在窗体中随机地显示若干彩色的点。窗体上有两个命令按钮:“画点”和“退出”。单击“画点”按钮,则在窗体上随机画上若干点。单击“退出”按钮,结束程序的运行。(ch03练习13.vbp)Priv

22、ate Sub Command1_Click()For i=1 To 3000 x=Rnd*Width y=Rnd*Heightr=Int(256*Rnd)g=Int(256*Rnd)b=Int(256*Rnd)PSet(x,y),RGB(r,g,b)Next iEnd Sub,例:设计一个窗体使用鼠标在其上任意绘制图形。(ch03ex8.vbp)Dim mouse As Boolean mouse变量用来标志画图的开始Private Sub Form_Load()mouse=FalseMe.ForeColor=vbRedMe.DrawWidth=2End SubPrivate Sub For

23、m_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)mouse=TruePSet(X,Y)End Sub,Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)If mouse Then PSet(X,Y)End IfEnd SubPrivate Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Sin

24、gle)mouse=FalseEnd Sub,2)line方法对象.line step(x1,y1)-step(x2,y2),颜色,BF功能:用来画直线和矩形框等。Step:设置坐标值是绝对坐标还是相对坐标。(有step 是相对坐标)缺省step(x1,y1)时:从上一次画图点到当前点画直线。选择B:利用对角坐标画出矩形。选择F:矩形以矩形边框填充。直线的宽度由对象的drawWidth指定,直线的样式由对象的drawStyle属性指定。(P145)3)circle方法对象.circle step(x,y),r,c,sang,eang,mod(x,y)园、园弧或者椭圆的园心坐标。r 园、园弧的半

25、径。c 设置绘图颜色。sang 在画园弧时设置园弧或椭圆弧的起始角度(0-2)。eand 在画园弧时设置园弧或椭圆弧的终止角度(0-2)。Mod 在画椭圆时设置椭圆的纵横比值(大于1则椭圆细而高)园的样式:由对象的fillStyle属性决定。P150。线的宽度由对象的drawWidth指定,线的样式由对象的drawStyle属性指定。画扇形:则起始角及终止角都是取负值。(ch03ex10.vbp),例:设计一个窗体,单击绘图按钮时,在窗体绘制如下图形:(ch03ex9.vbp),Private Sub Command1_Click()Circle(2500,1500),1000Circle(2

26、500,1500),1000,2.5Form1.FillStyle=7Circle(2500,1500),1000,0.4End Sub,例:设计一个窗体,在上面绘制如下图所示的弧和扇形(ch03ex10.vbp),Const pi=3.14159Private Sub Form_Load()Me.ShowMe.ForeColor=vbRedMe.DrawWidth=2Circle(1800,500),1000,-pi,-1.5*piCircle(3500,500),1000,pi,1.5*piEnd Sub,例:1)在picture1(300,300)上画一点,(ch03画图方法.vbp)2

27、)在picture1上画从(600,600)(1000,1000)两点直线,颜色红色。3)在picture1上画以点(1200,1000)到点(2000,2500)对角点矩形,颜色为绿色。4)在picture1上画以(1500,600)为园心半径200,颜色为蓝色的园。5)在picture1上画园弧,以(4500,600)为园弧园心,半径400,起始角900,终止角2700。6)在picture1上画椭圆,椭园园心为(3500,1500),半径为500,椭园横轴与纵轴比率0.5,线条颜色为黄色。,例:设计一个窗体,根据用户输入的三个班的学生人数,显示各班人数所占比例的饼图(ch03ex11.v

28、bp),Option ExplicitConst pi=3.14159Private Sub Command1_Click()Dim a,b,c,s,i As Integera=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)s=a+b+c,Picture1.FillStyle=0For i=1 To 200Picture1.FillColor=vbRedPicture1.Circle(1500,1500-i),1000,vbRed,-2*pi,-2*pi*a/s,2/3Picture1.FillColor=vbGreenPicture1.Ci

29、rcle(1500,1500-i),1000,vbGreen,-2*pi*a/s,-2*pi*(a+b)/s,2/3Picture1.FillColor=vbBluePicture1.Circle(1500,1500-i),1000,vbBlue,-2*pi*(a+b)/s,-2*pi,2/3Next iPicture1.FillColor=vbRedPicture1.Circle(1500,1500-i),1000,vbWhite,-2*pi,-2*pi*a/s,2/3Picture1.FillColor=vbGreenPicture1.Circle(1500,1500-i),1000,vb

30、White,-2*pi*a/s,-2*pi*(a+b)/s,2/3Picture1.FillColor=vbBluePicture1.Circle(1500,1500-i),1000,vbWhite,-2*pi*(a+b)/s,-2*pi,2/3End Sub,回到上一例(ch03练习7a.vbp)dim x0,y0 as integerprivate sub form_mousedown(button as integer,shift as integer,x as single,y as single)x0=xy0=yme.mousepointer=2end subprivate sub

31、form_mouseup(button as integer,shift as integer,x as single,y as single)line(x0,y0)-(x,y)end sub,如何让画线的程序具有预览的功能?(ch03练习7.vbp)所谓“预览”意思是移动鼠标时,可以看到要画的线,而当放开鼠标时,决定最终直线。分析:定义 全程变量(x0,y0)表示画直线起始点(x1,y1)表示上一次画直线的终点坐标。1)利用mousedown获得画直线起始点x0=x,y0=y并将画图方式选择为:me.drawmode=vbnotxorpen(原值:vbcopypen)含义:同一图形(在同一位

32、置上)画两次等于没有画。2)利用mousemove(鼠标移动时发生事件)首先注意画直线起始点确定没有?(有起始点才能画直线 isempty(x0)=false)第一次(从起始点)移鼠标时画直线(isempty(x1)=true)line(x0,y0)-(x,y)x1=x,y1=y、,第二次(及以上)移动鼠标时:首先将上一次画直线擦去(isempty(x1)=false)line(x0,y0)-(x1,y1)然后再画新的直线 line(x0,y0)-(x,y)x1=x,y1=y3)利用mouseup事件捕获画直线最后一点。如果有直线起始点(x0,y0)且有(x1,y1)首先擦去已画过直线 lin

33、e(x0,y0)-(x1,y1)x1=empty 将画笔改回初始值:me.drawmode=vbcopypen画直线:line(x0,y0)-(x,y)x0=empty4)利用isempty(变量名)判断是否有直线的起始点及上一次画直线的终止点。(ch03练习7.vbp)对话框的设计对话框是VB应用程序与用户进行信息交换的窗口,可以使用VB提供函数,msgbox函数或inputbox函数作为对话框,亦可以使用commondialog控件设计对话框,甚至用户自已设计对话框。,Inputbox函数inputbox(prompt,title)prompt:用于设定显示在对话框中的信息内容。Title

34、:是一个可选参数,用于设定显示在对话框中标题的信息内容。函数返回值:返回用户输入字符串,如果用户单击cancel则返回空字符串。注意:使用inputbox函数作对话框,一般只用于简单数据输入到窗口。例:编写一个具有预览功能画弧程序。(ch03练习10.vbp)在对象上画弧的方法:对象名.circle(x,y),r,c,sang,eang1)在通用中定义全局变量Dim ang1,ang2 As SingleDim r1 As SingleDim x0,y0 As Single2)在窗体上放置一个命令按钮,单击命令按钮开始画弧,输入画弧起始角及终止角。,Private Sub Command1_C

35、lick()pi=3.14ang1=pi*(Val(InputBox(输入起始角:)/180ang2=pi*(Val(InputBox(输入终止角:)/180End Sub3)在mousedown事件中获得画弧的园心。Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)x0=Xy0=YMe.DrawMode=vbNotXorPenEnd Sub4)在mousemove事件中,将上一次弧擦掉,画新的弧。,Private Sub Form_MouseMove(Button As

36、Integer,Shift As Integer,X As Single,Y As Single)If Not IsEmpty(x0)Then If Not IsEmpty(r1)Then Circle(x0,y0),r1,ang1,ang2 End If r1=(X-x0)2+(Y-y0)2)0.5 Circle(x0,y0),r1,ang1,ang2 End IfEnd Sub,5)在mouseup 事件中画出最后图形Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)If

37、Not IsEmpty(x0)Then If Not IsEmpty(r1)Then Circle(x0,y0),r1,ang1,ang2 End If Me.DrawMode=vbCopyPen r1=(x0-X)2+(y0-Y)2)0.5 Circle(x0,y0),r1,ang1,ang2 x0=Empty r1=empty End If End Sub,3.7 主动模式的程序设计除了“事件驱动”程序设计模式之外,VB也允许我们将程序设置成“主动模式”。主动模式的程序与以前我们所讲DOS程序很相似。如何将程序设置为主动模式1)启动VB,建立一个“标准EXE”工程,选取“工程/工程名称属性

38、”菜单命令,在“工程属性”对话框中,将“启动对象”设置为“sub main()”2)利用菜单的“工程/添加模块”命令新增一个模块,在标准模块的代码窗口中输入sub main子程序。3)执行这个程序。例:建立一个工程名为:主动.vbp 工程,并且在该工程中建立一个submain()子程序,读取用户数据,且设置为启动对象。1)启动VB,在“工程/工程属性”中将“启动对象设置为:submain2)在“工程/添加模块”中添加一个标准模块。在标准模块代码窗口中输入submain子程序。,使用MSChart控件绘制图形除了利用line和circle方法绘制各种几何图形外,也可以直接利用VB中的MSChar

39、t控件支持真正的三维表示,支持所有主要的图表类型,值和数据点以条形图、折线图、标记图、填充区域图或饼图形式显示。,sub main()dim s as strings=inputbox(“请输入数据“)msgbox“您输入了”+send subdoevents与主动模式程序对VB程序而言,主动模式与事件驱动模式是可以并存的,如果我们所编写的程序只含有主动模式程序代码,将语句一行一行地编写成主程序和相关子程序即可。但是如果所编写的程序同时有主动模式和事件驱动模式的程序代码,那么就不应该让主动模式的程序执行费时很多工作,因为主动模式的程序执行时,其他事件驱动模式的程序代码将被锁住,而无法执行。当然有时候还是很难避免让主动模式的程序执行费时很久的工作,就必须在主程序中插入doevents语句使主程序做间歇性的休息,允许其他的事件驱动模式的程序代码有机会被执行。,例:打开ch03doevets.vbp工程,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号