VisualBasic程序设计教程下课件

上传人:仙*** 文档编号:209549074 上传时间:2023-05-14 格式:PPT 页数:164 大小:1.32MB
返回 下载 相关 举报
VisualBasic程序设计教程下课件_第1页
第1页 / 共164页
VisualBasic程序设计教程下课件_第2页
第2页 / 共164页
VisualBasic程序设计教程下课件_第3页
第3页 / 共164页
点击查看更多>>
资源描述
Visual BasicVisual Basic程序设计教程程序设计教程(下下)VisualBasic程序设计教程(下)目录目录第第1 1章章Visual BasicVisual Basic程序设计概述程序设计概述第第3 3章章Visual BasicVisual Basic程序设计初步程序设计初步第第2 2章章Visual BasicVisual Basic程序设计基础程序设计基础第第4 4章章Visual BasicVisual Basic的程序控制结构的程序控制结构第第6 6章章 过程过程第第5 5章章数组数组VisualBasic程序设计教程(下)第第7 7章章常用控件与系统对象常用控件与系统对象第第9 9章章图形操作图形操作第第8 8章章界面设计界面设计第第1010章章键盘与鼠标事件键盘与鼠标事件第第1212章章 数据库程序设计数据库程序设计第第1111章章文件文件第第1313章章 程序调试与出错处理程序调试与出错处理VisualBasic程序设计教程(下)第第9 9章章 图形操作图形操作9.1 9.1 坐标系统坐标系统 9.2 9.2 绘图属性与事件绘图属性与事件 9.3 9.3 图形控件图形控件 9.4 9.4 绘图方法绘图方法 9.5 9.5 简单动画简单动画 VisualBasic程序设计教程(下)9.1坐标系统介坐标系统介 坐标系统是绘制各种图形的基础,坐标系统选择的是否恰当,会直接影响着绘图的质量,由于坐标系统的不同,图形出现屏幕位置不同,或是在屏幕上显示不出来,或是在打印机打印不出结果,或是图形出现比例不协调。因此,绘制图形前,必须首先确定坐标系。VisualBasic程序设计教程(下)9 9.1.1.1.1 默认坐标系统默认坐标系统 1.1.坐标系坐标系 VB中每个图形在容器中的绘制、位置移动、大小调整等,都离不开绘图区或容器的坐标系统。每一个对象都有自已的坐标系统。坐标系统是一个二维网格,用于确定容器中点的位置。它由三个元素组成:坐标原点、坐标轴的方向、坐标单位。坐标系统定义的位置:(x,y),其中x代表横坐标,y代表纵坐标,x值是指点与原点的水平距离,y值是指点与原点的垂直距离。最左端默认值为0(x),最上端默认值为0(y),因此屏幕的左上上角总是(0,0)。任何容器的默认坐标系统,都是由容器的左上角(0,0)坐标开始,如图9-1所示。VisualBasic程序设计教程(下)在VB中,每个对象定位于存放它的容器内,对象定位都要使用容器的坐标。例如,窗体处于屏幕(Screen)内,屏幕是窗体的容器;在窗体内绘制图形,窗体就是容器;如果在图形框内绘制图形,该图形框就是容器。容器内的对象只能在容器界定的范围内移动,当移动容器时,容器内的对象也随着一起移动,而且与容器的相对位置保持不变。通过ScaleMode属性值来设置度量单位坐标的度量单位是由ScaleMode属性决定的。通过设置不同的ScaleMode属性值来改变单位。3.ScaleMode属性属性2.VB刻度单位刻度单位 9 9.1.1.1.1 默认坐标系统默认坐标系统 VisualBasic程序设计教程(下)度量单位之间的换算关系:1英寸1440缇;一个字符的宽度是120缇、高度是240缇。用ScaleWidth、ScaleHeight、ScaleTop和ScaleLeft属性定义坐标系统 ScaleLeft和ScaleTop属性用来给对象指定左上角的水平和垂直坐标,所有对象的ScaleLeft和ScaleTop属性的默认值为0,坐标原点在对象的左上角。当改变ScaleTop或ScaleLeft的值后,坐标系的X轴或Y轴按此值平移形成新的坐标原点。(ScaleLeft+ScaleWidth,ScaleTop+ScaleHeight)是绘制图形在容器中显示区域右下角的坐标值。根据左上角和右下角坐标值的大小自动设置坐标轴的正向。X轴与Y轴的度量单位为分别为1/ScaleWidth和1/ScaleHeight。ScaleWidth和ScaleHeight属性则是根据对象内的可用区域的当前宽度和高度来定义刻度。3.ScaleMode属性属性9 9.1.1.1.1 默认坐标系统默认坐标系统 VisualBasic程序设计教程(下)【例9-1】修改窗体Form1的 ScaleWidth、ScaleHeight、ScaleTop和ScaleLeft属性,建立新坐标系统。Form1.ScaleWidth=100 Form1.ScaleHeight=100 Form1.ScaleTop=200 Form1.ScaleLeft=2009 9.1.1.1.1 默认坐标系统默认坐标系统 VisualBasic程序设计教程(下)9 9.1.2.1.2 用户自定义坐标系统用户自定义坐标系统 格式:格式:对象.Sccale(x1,y1)-(x2,y2)对象:对象:可以是窗体、图形框或打印机,如果省略对象名,则为带有焦点的窗体对象。x1x1和和y1y1:对象的左上角的坐标,决定了ScaleLeft和 ScaleTop属性值。x2x2和和y2y2:对象的右下角的坐标,决定了ScaleWidth和 ScaleHeight属性值。利用Scale方法定义坐标系统VisualBasic程序设计教程(下)Private Sub Command3_Click()P1.Scale(-100,100)-(500,-500)DrawWidth=8 DrawStyle=4 P1.Line(0,1000)-(0,-1000)P1.Line(1000,0)-(-1000,0)End Sub1.1.系统默认坐标系(系统默认坐标系(0,00,0)按钮)按钮“不改变坐标系不改变坐标系”Private Sub Command1_Click()P1.Line(0,1000)-(0,-1000)P1.Line(1000,0)-(-1000,0)End Sub2.2.通过修改窗体通过修改窗体Form1Form1的的 ScaleWidth ScaleWidth、ScaleHeightScaleHeight、ScaleTopScaleTop和和ScaleLeftScaleLeft属性,建立新坐标系统,按钮属性,建立新坐标系统,按钮“改变坐标系改变坐标系”9 9.1.2.1.2 用户自定义坐标系统用户自定义坐标系统 VisualBasic程序设计教程(下)3.3.利用利用ScaleScale方法定义坐标系统方法定义坐标系统Private Sub Command2_Click()DrawWidth=6DrawStyle=2P1.ScaleLeft=100P1.ScaleTop=-100P1.ScaleHeight=200P1.ScaleWidth=-200P1.Line(0,1000)-(0,-1000)P1.Line(1000,0)-(-1000,0)End Sub9 9.1.2.1.2 用户自定义坐标系统用户自定义坐标系统 VisualBasic程序设计教程(下)9.2绘图属性与事件绘图属性与事件 要想制作出各式各样的图形,以及给这些图形加上色彩和动画等,绘图属性与事件起到了至关重要的角色。VisualBasic程序设计教程(下)9 9.2.1 CurrentX.2.1 CurrentX、CurrentYCurrentY属性属性 CurrentX和CurrentY属性用于设置当前对象的水平和垂直坐标,即下一次打印或绘图的起点坐标,在设计时不可用。当重新设置窗体的坐标系统时,CurrentX和CurrentY的值也将自动改变,但以这两个数为坐标的点的实际位置并不改变。坐标值(x,y)表示对象上的绝对坐标位置,绝对坐标值为(CurrentX+x,CurrentY+y)。VisualBasic程序设计教程(下)9 9.2.2.2.2 线宽与线型线宽与线型 1 1线宽线宽 用DrawWidth属性指定图形方法输出时线的宽度,BorderWidth属性指定直线和形状控件轮廓线的粗细。下列过程将画出几条不同宽度的线。Private Sub Form_Click()DrawWidth=1 For i=1 To 15 Step 1DrawWidth=iLine(100,i*300)-(3000,i*300),_QBColor(i)Print 线宽,iNext iEnd SubVisualBasic程序设计教程(下)2 2线型线型 用DrawStyle属性指定图形方法输出时线型的样式。9 9.2.2.2.2 线宽与线型线宽与线型 VisualBasic程序设计教程(下)9 9.2.3.2.3 图形的填充图形的填充 填充只针对封闭图形。填充方式由FillColor 属性和FillStyle属性来决定。FillColor 也可以用来填充由 Circle 和 Line图形方法生成的圆和方框,默认情况下,FillColor 设置为 0(黑色)。如果 FillStyle 设置为 1(透明),则忽略FillColor 属性,但是窗体对象除外。程序代码:程序代码:Private Sub Form_Activate()For i=0 To 7Shape1(i).FillStyle=iNext iEnd SubVisualBasic程序设计教程(下)9 9.2.4 AutoRedraw.2.4 AutoRedraw属性属性 在设计时,窗体、图片框的AutoRedraw属性默认为False,图形不具有持久性,即当窗体被覆盖或扩大窗体都会使图形丢失。当AutoRedraw属性设置为True时,图形具有持久性。VisualBasic程序设计教程(下)9 9.2.5 .2.5 图形颜色图形颜色 颜色在图形中应用非常广泛,比如线条或是图形的填充。在VB中可以用四种办法来设置颜色。1 1RGBRGB函数函数 RGB函数用指定红、绿、蓝三基色的值来混合产生不同颜色。语法:RGB(红,绿,蓝)其中:红,绿,蓝指三种颜色的成分,取值在0255之间,每种颜色是由三种颜色的相对亮度、饱和度组合而成的。常见标准颜色设置如表9-3所示。VisualBasic程序设计教程(下)9 9.2.5 .2.5 图形颜色图形颜色 QBColor用来表示所对应颜色值的RGB颜色码,产生16种颜色。语法:QBColor(颜色参数)其中:颜色参数是在015之间的颜色值,每种颜色值对应的颜色如表9-4所示。例如:下面的语句将窗体的前景色设置为蓝色:Form1.ForeColor=QBColor(1)Form1.ForeColor=VbblueForm1.forecolor=RGB(0,0,128)2 2QBColorQBColor函数函数3 3通过内部常数来设置颜色通过内部常数来设置颜色4 4直接使用颜色设置值直接使用颜色设置值VisualBasic程序设计教程(下)9.3图形控件图形控件 在开发Windows 图形用户界面程序时,图形控件用于图形图像的显示。Visual Basic 有四个控件以简化与图形有关的操作,它们是PictureBox控件、Image控件、Shape控件和Line控件。Image、Shape 和 Line 控件有时被称作轻量图形控件,因为它们需要较少的系统资源,因此比 PictureBox 控件显示得快并且包含 PictureBox 中可用的属性、方法和事件的子集。每一个控件都适用于一个特定的目的。VisualBasic程序设计教程(下)9 9.3.1.3.1 图片框(图片框(PictureBoxPictureBox)控件)控件 1 1图片框图片框PictureBox 控件被用来显示图形,同时作为画布来提供图形方法的输出图形或显示 Print方法输出的文本。(1 1)使用)使用 PictureBox PictureBox 控件控件PictureBox 控件的主要作用是为用户显示图片。PictureBox 控件可显示下述任何格式的图片文件:位图、图标、图元文件、增强型图元文件、JPEG 或 GIF 文件。(2 2)PictureBox PictureBox 控件的属性控件的属性Picture属性 设置被显示的图片,也可以在程序运行时使用LoadPicture()函数在图形框中装入图形。其格式为:.Picture=LoadPicture()要清除图片框中的图像,可以属性窗口把Picture属性设置为空(),也可以程序运行时使用LoadPicture()函数清除。其格式为:VisualBasic程序设计教程(下)9 9.3.1.3.1 图片框(图片框(PictureBoxPictureBox)控件)控件 Autosize属性 设置片框是否自动调整图像框的大小以适应图形尺寸,默认值为False。属性值为False,图片超出图像框以外的图像将自动被裁剪(隐藏);属性值为True,则表示图片框将根据所显示的图片大小自动调整本身的尺寸。Width和Height属性这两个属性设置图片框控件的实际大小,它们总是取表示空间容器的单位。Left和Top属性Left和Top属性是图片框控件左上角的坐标,用容器的坐标系表示。ScaleMode属性ScaleMode返回或设置绘图方法的输出外观。取值从1到16。ScaleWidth和ScaleHeight属性这两个属性是当前坐标系单位的控件内部尺寸。ScaleLeft和ScaleTop属性ScaleLeft和ScaleTop属性是用户定义坐标系中控件左上角的坐标。ScaleLeft是x坐标的最小值,其最大值为ScaleLeft+ScaleWidth。VisualBasic程序设计教程(下)9 9.3.1.3.1 图片框(图片框(PictureBoxPictureBox)控件)控件 (3 3)图片框的应用图片框的应用【例9-3】图片互换的程序 Private Sub Form_Load()Picture2.Picture=LoadPicture(d:tubei.bmp)Picture3.Picture=LoadPicture(d:tujing.bmp)Picture4.Picture=LoadPicture(d:tuhuan.bmp)Picture5.Picture=LoadPicture(d:tuying.bmp)Picture6.Picture=LoadPicture(d:tuni.bmp)End SubPrivate Sub Picture2_Click()Picture1.Picture=Picture2.PicturePicture2.Picture=Picture3.PicturePicture3.Picture=Picture4.PicturePicture4.Picture=Picture5.PicturePicture5.Picture=Picture6.PicturePicture6.Picture=Picture1.PictureEnd SubVisualBasic程序设计教程(下)9 9.3.2.3.2 图像框(图像框(ImageImage)控件)控件 (2)将图形加载到)将图形加载到 Image 控件中控件中设计时从控件的“属性”窗口中选择 Picture 属性,或在运行时使用 Picture 属性和 LoadPicture 函数都可将图形加载到 Image 控件,这一点与Picture控件完全相同。移除所加载的图形的方法也是使用不指定文件名的 LoadPicture 函数。图像框(Image)的主要功能是在窗体的指定位置显示图形。它可显示下面几种格式的图形:位图、图标、图元文件、增强型图元文件、JPEG 或 GIF 文件。此之外,Image控件还响应Click事件,并可用Image控件代替命令按钮或作为工具条的项目,还可用来制作简单动画。1 1图像框(图像框(ImageImage)的属性)的属性(1 1)图像框()图像框(ImageImage)的)的StretchStretch属性属性在调整 Image 控件大小,来放缩整图像控件的大小。若将属性设置为True则将伸缩 Picture 属性加载的图片。VisualBasic程序设计教程(下)9 9.3.2.3.2 图像框(图像框(ImageImage)控件)控件 2 2使用使用 Image Image 控件作为命令按钮控件作为命令按钮3 3使用使用 Image Image 控件创建工具条控件创建工具条VisualBasic程序设计教程(下)9 9.3.3.3.3 形状控件形状控件Shape Shape 形状控件用于在窗体、框架或图片框中绘制预定义的几何形状,如矩形、正方形、圆、椭圆、圆角矩形或圆角正方形。形状控件的Shape属性决定了它的图形样式,这个属性的所有可能取值都有对应的形状样式。形状控件形状控件ShapeShape的常用属性的常用属性 Shape的常用属性:Left、Top、Width和Height属性决定形状控件的位置和大小,也可以用Move方法改变它的大小和位置。BorderWidth属性设置图形边界宽度。它的值是以像素为单位的边线宽度。BorderColor属性设置图形边界颜色。BorderStyle属性设置边界线的类型。FillColor属性设置图形的前景颜色。如果为图形填充颜色(背景)时,首先应该将属性FillStyle(填充方式)设置成1(透明),否则FillColor(前景色)的颜色会覆盖背景色,达不到预期的目的。VisualBasic程序设计教程(下)9 9.3.3.3.3 形状控件形状控件Shape Shape 形状控件形状控件Shape的特有属性的特有属性 Shape属性:该属性用来设置图形的形状,如图9-7所示,Shape 属性的参数值如表9-6所示。BackStyle属性:该属性用来设置图形背景的风格。0Transparent(透明)1Opaque(不透明)FillStyle属性:该属性用来设置图形填充的线形(风格或样式)。VisualBasic程序设计教程(下)9 9.3.4.3.4 直线控件直线控件Line Line 直线控件用于在窗体、框架或图片框中绘制简单的线段。它没有自己的特殊方法,也不产生任何事件。设计和运行时可以通过它的属性来改变它的位置、粗细和颜色等。直线控件的特有属性直线控件的特有属性 x1,x2,y1,y2属性指定起点和终点的x坐标及y坐标。可以通过改变x1,x2,y1,y2的值,来改变线的位置和长度。说明说明 直线控件没有Left、Top、Width和Height属性,运行时也不能用Move方法决定直线的位置和长短。直线控件的常用属性直线控件的常用属性 BorderColor属性设置直线的颜色。BorderWidth属性设置直线的粗细。BorderStyle属性设置直线样式。有06种类型,1实线,6内实线。VisualBasic程序设计教程(下)9.4绘图属性与事件绘图属性与事件 要想制作出各式各样的图形,以及给这些图形加上色彩和动画等,绘图属性与事件起到了至关重要的角色。VisualBasic程序设计教程(下)9 9.4.1 Pset.4.1 Pset方法方法 功能:功能:PSet方法可以在窗体或图片框的指定位置用给定的色彩画一个“点”。点的大小由对象的DrawWidth属性指定。格式:格式:对象.PSetStep(x,y),颜色说明:说明:(x,y)是欲画点的坐标,可以是整数,也可以是小数。StepStep表示与当前位置的偏移量,即步长(水平、垂直两个方向,可正可负)。颜色用来指定绘制点的颜色,数据类型为Long。默认时,系统用对象的ForeColor属性值作为绘制点的颜色。该参数还可用QBColor(),RGB()函数指定。如果没有颜色参数,则为前景色。例如:例如:在图片框Picture1中的(150,100)处画一个绿色的点。Picture1.PSet(150,100),RGB(0,255,0)VisualBasic程序设计教程(下)9 9.4.2 Line.4.2 Line方法方法 功能:功能:Line方法用于在窗体或图片框对象上画直线和矩形。在绘制直线时,应给出起点和终点坐标。格式格式:对象名.Line Step (x1,y1)-Step (x2,y2),color,B F(x1,y1)为起点坐标,如果省略则为当前坐标。(x2,y2)为终点坐标。Step 为可选项,第一个Step表示它后面的一对坐标是相对于当前坐标的偏移量,第二个Step表示后面的一对坐标是相对于第一对坐标的偏移量。color 指定要画直线的颜色。可以使用颜色代码或颜色函数。省略时用对象的ForeColor属性指定的颜色绘制直线。B F 如果没有参数B,为画一条直线;如果有参数B,则画一个矩形;指定参数F,表示要画的是一个实心的矩形。例如,在(500,300)与(3000,2500)之间绘制一条蓝色的斜线。Line(10,1000)-(3000,5000),vbblue又如,此时再画出一个内部填充蓝色的实心矩形。Line(1000,1000)-(3000,3000),vbBlue,BF VisualBasic程序设计教程(下)9 9.4.3 Circle.4.3 Circle方法方法 Circle方法可用于在窗体、图片框或打印机上绘制圆、椭圆、弧等图形。上节介绍的有关属性DrawWidth,DrawStyle,FillColor,FillStyle等在Circle方法中也同样适用。1 1圆圆格式:格式:Objectname.Circle Step(x,y),Radius,color(x1,y1)(x1,y1)指定圆心的位置。StepStep指定它后面圆心的坐标值(x,y)是相对于当前位置(CurrentX,CurrentY)。省略Step关键字,(x,y)为相对于坐标原点的绝对坐标值。RadiusRadius 用于指定圆的半径。colorcolor 用于指定绘制圆的颜色,省略时以对象的ForeColor属性设置的颜色画圆。绘制的圆是实心圆、空心圆或者用指定的图案填充,对象的 fillColor 属性(指定的颜色填充)、FillStyle属性(指定的图案填充)设置有关,可参考矩形的绘制。VisualBasic程序设计教程(下)9 9.4.3 Circle.4.3 Circle方法方法 2 2椭圆椭圆绘制椭圆仍使用Circle方法,与画圆相比多一个纵横比参数,当纵横比为1:1时,即是圆。格式:格式:Objectname.CircleStep(x,y),Radius,color,aspectaspectaspect决定所画椭圆纵轴与横轴的比值。比值大于1时,绘制扁形椭圆(垂直方向大于水平方向);小于1时绘制椭圆;等于1时绘制圆。在aspect前的三个逗号“,”不能省略,因为实际上还有两个参数未写出,在画圆弧时要用到这两个参数,待画弧时再作介绍。其他几个参数与画圆时相同。VisualBasic程序设计教程(下)9 9.4.3 Circle.4.3 Circle方法方法 3 3弧和扇形弧和扇形弧与扇形既有相同点,也有不同点。弧可以视为由圆或椭圆的边线中截取的一部分,而扇形还要在弧的基础上,从弧的两端再分别画一条到圆心的直线,且它是封闭的图形。格式:格式:Objectname.Circle Step(x,y),Radius,colorstart,end,aspectstart,endstart,end start指定弧的起始角,end指定弧的终止角,它们的单位均是弧度,范围从02。画弧时,start,end都用正值。从start开始,逆时针画到end处结束。画扇形时,start,end都取负值,也是从start开始,逆时针绘制,到end结束。负值仅表示画扇形,不表示数学上不同的象限。如0/2画一段弧,而0-/2仅表示画0/2的扇形,不表示数学上的0-/2即3/20。VisualBasic程序设计教程(下)9 9.4.3 Circle.4.3 Circle方法方法 3 3弧和扇形弧和扇形【例9-4】如图9-8所示,在Picture1上画出圆形、椭圆形、圆弧。在窗体上创建为Picture1的图片控件。创建4个命令按钮Command1、Command2、Command3、Command,分别设置其Caption属性为“绘圆形”、“绘椭圆形”、“绘画圆弧”、“清除”。代码如下:Private Sub Form_Load()Picture1.DrawWidth=2 设置线的宽度Picture1.DrawStyle=0 设置实线End SubVisualBasic程序设计教程(下)9 9.4.3 Circle.4.3 Circle方法方法 画圆Private Sub Command1_Click()For i=400 To 1500 Step 500Picture1.ForeColor=RGB(255*Rnd,255*Rnd,255*Rnd)Picture1.Circle(2500,i),i 画圆Next iEnd Sub画椭圆Private Sub Command2_Click()For i=100 To 2000 Step 200Picture1.ForeColor=RGB(255*Rnd,255*Rnd,255*Rnd)Picture1.Circle(2500,i),i,0.5 画椭圆Next iEnd SubVisualBasic程序设计教程(下)9 9.4.3 Circle.4.3 Circle方法方法 画弧Private Sub Command3_Click()Picture1.ForeColor=RGB(255*Rnd,255*Rnd,255*Rnd)For i=100 To 2000 Step 600Picture1.Circle(2*i,i),i,-3.14/4,3.14 画弧Next iEnd Sub清除Private Sub Command4_Click()Picture1.ClsEnd SubVisualBasic程序设计教程(下)9.4绘图属性与事件绘图属性与事件 要想制作出各式各样的图形,以及给这些图形加上色彩和动画等,绘图属性与事件起到了至关重要的角色。VisualBasic程序设计教程(下)9.5简单动画简单动画下面来设计一个简单五环旗,如图9-9所示。下面介绍具体的操作步骤。下面介绍具体的操作步骤。步骤步骤1 1:在窗体上创建一个Shape1组(通过复制得到)。它们分别是:Shape1(0),Shape1(1),Shape1(2),Shape1(3),Shape1(4),分别设置其Backcolor颜色为蓝色,黑色,红色,橙黄色,绿色。步骤步骤2:创建一个Label1,字体是楷体,字号为四号字。步骤步骤3:在窗体上分别创建Timer1,Timer2,分别设置它们的interval值为900,500VisualBasic程序设计教程(下)步骤步骤4 4 具体代码如下:Private Sub Timer1_Timer()For i=0 To 4Shape1(i).Visible=FalseLabel1.Visible=FalseNext iEnd SubPrivate Sub Timer2_Timer()For j=0 To 4Shape1(j).Visible=TrueLabel1.ForeColor=RGB(Rnd*255,Rnd*255,Rnd*255)Label1.Visible=TrueNext jEnd SubVisualBasic程序设计教程(下)思考思考1怎样建立用户坐标系?2窗体的ScaleHeight、ScaleWidth属性和Height、Width属性有什么区别?3怎样设置Line控件对象的线宽?当用Line方法画线之后,CurrentX与CurrentY在何处?4当用Circle方法画圆弧和扇形时,若起始角的绝对值大于终止角的绝对值,则圆弧角度在何范围 VisualBasic程序设计教程(下)第第1010章章 键盘与鼠标事件键盘与鼠标事件10.1 10.1 鼠标事件鼠标事件 10.2 10.2 键盘事件键盘事件 VisualBasic程序设计教程(下)10.1 鼠标事件鼠标事件鼠标事件过程可用来处理与鼠标指针的移动和位置有关的操作。VisualBasic程序设计教程(下)10.1.1 10.1.1 鼠标事件过程鼠标事件过程在以前的例子中,我们曾多次使用过鼠标事件,即单击(Click)和双击(DblClick)事件,这些事件是通过快速按下并放开鼠标按钮产生的。实际上,在Visual Basic中,还可以识别按下或放开某个鼠标按钮而触发的事件。为了实现鼠标操作,Visual Basic提供了3个过程模板。VisualBasic程序设计教程(下)10.1.1 10.1.1 鼠标事件过程鼠标事件过程按下鼠标按钮事件过程Private Sub Form_MouseDown(Button As Integer,Shift As Integer,_X As Single,Y As Single)End SubVisualBasic程序设计教程(下)10.1.1 10.1.1 鼠标事件过程鼠标事件过程松开鼠标按钮事件过程Private Sub Form_MouseUp(Button As Integer,Shift As Integer,_X As Single,Y As Single)End SubVisualBasic程序设计教程(下)10.1.1 10.1.1 鼠标事件过程鼠标事件过程移动鼠标指针事件过程Private Sub Form_MouseMove(Button As Integer,Shift As Integer,_X As Single,Y As Single)End SubVisualBasic程序设计教程(下)10.1.1 10.1.1 鼠标事件过程鼠标事件过程【例10-1】用鼠标在窗体上画图。DimPaintNowAsBooleanPrivateSubForm_DblClick()ClsEndSubPrivateSubForm_Load()DrawWidth=2ForeColor=RGB(0,0,255)EndSubPrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)Print鼠标按下了PaintNow=TrueEndSubVisualBasic程序设计教程(下)PrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,_XAsSingle,YAsSingle)IfPaintNowThenPSet(X,Y)EndIfEndSubPrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,X_AsSingle,YAsSingle)Print鼠标松开了PaintNow=FalseEndSub10.1.1 鼠标事件过程鼠标事件过程VisualBasic程序设计教程(下)10.1.2 10.1.2 拖放拖放所谓拖放,就是用鼠标从屏幕上把一个对象从一个地方“拖拉(Dragging)”到另一个地方再放下(Dropping)。在Windows中会经常使用过这一操作。Visual Basic提供了让用户自由拖放某个控件的功能。拖放的一般过程是,把鼠标指针移到一个控件对象上,按下鼠标按钮不要松开,然后移动鼠标,对象将随鼠标的移动而在屏幕上拖动,松开鼠标按钮后,对象即被放下。通常把原来位置的对象叫作源对象,而拖动后放下的位置的对象叫作目标对象。在拖动的过程中,被拖动的对象变为灰色。VisualBasic程序设计教程(下)10.1.2 10.1.2 拖放拖放【例10-2】拖放的实现。按图10-1所示设计界面,窗体标题设置为“拖放的演示”,各控件除表10-1中指定的属性外,均采用默认值。VisualBasic程序设计教程(下)10.1.2 10.1.2 拖放拖放如下编写代码:Private Sub Form_Load()Picture1.Picture=LoadPicture(C:WINDOWSWeb bliss.bmp)Picture1.DragIcon=LoadPicture(C:WINDOWS 3dgmove.cur)End Sub设置完上述属性后,运行程序,即可自由地拖动图片框。但是,当松开鼠标按钮时,被拖动的控件又回到原来的位置。其原因是:Visual Basic不知道把控件放到什么位置。对象属性设置Form1Caption拖放的演示Picture1DragMode1-AutomaticVisualBasic程序设计教程(下)10.1.2 10.1.2 拖放拖放在上例的基础上,做少许修改。在程序代码窗口中的“对象”框中选择Form,在“过程”框中选择DragDrop,编写如下事件过程:Private Sub Form_DragDrop(Source As Control,X As Single,_Y As Single)Picture1.Move X,YEnd Sub上述过程中“Picture1.Move X,Y”语句的作用是:将源对象(Picture1)移到(Move)鼠标指针(x,y)处。经过以上修改,就可以拖动控件了。不过在拖动时,整个Picture1控件都随着鼠标移动。按照拖放的一般要求,拖动过程中应把控件变成图标,放下时再恢复为控件。这可以通过以下方法来实现。VisualBasic程序设计教程(下)10.1.2 10.1.2 拖放拖放在设计阶段,不要用Picture属性装入图像,而是用DragIcon属性装入图像,其操作与用Picture属性装入类似。即在建立图像框后,在属性窗口中找到并单击DragIcon属性条,然后利用Load Picture对话框把图像装入图片框内。不过,这样装入后,图片框看上去仍是空白,只有在拖动时才能显示出来。在执行阶段,通过过程代码设置DragIcon属性。一般有以下三种形式:Picture1.DragIcon=LoadPicture(C:WINDOWS3dgmove.cur)Picture1.DragIcon=Picutre1.PicturePicture1.DragIcon=Picutre1.DragIconVisualBasic程序设计教程(下)10.1.3 OLE10.1.3 OLE拖放拖放语法格式:Private Sub 对象_OLEGiveFeedback(Effect As Long,Defaultcursors As Boolean)End Sub其中参数含义如下。Effect:指出目标支持的操作类型,与OLEDragOver事件中参数含义相同。Defaultcursors:表示是否使用默认的鼠标图标。为True则使用,为False则不使用鼠标图标,用MousePointer来设定。VisualBasic程序设计教程(下)鼠标事件过程可用来处理与鼠标指针的移动和位置有关的操作10.2 键盘事件键盘事件 VisualBasic程序设计教程(下)当用户按下键盘上的某个健时,将发生KeyPress事件。该事件可用于窗体、复选框、组合框、命令按钮、列表框、图片框、文本框、滚动条及与文件有关的控制。严格地说,当按下某个键时,所触发的是拥有输入焦点(Focus)的那个控件的KeyPress事件。在某一时刻,输入焦点只能位于某一个控件上,如果窗体上没有活动或可见的控件,则输入焦点位于窗体上。当一个控件或窗体拥有输入焦点时,该控件或窗体将接收从键盘上输入的信息。例如,假定一个文本框拥有输入焦点,则从键盘上输入的任何字符都将在该文本框中显示。10.2.1 KeyPress10.2.1 KeyPress事件事件VisualBasic程序设计教程(下)10.2.1 KeyPress10.2.1 KeyPress事件事件在窗体上画一个控件(指上面所讲的可以发生KeyPress事件的控件),并双击该控件,进入程序代码窗口后,从“过程”框中选取KeyPress,即可定义KeyPress事件过程。一般格式为:Private Sub Form_KeyPress(KeyAscii As Integer)End Sub KeyPress事件带有一个参数,这个参数有两种形式。第一种形式是:Index As Integer,只用于控件数组;第二种形式是:KeyAscii As Integer,用于单个控件。上面列出的是第二种形式。KeyPress事件用来识别按键的ASCII码。参数KeyAscii是一个预定义的变量,执行KeyPress事件过程时,KeyAscii为所按键的ASCII值。例如,按下A键,KeyAscii的值为65,如按下a键,则KeyPress的值为97,等等。VisualBasic程序设计教程(下)10.2.1 KeyPress10.2.1 KeyPress事件事件利用KeyPress事件,可以对输入的值进行限制。假定在窗体少建立了一个文本框(Text1)然后双击该文本框进入程序代码窗口,并从“过程”框中选择KeyPress,编写如下事件过程:Private Sub Text1_KeyPress(keyascii As Integer)If Keyascii 57 ThenBeepkeyascii=0End IfEnd Sub VisualBasic程序设计教程(下)10.2.1 KeyPress10.2.1 KeyPress事件事件该过程用来控制输入值,它只允许输入0(ASCII码48)到9(ASCII码57)的阿拉伯数字。如果输入其他字符,则响铃(Beep),并消除该字符。用KeyPress可以捕捉击键动作。例如,用下面的事件过程可以模拟打字机:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii=13 ThenPrinter.Print Text1.TextEnd If KeyAscii=0End Sub运行上面的程序,在文本框中输入一行字符,按回车键后,这行字符即在打印机上打印出来。VisualBasic程序设计教程(下)10.2.1 KeyPress10.2.1 KeyPress事件事件在KeyPress过程中可以修改KeyAscii变量的值。如果进行了修改,则Visual Basic在控件中输入修改后的字符,而不是用户输入的字符。例如:Private Sub Text1_KeyPress(KeyAscii AS Integer)If Keyascii=65 And keyascii 0AltDown%=(Shift And Alt)0F2Down%=(KeyCode=Key_F2)If ShiftDown%And AltDown%And F2Down%Then EndEnd Sub上述程序运行后,如果按Shift+Alt+F2,则结束程序运行。VisualBasic程序设计教程(下)10.2.3 KeyUp10.2.3 KeyUp事件事件KeyUp表示松开被按下的键时所产生的事件。和KeyDown事件一样,KeyUp事件也是返回键盘的直接状态。KeyUp事件的参数也有两种形式,其中Index As Integer只用于控件数组,而KeyCode As Integer,Shift As Integer用于单个控件。下面只讨论这种形式,形式如下:Private Sub Form_KeyUp(KeyCode As Integer,Shift As Integer)End Sub其中的参数KeyCode和Shift的含义同KeyDown事件。下面对KeyDown事件和KeyUp事件举一例,演示它们的使用方法。VisualBasic程序设计教程(下)10.2.3 KeyUp10.2.3 KeyUp事件事件【例10-5】编写程序,显示KeyDown和KeyUp事件的功能。首先在窗体内建立一个文本框,然后编写如下两个事件过程:Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)If KeyCode=&H41 ThenPrint 压下A键End IfIf KeyCode=&H42 ThenPrint 压下B键End IfIf KeyCode=&H43 ThenPrint 压下C键End IfEnd SubPrivate Sub Form_KeyUp(KeyCode As Integer,Shift As Integer)If KeyCode=&H41 ThenPrint 松开A键End IfIf KeyCode=&H42 ThenPrint 松开B键End IfIf KeyCode=&H43 ThenPrint 松开C键End IfEnd SubVisualBasic程序设计教程(下)10.2.3 KeyUp10.2.3 KeyUp事件事件程序运行后,如果按A键,则在窗体上输出“压下A键”,当松开时输出“松开A键”。按B和C输出结果类似,如图10-4所示。VisualBasic程序设计教程(下)10.2.3 KeyUp10.2.3 KeyUp事件事件在试验上面的程序时,按下A(或B、C)键应立即松开,如果按住不放,将连续显示“压下A键(或B、C)”。VisualBasic程序设计教程(下)本章小结本章小结KeyPress事件可以用来对标准键盘编写代码来处理大多数按键。此事件中只有一个参数,就是用户按键的ASCII码值。KeyDown和KeyUp事件在程序中用于检测一些键的特殊组合。鼠标事件有MouseDown、MouseUp、MouseMove,可以通过它们来了解鼠标的位置及状态的变化。VisualBasic程序设计教程(下)思考思考1.常用的鼠标事件有哪些?如何应用?2.键盘事件中KeyPress和KeyDown有什么区别?VisualBasic程序设计教程(下)第第11章章 文件文件11.1 11.1 文件概述文件概述 11.3 11.3 顺序文件构顺序文件构11.2 11.2 文件系统控件构文件系统控件构11.4 11.4 随机文件随机文件11.5 11.5 二进制文件二进制文件11.6 11.6 常用的文件操作语句和函数常用的文件操作语句和函数11.7 11.7 应用举例应用举例VisualBasic程序设计教程(下)11.1 文件概述文件概述 所谓文件,是指记录在外部介质上的相关数据的集合,并给此集合指定一个名称。由于文件存储在外部介质上,它不会因系统掉电而丢失信息,因此,文件可以方便、安全地保存程序运行期间的过渡数据和最终结果。在Visual Basic文件管理系统下,存储文件的方式有三种,即顺序文件、随机文件和二进制文件。这三种文件存储方式按照数据存放顺序和数据组织结构进行分类。VisualBasic程序设计教程(下)11.2 文件系统控件文件系统控件 VB提供了3个文件系统控件用于文件搜索,分别是DriveListBox(驱动器列表框)、DirListBox(目录列表框)和(文件列表框)。这3个控件是VB的内部控件,总是出现在工具箱中。VisualBasic程序设计教程(下)DriveListBox(驱动器列表框)是一个下拉式列表框,其用途是搜索驱动器。平时只显示一个驱动器(默认情况下,显示的是当前驱动器的名称)。用户可以从列表中选定某个驱动器。驱动器列表框最重要的属性是Drive,该属性用来在运行时设置或返回所选择的驱动器,但在设计时不可用。例如,将Drive1.Drive=D添加到窗体的Load事件中,则程序启动后驱动器中显示的是指定的驱动器D,而不是当前驱动器.另外,值得注意的是,以上操作只能显示驱动器,并不能自动地变更当前的工作驱动器。若改变当前驱动器,需要使用以下代码:ChDriveC:将C盘设置为当前工作驱动器ChDriveDrive1.Drive将驱动器列表框所选盘设置为当前工作驱动器11.2.1 DriveListBox11.2.1 DriveListBoxVisualBasic程序设计教程(下)11.2.2 DirListBox11.2.2 DirListBoxDirListBox(目录列表框)用于显示当前驱动器上的目录清单。它以根目录开始显示当前驱动器目录结构。目录列表框最重要的属性是Path,该属性用来在运行时设置或返回所选择的路径,但在设计时不可用。例如:Dir1.Path=D:doubles“Dir1.Path=Drive1.DriveDir1将显示Drive1上的目录同样,目录列表框所选目录并不是当前工作目录。为设置当前工作目录应使用ChDir,语句如下:ChDirDir1.Path值得注意的是,目录列表框只能显示当前驱动器下的目录。如果要显示其他驱动器下的目录,则要使用Path属性来设置它的路径,最好将目录列表框与驱动器列表框结合使用。VisualBasic程序设计教程(下)11.2.3 11.2.3(文件列表框)被用于显示Path属性所指目录中的文件。例如:=Dir1.Path文件列表框File将显示Dir1所选目录中的文件Pattern是文件列表框的一个重要属性,用于设置过滤所显示的文件。另外,Pattern属性用来设置或返回文件列表框中所显示的文件类型,该属性的默认值为“*.*”,即显示所有文件。例如要使文件列表框中只显示文本文件,则应该将Pattern属性的值设置为“*.txt”。要设置多个文件类型,可以使用分号(;)来分隔。例如:=*.EXE;*.COM;*.SYS以上设置可使文件列表框File1仅显示扩展名为.exe、.com、.sys的文件。VisualBasic程序设计教程(下)11.2.4 11.2.4 文件系统控件的联动文件系统控件的联动以上介绍了3个内部控件的使用,在实际应用中往往将这3个控件结合在一起,用来完成对文件的搜索。【例11-1】使用文件系统控件完成文件查找,如图11-1所示。图11-1 文件系统控件VisualBasic程序设计教程(下)代码如下:PrivateSubDir1_Change()=Dir1.PathEndSubPrivateSubDrive1_Change()Dir1.Path=Drive1.DriveEndSub通过这个例子,就可实现驱动器的改变引发文件夹的改变,进而引起文件夹内容的改变。现在,已经可以通过文件系统控件搜索到具体的文件了。11.2.4 11.2.4 文件系统控件的联动文件系统控件的联动VisualBasic程序设计教程(下)顺序文件是指顺序存取的文件,这是一种结构相对简单的文件。顺存取是指数据是依次写入文件的,在读取时,数据又依次被读出来。即数据的存取顺序与它在文件中的实际次序一致。例如,要读取最后一个数据,也必须从第一个数据开始依次进行,直到读取最后一个数据。因此,为了提高存取效率,通常只在以下情况才使用顺序文件。n文件中的内容很少或不必修改;n在文件处理时按顺序方式;n仅在文件的尾部添加信息。这种存取方式的优点是存储结构简单,缺点是文件保存或删除后,存储体会留下很多碎片,从而造成资源浪费;查找其中的一个记录,必须将其前面的记录都读出,效率较低。11.3 顺序文件顺序文件VisualBasic程序设计教程(下)11.3.1 11.3.1 顺序文件的打开与关闭顺序文件的打开与关闭1.文件的打开文件的打开要对一个顺序文件进行读写,首先必须打开顺序文件。打开顺序文件的语句是Open语句,其语法格式如下:OpenPathnameforInput|Output|AppendAsnPathname是指需要打开的包括路径的文件名;nInput是指从文件输入字符,此时文件必须存在,否则,会产生一个错误;nOutput是指向文件输出字符,此方式能够将数据以覆盖
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!