版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10其他常用的语句及控件
VB中的控件分为两类:一是标准控件,二是ActiveX控件。默认情况下工具箱中只有标准控件,用户也可通过“工程”菜单中的“部件”命令添加所需的ActiveX控件。
第10章
其他常用的语句及控件框架(Frame)滚动条(ScrollBar)图形方法和图形控件菜单设计工具栏和状态栏键盘与鼠标事件对话框通用/自定义文件系统控件其他常用语句本章主要内容
1.框架的用途
作为容器放置其他控件对象,将这些控件对象分成可标识的控件组;框架内的所有控件将随框架一起移动、显示和消失。
(框架示例:“幻灯片放映”→“设置放映方式”对话框)
例10.1
控制文本的字体、字号及颜色在窗体上设置3个框架Frame1、Frame2和Frame3
10.1
框架(Frame)框架Frame3框架Frame2框架Frame1(2)编写程序代码
功能要求:在三个框架中分别选择字体、字号和颜色,单击“确定”按钮后,文本框中的文本相应属性会发生变化
PrivateSubForm_Load()Option1.Value=TrueOption3.Value=TrueOption5.Value=TrueText1.FontName="宋体"
Text1.FontSize=16Text1.ForeColor=RGB(0,0,255)
EndSub
PrivateSubCommand1_Click()‘“确定"按钮单击事件
IfOption1.ValueThenText1.FontName="宋体"
ElseText1.FontName="幼圆"
EndIfIfOption3.ValueThenText1.FontSize=16ElseText1.FontSize=20EndIfIfOption5.ValueThenText1.ForeColor=RGB(0,0,255)ElseText1.ForeColor=RGB(255,0,0)EndIf
EndSub10.2滚动条
1.滚动条的用途
为不能自动支持滚动的应用程序和控件提供滚动功能,也可作为数据输入的工具。
水平滚动条(HScrollBar)和垂直滚动条(VScrollBar)
2.常用属性
(1)
Min、Max属性:最小值Min属性的默认值为0,最大值Max属性的默认值为32767。
(2)Value属性:表示滚动块在滚动条中的位置值移动滚动块时,代表的值随之改变
(3)SmallChange属性:最小变动值
(4)LargeChange属性:最大变动值
3.事件
滚动条控件可以识别10个事件,其中最常用的是Scroll和Change事件(1)Scroll事件:当用鼠标拖动滚动块时,即触发Scroll事件(2)Change事件:当改变Value属性值时,即触发Change事件当释放滚动块、单击滚动条内空白处或滚动箭头时,Change事件就会发生。例10.2
设计一个调色板应用程序
建立三个水平滚动条作为红、绿、蓝三种基本颜色的输入工具,合成的颜色显示在右边的标签中(图10.3),用其背景颜色属性BackColor值的改变实现合成颜色的调色
Label1.BackColor=RGB(R,G,B)例10.2其值分别由3个滚动条控制标签Label1
说明:根据调色原理,基本颜色有红、绿、蓝三种,选择这三种颜色的不同比例,可以合成所需要的任意颜色
(1)创建应用程序的用户界面和设置对象属性三个水平滚动条名称从上至下分别为HScroll1、HScroll2、HScroll3
其Max属性均设置为255,Min属性均设置为0,
SmallChange属性设置为1,LargeChange属性设置为10,Value设置为0。显示合成颜色的标签名为Label1
(2)编写程序代码
功能要求:通过操作(单击或拖动)滚动条,直接修改RGB设置,从而得到标签背景所需的颜色
PrivateSubHScroll1_Change()Label1.BackColor=RGB(HScroll1.Value,_HScroll2.Value,HScroll3.Value)
EndSubPrivateSubHScroll2_Change()Label1.BackColor=RGB(HScroll1.Value,_HScroll2.Value,HScroll3.Value)
EndSubPrivateSubHScroll3_Change()Label1.BackColor=RGB(HScroll1.Value,_HScroll2.Value,HScroll3.Value)
EndSub
4种图形控件:PictureBox控件、Image控件、Shape控件和Line控件;图形方法
10.3.1坐标系
每个对象都定位于存放它的容器内每个容器都有一个坐标系,它包括坐标原点,x坐标轴和y坐标轴,默认的坐标原点(0,0)在容器对象的左上角默认单位为Twip(缇),还可以使用磅、像素、厘米等单位10.3
图形方法和图形控件YXTopHeightLeftWidth
使用Pset(画点)、Line(画线)、Circle(画圆)等图形方法,可以在窗体和图片框上绘制简单的图形
1.Pset(画点)方法格式:[对象名.]Pset[Step](x,y)[,颜色]
功能:在对象的指定位置(x,y)上按选定的颜色画点
示例:下列语句能在坐标位置(500,900)处画一个红点:
Pset(500,900),RGB(255,0,0)2.Line(画线)方法格式:[对象名.]Line[(x1,y1)]-(x2,y2)[,颜色]
功能:在两个坐标点之间画一条线段。例如,下列语句可在窗体上画一条斜线
Line(600,600)-(2000,3000)3.Circle(画圆)方法格式:[对象名.]Circle[Step](x,y),半径[,颜色,起点,终点,纵横比]
功能:在对象上画圆、椭圆或圆弧
10.3.2
图形方法
图片框(PictureBox)和图像框(Image)都是用于显示图形。图片框可以作为其他控件的容器。
示例
PrivateSubForm_Load()ShowPicture1.Print"在图片框内写字和画圆"
Picture1.Circle(1200,1000),600,RGB(0,0,255)Picture1.PSet(1200,1000),RGB(255,0,0)
EndSub10.4.3图片框(PictureBox)例10.3a
10.3.4
图像框(Image)
图像框(Image)控件的作用与图片框PictureBox控件相似,但它只能用于显示图形,不能作为其他控件的容器。10.3.5
Shape形状控件
VB提供了画图形的基本工具,如Shape(形状控件)、Line(线控件)。Shape控件和Line控件只用于表面装饰,不支持任何事件
Shape控件画出矩形、正方形、圆形等图形。10.3.6
Line直线控件
Line直线控件可用来在窗体、框架和图片框中绘制简单的线段。
(1)分析:本例分别以Second、Minite和Hour函数取得系统时间Time的秒、分和时数,再利用计时器控件,按一定时间间隔把时间数转换为图形指针位置和显示出来
(2)创建应用程序的用户界面计时器(Timer1),形状控件(Shape1),三条线控件(LineS,LineM,LineH),四个标签(表示数字)
例10.4
设计一个走动的时钟例10.4
(3)设置对象属性
Timer1的Interval属性为1000(1秒)
Shape1的Shape属性为3-Circle(圆形),FillStyle属性为0-Solid(实心)
LineS,LineM,LineH的BorderWidth属性为1,2,4
(4)编写程序代码
OptionExplicit
‘规定所有变量都要显式声明,见10.9.1节
Constpi=3.14159
Privatelen_SAsSingle,len_MAsSingle,len_HAsSingle
PrivateSubForm_Load()
‘先取各指针的长度
'秒针长度
len_S=Sqr((LineS.Y2-LineS.Y1)^2+(LineS.X2-LineS.X1)^2)'分针长度
len_M=Sqr((LineM.Y2-LineM.Y1)^2+(LineM.X2-LineM.X1)^2)'时针长度
len_H=Sqr((LineH.Y2-LineH.Y1)^2+(LineH.X2-LineH.X1)^2)
CallTimer1_Timer
EndSub
PrivateSubTimer1_Timer()
'定时器的定时事件过程
DimsAsSingle,mAsSingle,hAsSingleForm1.Caption=Times=Second(Time)m=Minute(Time)h=Hour(Time)+m/60LineS.X2=LineS.X1+len_S*Sin(pi*s/30)'绘制秒针
LineS.Y2=LineS.Y1-len_S*Cos(pi*s/30)LineM.X2=LineM.X1+len_M*Sin(pi*m/30)'绘制分针
LineM.Y2=LineM.Y1-len_M*Cos(pi*m/30)Ifh>=12Thenh=h-12LineH.X2=LineH.X1+len_H*Sin(pi*h/6)'绘制时针
LineH.Y2=LineH.Y1-len_H*Cos(pi*h/6)
EndSub
计算指针位置的方法
s秒K60秒2πK=2πs/60=πs/30x2=x1+x=x1+L*Cos(π/2–K)=x1+L*SinK
LineM.X2=LineM.X1+Len_s*Sin(PI*s/30)
xx2x1K(s秒)π/2-K指针指针末位置x坐标值指针始位置x坐标值指针长度
窗体左边界
窗体和大多数控件都能响应键盘和鼠标事件
10.4.1键盘事件
有三种事件处理键盘操作
1.KeyPress事件
2.KeyDown事件:用户按下键盘上某个键时触发此事件3.KeyUp事件:用户按下键盘上某个键后释放时触发此事件
10.4
键盘与鼠标事件
Click、DblClick、MouseMove、MouseDown和MouseUp事件当移动鼠标时发生MouseMove事件当按下鼠标任意键时发生MouseDown事件,放开鼠标键时发生MouseUp事件后三种事件可以区分鼠标的左、右、中键与Shift、Ctrl、Alt键
PrivateSub对象名_鼠标事件(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)
说明:(1)Button参数表示哪个鼠标键被按下或释放。用0,1,2位分别表示鼠标的左、右、中键,用1或0表示被按下或释放
(2)Shift参数表示当鼠标键被按下或释放时,Shift、Ctrl、Alt键的按下或释放状态。用0、1、2位表示Shift、Ctrl、Alt键
(3)X,Y表示鼠标指针的当前坐标位置
210位
······左键右键中键
10.4.2
鼠标事件MouseMove、MouseDown或MouseUp
10.5菜单设计
应用程序通过菜单为用户提供一组命令菜单一般分为两种:下拉式菜单和弹出式菜单
10.5.1下拉式菜单
1.下拉式菜单的结构下拉式菜单基本结构包括:顶层菜单、菜单项和子菜单子菜单项子菜单提示符访问键快捷键分隔线复选标记菜单项顶层菜单
10.5.2
菜单编辑器
设计菜单的工具——菜单编辑器菜单编辑器分为上、下两部分,上半部分用来设置属性,下半部分是菜单显示区,用来显示用户输入的菜单内容。10.5.3菜单的Click事件除分隔线以外的所有菜单元素都能识别Click事件例10.8
编一程序,进行两个操作数的算术运算练习
设计步骤如下:
(1)创建应用程序的用户界面和设置对象属性菜单栏向用户提供功能选择,包括运算数的位数,运算符类型(加、减、乘)和退出程序菜单设计各个菜单项名称例10.8
(2)编写程序代码
OptionExplicit‘规定所有变量都要显式声明,见10.9.1节
Dimsel1AsInteger,sel2AsStringDimr1AsLong
PrivateSubForm_Load()sel1=0'位数标记
sel2=""'运算标记
Randomize
EndSubPrivateSubMnu11_Click()‘单击“一位数”菜单项
sel1=1'设置位数标记
EndSubPrivateSubMnu12_Click()‘单击“二位数”菜单项
sel1=10
EndSubPrivateSubMnu13_Click()‘单击“三位数”菜单项
sel1=100EndSubPrivateSubMnu21_Click()‘单击“加法”菜单项
sel2="+"'设置运算标记EndSubPrivateSubMnu22_Click()‘单击“减法”菜单项
sel2="-"EndSubPrivateSubMnu23_Click()‘单击“乘法”菜单项
sel2="*"EndSubPrivateSubCommand1_Click()
'"命题"按钮单击事件
DimaAsLong,bAsLongIfsel1=0Orsel2=""Then
MsgBox"先选择运算数的位数和运算类型"
ExitSubEndIfa=sel1+Int(9*sel1*Rnd)‘根据指定位数,随机生成操作数
b=sel1+Int(9*sel1*Rnd)Text1.Text=Str(a)+sel2+Str(b)+“=”‘根据操作数及运算类型组成算式
SelectCasesel2‘根据运算类型,求运算结果r1Case"+"r1=a+bCase"-"r1=a-bCase"*"r1=a*bEndSelectText2.Text=""Text2.SetFocusEndSub菜单操作后Sel1指定位数
=1
一位数
=10
二位数
=100
三位数Sel2指定运算类型
=“+”加法
=“-”减法=“*”乘法PrivateSubCommand2_Click()
'"答题"按钮单击事件
Dimr2AsLongIfText2.Text=""Then
MsgBox"请输入答案"
ExitSubEndIfr2=Val(Text2.Text)'读取用户的答案
Ifr1=r2Then'判断答案
MsgBox"正确"
Else
MsgBox"错误"
EndIfEndSubPrivateSubMnu30_Click()‘“退出”菜单命令
EndEndSub
10.5.5
弹出式菜单
弹出式菜单又称为快捷菜单。可以根据右击鼠标时的位置弹出不同的菜单。使用VB提供的菜单编辑器,把某个菜单设置成隐藏。创建快捷菜单的步骤如下:(1)使用菜单编辑器设计菜单(2)设置顶层菜单项为不可见,即不选中菜单编辑器里的“可见”选项或在属性窗口中设定Visible属性为False(3)编写与弹出式菜单相关联的MouseUp(释放鼠标)事件过程。格式为:
[对象]PopupMenu
菜单名[,位置常数][,横坐标[,纵坐标]]]例10.9在例10.8的基础上,把“位数”菜单改为快捷菜单
(1)打开例10.8的应用程序,选定窗体,然后在菜单编辑器中将“位数”菜单标题的“可见”框中的“√”取消(即不选中)
(2)增加以下的MouseUp事件过程代码:
PrivateSubForm_MouseUp(ButtonAsInteger,_
ShiftAsInteger,XAsSingle,YAsSingle)
IfButton=2Then‘检查是否右击,击左键为1
PopupMenumnu10
EndIf
EndSub
程序运行时,右击窗体空白处,即会弹出快捷菜单,如图10.12所示例10.9
弹出式菜单
10.6
工具栏和状态栏
分别通过ActiveX控件ToolBar和StatusBar来实现
10.6.1ActiveX控件简介
VB中使用的控件有三类:标准控件、ActiveX控件和可插入对象(如Word文档、Excel工作表等,可当作控件使用)
ActiveX控件是一段可重复使用的程序代码和数据。由ActiveX技术创建的,可以作为VB工具箱的扩充部分。
ActiveX控件以单独的文件存在(.ocx)
10.6.2
工具栏(ToolBar)
工具栏为用户带来比用菜单更为快速的操作为窗体添加工具栏,应使用工具条(ToolBar)控件和图像控件列表(ImageList)控件(不是标准控件)
创建工具栏的大致步骤:(1)添加ToolBar控件和ImageList控件(2)用ImageList控件保存要使用的图形(3)创建ToolBar控件,并将ToolBar控件与ImageList控件相关联,创建Button对象(4)编写Button的Click事件过程。单击工具栏控件时触发Click事件,单击工具栏上按钮时触发ButtonClick事件,并返回一个Button参数(表明按下哪个按钮)
例10.10使用工具栏
在例10.8的基础上,增加一个工具栏,使之能快速提供“加法”、“减法”和“乘法”运算类型例10.10ImageList控件存放工具栏所需的图像工具栏控件
(1)打开例10.8的应用程序(2)按照上述创建ImageList的方法,在窗体上建立ImageList1控件,并从Windows98系统文件夹中取出图片文件Hlpcd.gif、Hlpbell.gif和Hlpglobe.gif(本例采用这三个图片作为按钮的图形),并添加到该控件中。(3)在窗体上建立ToolBar1控件,使之与ImageList1相关联,然后在控件中添加“加法”、“减法”和“乘法”三个按钮,并分别取用ImageList1中的三个图片。(4)在原有程序代码的基础上,增加以下的ButtonClick事件过程代码
操作步骤
PrivateSubToolbar1_ButtonClick(ByValButtonAs_
MSComctlLib.Button)SelectCaseButton.IndexCase1sel2="+"Case2sel2="-"Case3el2="*"EndSelectEndSub
10.6.3状态栏
状态栏(StatusBar)通常位于窗体的底部,主要用于显示应用程序的各种状态信息。StatusBar控件属于ActiveX控件
StatusBar控件由若干个面板(Panel)组成,每一个面板包含文本和图片。StatusBar控件最多能分成16个Panel对象例10.11
使用状态栏
在例10.10的基础上,在窗体底部添加一个状态栏,用于显示当前时间、键盘大小写状态及运行状态。
例10.1110.7对话框
对话框(DialogBox)是应用程序与用户进行交互的主要途径。三种对话框:
(1)预定义对话框
使用函数InputBox和MsgBox来实现。(2)通用对话框通用对话框是一种ActiveX控件,在使用之前,应选择“工程”菜单中的“部件”命令先将其添加到工具箱中
(选中“MicrosoftCommonDialogControl6.0”
)
利用通用对话框能够创建下列六种标准对话框(指定相应的参数,P233):
打开(Open),另存为(SaveAs),颜色(Color)
字体(Font),打印机(Printer),帮助(Help)(3)用户自定义对话框
建立一个窗体,把窗体设置成对话框特性(没有控制菜单框、最大化及最小化按钮,不能改变其大小,见表10.3)
在窗体上根据需要放置控件
10.8
文件系统控件
VB工具箱中提供了三种文件系统控件:
驱动器列表框(DriveListBox):选择一个驱动器文件夹列表框(DirListBox):显示一个磁盘的文件夹结构文件列表框(FileListBox):显示当前文件夹下的所有文件名这三种控件可以单独使用,也可以组合使用
10.9.1强制显式声明变量语句(OptionExplicit)
避免因为写错变量名而导致错误例如,交换变量a、b的值
Temp=aa=bb=Tmp'把Temp写错成Tmp
运行结果是使b的值为0。若改成:
OptionExplicit‘模块级声明
DimaAsInteger,bAsInteger,TempAsInteger...Temp=aa=bb=Tmp
运行时VB就会发出警告“Variablenotdefined”(变量未定义),只有把Tmp改为Temp后才恢复正常10.9其他常用语句
10.9.2定义变量类型格式:Def类型标志字母范围
示例:DefIntm-P
10.9.3自定义数据类型用户可以利用Type语句定义自己的数据类型
[Private|Public]Type数据类型名元素名1As类型名1……
EndType10.9.4定义枚举类型将变量的值一一列举出来,变量的值只限于列举出来的值
[Public|Private]Enum
枚举类型名成员名1[=常数表达式]……
EndEnum定义类型语句
包括GoTo语句和On...GoTo语句
1.GoTo语句
语法格式:GoTo{行号|标号}
功能:改变程序的执行顺序,跳转到程序中指定的行开始执行
例10.15
应用GoTo语句示例
PrivateSubForm_Load()ShowPrint"整型数"
GoToLine1'跳转到标号Line1指定的行
Print"单精度数"
Line1:Print"字符串"
EndSub10.9.5
GoTo型控制例10.15
On...GoTo语句用来实现分支选择控制(类似于Select...EndSelect)
语法格式:On数值表达式GoTo{行号表|标号表}
功能:根据“数值表达式”的值,控制转移到几个指定的语句行中的一个语句行。例如
OnKGoToLine1,Line2,Line3
执行过程:将K四舍五入取整,如果其值为1,则转移到Line1标号行;如果为2,则转移到Line2标号行;如果为3,则转移到Line3标号行。如果K的值等于0或大于3,则自动执行本语句的下一个语句
2.On...GoTo语句
1.直接输出
把信息直接送往打印机格式:Printer.Print[表达式表]
(1)Page属性:设置当前页号格式:Printer.Page
(2)NewPage方法:实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年日语外贸业务员劳动协议
- 2024年电气工程服务协议详细模板
- 2023-2024学年中原名校高考数学试题仿真卷:数学试题试卷
- 2024年创意动画广告制作协议示例
- 2024专业护士聘用协议细则
- 2024年度党组织结对共建协议
- DB11∕T 1721-2020 水生生物调查技术规范
- 2024精制陶瓷购销协议样本
- 二手车销售协议范本(个性化)
- 2024年煤矿作业自卸运输车销售协议
- 供应商调查表格式
- 民警职务晋升考察材料范文四篇
- 公交车站突发事件处置方案
- 中石化定额章节官方解析交流148篇答疑
- 肿瘤科疑难病例讨论发热
- 人民医院胸外科临床技术操作规范2023版
- 技术授权协议书(模板)
- 人教部编版四年级语文上册古诗词日积月累默写模板
- 地下水处理技术方案及报价
- 高考语文复习-诗歌选择题解题技巧 教案
- 水泥砂浆砌石体单元评定表
评论
0/150
提交评论