其他常用的 第 10 章 语句及控件.

Slides:



Advertisements
Similar presentations
第七章 常用控件 7.1 控件概述 7.2 常用内部控件 本章要求 返回目录 第七章 常用控件 (Common Control)
Advertisements

Visual Basic 程序设计教程.
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
第10章 处理图形 Visual Basic 程序设计教程.
项目2 字符格式和段落编排 2017年3月7日6时54分.
第四章 控制结构.
第 7 章 文 件.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
插入超链接 高邮市第一实验小学 范太国 任务一:设置文本超链接 任务一:设置文字超链接 步骤:1、选定文字并右击,在快捷菜单 中选择“超链接”命令。 2、在弹出的对话框中选择左侧“链接到:”中的“本文档中的位置(A)”项,在“请选择文档中的位置(C):”中选择需要链接的幻灯片,单击“确定”按钮。
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
第6章 用户交互:使用鼠标、键盘和菜单 Visual Basic 程序设计教程.
Visual Basic程序设计.
第10章 图 形 基 础 10.1 坐标系 10.2 绘图属性 10.3 图形控件 10.4 图形方法 习题十.
数组 第 6 章.
第5章 数组 Visual Basic程序设计.
新觀念的 VB6 教本 第13章 表單的圖形輸出系統.
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
Visual Basic程序设计 第八章 过程 -子程序和函数
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
过程 第 7 章.
Visual Basic 程序设计 第四章 程序的输入和输出
第十一讲 VB常用标准控件(2).
Visual Basic程序设计基础 计算机科学学院.
第十三章 檔案.
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
Visual Basic 程序设计教程 机械工业出版社同名教材 配套电子教案 2003 年 6月.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
走进编程 程序的顺序结构(二).
第8章 键盘、鼠标事件和图形 Visual Basic为用户提供了键盘、鼠标事件用于响 应键盘操作和鼠标操作。在Visual Basic中,大多 数控件都有键盘事件和鼠标事件。这一章将讲述 与键盘和鼠标相关的内容,除此之外,还有通常 在鼠标事件中出现的关于绘制图形方面的内容。
第6章 常用控件 郭清溥.
程式設計 Visual Basic簡介 週次:1 建國技術學院 資管系 饒瑞佶 2003年9月17日.
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
新觀念的 VB6 教本 第 6 章 資料型別.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
VB程序设计语言 主讲教师:王 杨.
高等学校计算机基础教育教材 Visual Basic 6.0 程序设计 上海中医药大学现代教育技术中心 计算机教学部 1.
第二章 创建用户界面 本章重点和难点 2.1 基本属性 2.2 创建窗体 2.3 Visual Basic的常用控件 2.4 制作菜单.
第8章 菜单及窗体的设计 8.1 菜单 8.2 对话框 8.3 工具栏 8.4 状态栏 8.5 多重窗体与MDI窗体 8.6 键盘和鼠标.
算法与程序设计 周少品.
第10章 高级用户界面设计 10.1 菜单设计 10.2 通用对话框 10.3 图像列表框控件 10.4 树形视图控件
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
第七章 文件 本章重点 7.1 文件管理控件 7.2 文件处理 7.3 练习.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
第11章 实用扩展控件 11.1 RichTextBox控件 11.2 TreeView和ListView控件 11.3 其他扩展控件 结束.
第10章 对 话 框 知识要点 学习任务 消息对话框的功能、用法及使用技巧 输入对话框的功能、用法及使用技巧
VB程序设计语言 主讲教师:王 杨.
第五章: 輸入與輸出.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
第二章、第三章错题分析.
姚金宇 MIT SCHEME 使用说明 姚金宇
第10章 界面设计 10.1 对话框控件 10.2 菜单程序设计 10.3 多重窗体和多文档界面 10.4 工具条和状态栏
第4章 Excel电子表格制作软件 4.4 函数(一).
选择结构设计 第 4 章 程序流程有三种最基本的控制结构,即顺序结构、选择结构和循环结构。
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
第六章 素材的加工与处理 第13讲 用GoldWave进行音频的截取、合并、淡入淡出操作
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
程式設計 Visual Basic簡介 週次:4 建國技術學院 資管系 饒瑞佶 2003年10月18日.
1位选手参加了歌唱比赛,评委们的评分如下:
第八章: 輸入裝置-鍵盤與滑鼠.
VB程序设计初体验 主讲:林赛雅.
Visual Basic 第11章 图形与图象设计
1、复选框和单选按钮 2、框架 3、列表框和组合框 4、滚动条 5、鼠标器事件 6、键盘
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
顺序结构程序设计 ——关于“字符串”和数值.
Presentation transcript:

其他常用的 第 10 章 语句及控件

第10章 其他常用的语句及控件 本章主要内容 其他一些常用语句 框架(Frame) 滚动条(ScrollBar) 图形方法和图形控件 菜单设计 工具栏和状态栏 键盘与鼠标事件 对话框 通用对话框(CommonDialog) 文件系统控件

10.1 其他常用语句 10.1.1 强制显式声明变量语句(Option Explicit) 避免因为写错变量名而导致错误 10.1 其他常用语句 10.1.1 强制显式声明变量语句(Option Explicit) 避免因为写错变量名而导致错误 例如,交换变量a、b的值 Temp=a a=b b=Tmp '把Temp写错成Tmp 运行结果是使b的值为0。若改成: Option Explicit ‘模块级声明 Dim a As Integer,b As Integer,Temp As Integer . . . Temp=a a=b b=Tmp 运行时VB就会发出警告“Variable not defined”(变量未定义),只有把Tmp改为Temp后才恢复正常

10.1.2 定义变量类型 格式:Def类型标志 字母范围 功能:在模块级声明段中定义变量 (相应数据类型 ) 示例:DefInt m-P 10.1.2 定义变量类型 格式:Def类型标志 字母范围 功能:在模块级声明段中定义变量 (相应数据类型 ) 示例:DefInt m-P 10.1.3 自定义数据类型 用户可以利用Type语句定义自己的数据类型 [Private|Public] Type 数据类型名 元素名1 As 类型名1 [元素名2 As 类型名2] …… End Type

Type Rsk_Rec 编号 As String*3 ’用汉字表示字段名 姓名 As String*8 性别 As Boolean 出生日期 As Date 基本工资 As Long End Type 这里的Rsk_Rec是一个用户定义的数据记录类型,它由5个元素(字段)组成

10.1.4 定义枚举类型 所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值 10.1.4 定义枚举类型 所谓“枚举”是指将变量的值一一列举出来,变量的值只限于列举出来的值 [Public|Private] Enum 枚举类型名 成员名1 [=常数表达式] 成员名2 [=常数表达式] …… End Enum

例10.1 应用枚举类型示例 输入一个数字表示星期几,判断输出是“休息日”还是“工作日” Private Enum weekdays '定义Weekdays为枚举类型 Sun Mon Tue Wed Thu Fri Sat End Enum

Private Sub Command1_Click() Dim myday As weekdays '定义Myday为Weekdays枚举类型 myday = Val(InputBox("今天是星期几(0~6)")) '输入0~6 If myday <Sun Or myday > Sat Then MsgBox "输入的星期数错误" Else If myday = Sun Or myday = Sat Then MsgBox "休息日" MsgBox "工作日" End If End Sub

10.1.5 GoTo型控制 包括GoTo语句和On...GoTo语句 1. GoTo语句 语法格式:GoTo {行号|标号} 功能:改变程序的执行顺序,跳转到程序中指定的行开始执行 例10.2 应用GoTo语句示例 Private Sub Form_Load() Show Print "整型数" GoTo Line1 '跳转到标号Line1指定的行 Print "单精度数" Line1: Print "字符串" End Sub

2. On...GoTo语句 On...GoTo语句用来实现分支选择控制(类似于Select...End Select) 功能:根据“数值表达式”的值,控制转移到几个指定的语句行中的一个语句行。 例如 On K GoTo Line1, Line2, Line3 执行过程:将K四舍五入取整,如果其值为1,则转移到Line1标号行;如果为2,则转移到Line2标号行;如果为3,则转移到Line3标号行。如果K的值等于0或大于3,则自动执行本语句的下一个语句

10.1.6 打印机输出 1. 直接输出 把信息直接送往打印机 格式:Printer.Print [表达式表] 10.1.6 打印机输出 1. 直接输出 把信息直接送往打印机 格式:Printer.Print [表达式表] (1)Page属性:设置当前页号 格式:Printer.Page (2)NewPage方法:实现换页操作 格式:Printer.NewPage (3)EndDoc方法:结束文件打印 格式:Printer.EndDoc 例10.3 在打印机上打印文字“计算机程序设计” Private Sub Command1_Click() Printer.FontName = "隶书" Printer.FontSize = 12 Printer.Print “计算机程序设计” '将文本放到Printer对象中 Printer.EndDoc ‘打印结束 End Sub

2. 窗体输出 先把要输出的信息送到窗体上,再用PrintForm方法把窗体上的内容打印出来 格式:[窗体名.]PrintForm 功能:把窗体上的信息输出到打印机

10.1.7 闲置循环与DoEvents语句 VB只有在发生事件时才执行相应的事件过程,如果没有事件发生,则应用程序处于“闲置”状态 所谓闲置循环,就是当程序处于闲置状态时,用一个循环来执行某些操作 为使在闲置循环中也能响应其他操作和事件,VB提供了一个DoEvents语句,其格式为: [窗体号=]DoEvents[()] 功能:在闲置循环中,通过DoEvents语句可以把控制权交给系统去处理所发生的事件

例10.4 闲置循环和DoEvents应用示例  Private Sub Command1_Click() (1) 建立一个文本框和二个命令按钮,两个事件过程:  Private Sub Command1_Click() Text1.FontSize = Text1.FontSize + 1 End Sub Private Sub Command2_Click() End (2) 编写Sub Main过程 Private Sub MAIN() Form1.Show Do While True '进入“闲置循环” x = DoEvents '把控制权交给系统去处理所发生的事件 '否则不能处理其他事件 Form1.Text1.Text = Time Loop

(3)把Sub Main设置为启动对象  程序运行后,进入闲置循环,此时将在文本框Text1中不断地显示系统时间。 由于加入DoEvents函数,则可以在执行闲置循环过程中执行其他操作,如重设窗体的大小及最大化/最小化,还能响应命令按钮Command1和Command2的单击事件等。 当其他操作完成后,又会回到闲置循环中继续执行

10.2 框架(Frame) 1. 框架的用途 作为容器放置其他控件对象,将这些控件对象分成可标识的控件组;框架内的所有控件将随框架一起移动、显示和消失。 2. 常用属性 Name属性和Caption属性 3. 事件 可以响应Click和Dblclick事件。 在应用程序中一般不需要编写有关框架的事件过程

例10.5 控制文本的字体、字号及颜色 设计步骤如下: (1)创建应用程序的用户界面和设置对象属性 例10.5 控制文本的字体、字号及颜色 设计步骤如下: (1)创建应用程序的用户界面和设置对象属性 在窗体上设置3个框架Frame1、Frame2和Frame3

(2)编写程序代码 功能要求:在三个框架中分别选择字体、字号和颜色,单击“确定”按钮后,文本框中的文本相应属性会发生变化 Private Sub Form_Load() Option1.Value = True Option3.Value = True Option5.Value = True Text1.FontName = "宋体" Text1.FontSize = 16 Text1.ForeColor = RGB(0, 0, 255) End Sub

Private Sub Command1_Click() If Option1.Value Then Text1.FontName = "宋体" Else Text1.FontName = "幼圆" End If If Option3.Value Then Text1.FontSize = 16 Text1.FontSize = 20 If Option5.Value Then Text1.ForeColor = RGB(0, 0, 255) Text1.ForeColor = RGB(255, 0, 0) End Sub

10.3 滚动条 1.滚动条的用途 为不能自动支持滚动的应用程序和控件提供滚动功能,也可作为数据输入的工具。 2. 常用属性 水平滚动条(HScrollBar)和垂直滚动条(VScrollBar) 最小值(Min),最大值(Max) ;移动滚动块时,代表的值随之改变 2. 常用属性 (1)Min、Max属性: Min属性的默认值为0,Max属性的默认值为32767。 (2)Value属性:设置滚动块在滚动条中的位置值 (3)SmallChange最小变动值属性 (4)LargeChange最大变动值属性

滚动条控件可以识别10个事件,其中最常用的是Scroll和Change事件 3. 事件 滚动条控件可以识别10个事件,其中最常用的是Scroll和Change事件 (1)Scroll事件:当用鼠标拖动滚动块时,即触发Scroll事件 (2)Change事件:当改变Value属性值时,即触发Change事件 当释放滚动块、单击滚动条内空白处或滚动箭头时,Change事件就会发生。

例10.6 设计一个调色板应用程序 建立三个水平滚动条作为红、绿、蓝三种基本颜色的输入工具,合成的颜色显示在右边的标签中(图10.17),用其背景颜色属性BackColor值的改变实现合成颜色的调色

说明:根据调色原理,基本颜色有红、绿、蓝三种,选择这三种颜色的不同比例,可以合成所需要的任意颜色 (1)创建应用程序的用户界面和设置对象属性 三个水平滚动条名称从上至下分别为HScroll1、HScroll2、HScroll3 其Max属性均设置为255,Min属性均设置为0, SmallChange属性设置为1,LargeChange属性设置为10,Value设置为0。 显示合成颜色的标签名为Label1

(2)编写程序代码 功能要求:通过操作(单击或拖动)滚动条,直接修改RGB设置,从而得到标签背景所需的颜色 Private Sub HScroll1_Change() Label1.BackColor = RGB(HScroll1.Value, _ HScroll2.Value, HScroll3.Value) End Sub Private Sub HScroll2_Change() Private Sub HScroll3_Change()

10.4 图形方法和图形控件 4种图形控件:PictureBox控件、Image控件、Shape控件和Line控件;图形方法 10.4.1 坐标系 每个对象都定位于存放它的容器内 每个容器都有一个坐标系,它包括坐标原点,x坐标轴和y坐标轴,默认的坐标原点(0,0)在容器对象的左上角 默认单位为Twip(缇),还可以使用磅、像素、厘米等单位 窗体的实际可用的高度和宽度由ScaleHeight和ScaleWidth属性确定 CurrentX和CurrentY属性

10.4.2 图形方法 使用Pset(画点)、Line(画线)、Circle(画圆)等图形方法,可以方便地在窗体和图片框上绘制简单的图形 10.4.2 图形方法 使用Pset(画点)、Line(画线)、Circle(画圆)等图形方法,可以方便地在窗体和图片框上绘制简单的图形 1. Pset(画点)方法 格式:[对象名.] Pset [Step](x,y)[,颜色] 功能:在对象的指定位置(x,y)上按选定的颜色画点 参数Step指定(x,y)是相对于当前坐标点的坐标 示例:下列语句能在坐标位置(500,900)处画一个红点: Pset (500,900),RGB(255,0,0) 该语句等价于: CurrentX=100 : CurrentY=100 Pset Step(400,800),RGB(255,0,0)

2. Line(画线)方法 格式:[对象名.] Line [(x1,y1)]-(x2,y2)[,颜色] 功能:在两个坐标点之间画一条线段。 例如,下列语句可在窗体上画一条斜线 Line (600,600)-(2000,3000)

3. Circle(画圆)方法 格式: [对象名.] Circle [Step](x,y),半径[,颜色,起点,终点,纵横比] 功能:在对象上画圆、椭圆或圆弧 说明:(1)(x,y)是圆、椭圆或圆弧的中心坐标,“半径”是圆、椭圆或圆弧的半径。 (2)“起点”、“终点”(以弧度为单位)指定弧或扇形的起点或终点位置,其范围从-2π到2π。“起点”和“终点”的默认值为0和2π。正数画弧,负数画扇形。按逆时针方向画弧。 (3)纵横比为圆的纵轴和横轴的尺寸比。当纵横比大于1时,椭圆沿垂直方向拉长;当纵横比小于1时,椭圆沿水平方向拉长。纵横比的默认值为1,将产生一个标准圆。 (4)可以省略中间的某个参数,但不能省略分隔参数的逗号

例10.7 在窗体上画出一个扇形、圆、椭圆 Const PI = 3.14159 Show 例10.7 在窗体上画出一个扇形、圆、椭圆 Private Sub Form_Load() Const PI = 3.14159 Show Circle (2500, 1500), 1200, vbBlue, -PI, -PI/2 Circle Step(-600, -600), 600 Circle Step(0, 0), 600, , , , 5/25 End Sub

10.4.3 图片框(PictureBox) 2. 常用属性 Picture属性:用于设置在图片框中要显示的图像文件 1. 用途 图片框(PictureBox)和图像框(Image)都是用于显示图形。图片框可以作为其他控件的容器,还可以在图片框上面放置其他控件,这些控件随图片框的移动而移动 2. 常用属性 Picture属性:用于设置在图片框中要显示的图像文件 例如: Picture1.Picture=LoadPicture("图形文件名") Picture1.Picture=LoadPicture() ‘清除图片 Align属性:设置图片框在窗体中的显示方式 AutoSize属性:确定图片框如何与图形相适应

3. 图片框的使用 (1)显示和消除图形:见Picture属性 (2)用Print方法向图片框输出文本 (3)用图形方法在图片框中画图形 可以使用Circle(画圆)、Line(画线)、Pset(画点)等方法在图片框中画图形

示例 Private Sub Form_Load() Show Picture1.Print "在图片框内写字和画圆"  Picture1.Circle(1200, 1000), 600, RGB(0, 0, 255) Picture1.PSet(1200, 1000), RGB(255, 0, 0) End Sub

图像框(Image)控件的作用与图片框PictureBox控件相似,但它只能用于显示图形,不能作为其他控件的容器 10.4.5 Shape形状控件 VB提供了画图形的基本工具,如Shape(形状控件)、Line(线控件)。 Shape控件和Line控件只用于表面装饰,不支持任何事件。 10.4.6 Line直线控件 Line直线控件可用来在窗体、框架和图片框中绘制简单的线段。

例10.8 设计一个走动的时钟 (1)分析:本例分别以Second、Minite和Hour函数取得系统时间Time的秒、分和时数,再利用计时器控件,按一定时间间隔把时间数转换为图形指针位置和显示出来 (2)创建应用程序的用户界面 计时器(Timer1),形状控件(Shape1),三条线控件(LineS, LineM, LineH) ,四个标签(表示数字)

Timer1的Interval属性为1000(1秒) (3)设置对象属性 Timer1的Interval属性为1000(1秒) Shape1的Shape属性为3-Circle(圆形),FillStyle属性为0-Solid(实心) LineS, LineM, LineH的BorderWidth属性为1,2,4

Private len_S As Single, len_M As Single, len_H As Single (4)编写程序代码 Option Explicit Const pi = 3.14159 Private len_S As Single, len_M As Single, len_H As Single Private Sub Form_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) Call Timer1_Timer End Sub

Private Sub Timer1_Timer() '定时器的定时事件过程 Dim s As Single, m As Single, h As Single Form1.Caption = Time s = Second(Time) m = Minute(Time) h = Hour(Time) + m / 60 LineS.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) If h >= 12 Then h = h - 12 LineH.X2 = LineH.X1 + len_H * Sin(pi * h / 6) '绘制时针 LineH.Y2 = LineH.Y1 - len_H * Cos(pi * h / 6) End Sub

x2 = x1 + x = x1 + L * Cos(π/2 – k ) = x1 + L * Sink 计算指针位置的方法 s秒 K 60秒 2π K = 2πS / 60 = πs / 30 x2 = x1 + x = x1 + L * Cos(π/2 – k ) = x1 + L * Sink LineM.X2 = LineM.X1 + Len_s * Sin(pi * s / 30) x x2 x1 K (s秒) π/2 - K

10.5 菜单设计 10.5.1 下拉式菜单 应用程序通过菜单为用户提供一组命令 菜单一般分为两种:即下拉式菜单和弹出式菜单 1.下拉式菜单的结构 下拉式菜单基本结构包括:顶层菜单、菜单项和子菜单 子菜单项 子菜单提示符 访问键 快捷键 分隔线 复选标记 菜单项 顶层菜单

10.5.2 菜单编辑器 设计菜单的工具 启动菜单编辑器的方法 菜单编辑器分为上、下两部分,上半部分用来设置属性,下半部分是菜单显示区,用来显示用户输入的菜单内容。

“标题”(Caption)输入框 供输入标题,也会同时显示在菜单显示区。菜单项的访问键,用“(&字符)”格式 “名称”(Name)输入框 “索引”(Index)输入框 “快捷键”列表框 “帮助上下文ID”输入框 “协调位置”列表框 “复选”框 “有效”框 “可见”框

“显示窗口列表”框 菜单显示区。内缩符号(4个点“·…”) 编辑按钮 共有7个按钮 分隔线 10.5.3 菜单的Click事件

例10.9 编一程序,进行两个操作数的算术运算练习 例10.9 编一程序,进行两个操作数的算术运算练习 设计步骤如下: (1)创建应用程序的用户界面和设置对象属性 菜单栏向用户提供功能选择,包括运算数的位数,运算符类型和退出程序 菜单设计 各个菜单项名称

(2)编写程序代码 功能要求 Option Explicit '显式声明变量 Dim sel1 As Integer, sel2 As String Dim r1 As Long Private Sub Form_Load() sel1 = 0 '位数标记 sel2 = "" '运算标记 Randomize End Sub Private Sub Mnu11_Click() sel1 = 1 '设置位数标记 Private Sub Mnu12_Click() sel1 = 10

Private Sub Mnu13_Click() sel1 = 100 End Sub Private Sub Mnu21_Click() sel2 = "+" '设置运算标记 Private Sub Mnu22_Click() sel2 = "-" Private Sub Mnu23_Click() sel2 = "*"

Private Sub Command1_Click() '"命题"按钮单击事件 Dim a As Long, b As Long If sel1 = 0 Or sel2 = "" Then MsgBox "先选择运算数的位数和运算类型" Exit Sub End If a = sel1 + Int(9 * sel1 * Rnd) '随机生成指定位数的操作数 b = sel1 + Int(9 * sel1 * Rnd) Label1.Caption = Str(a) + sel2 + Str(b) + "=" '组成算式 Select Case sel2 '求运算结果r1 Case "+" r1 = a + b Case "-" r1 = a - b Case "*" r1 = a * b End Select Text1.Text = "" Text1.SetFocus End Sub

Private Sub Command2_Click() '"答题"按钮单击事件 Dim r2 As Long If Text1.Text = "" Then MsgBox "请输入答案" Exit Sub End If r2 = Val(Text1.Text) '读取用户的答案 If r1 = r2 Then '判断答案 Label3.Caption = "正确" Else Label3.Caption = "错误" End Sub Private Sub Mnu30_Click() ‘“退出”菜单命令 End

10.5.4 运行时改变菜单属性 1. 使菜单命令有效或无效 所有的菜单项都具有Enabled属性,当该属性为True(默认值)时,有效;若为False时,菜单项会变暗,菜单命令无效。 举例: Mnu30.Enabled = False 2. 显示菜单项的复选标记 使用菜单项的Checked属性,可以设置复选标记。 举例:Mnu31.Checked=True  3. 使菜单项不可见 举例:Mnu30.Visible=True

10.5.5 弹出式菜单 弹出式菜单又称为快捷菜单。单击鼠标右键。可以根据右击鼠标时的位置弹出不同的菜单。 10.5.5 弹出式菜单 弹出式菜单又称为快捷菜单。单击鼠标右键。可以根据右击鼠标时的位置弹出不同的菜单。 使用VB提供的菜单编辑器,把某个菜单设置成隐藏。  创建快捷菜单的步骤如下: (1)使用菜单编辑器设计菜单 (2)设置顶层菜单项为不可见,即不选中菜单编辑器里的“可见”选项或在属性窗口中设定Visible属性为False (3)编写与弹出式菜单相关联的MouseUp(释放鼠标)事件过程。格式为: [对象] PopupMenu 菜单名 [, 位置常数][, 横坐标[, 纵坐标]]]

例10.10 在例10.9的基础上,把“位数”菜单改为快捷菜单 例10.10 在例10.9的基础上,把“位数”菜单改为快捷菜单 (1)打开例10.9的应用程序,选定窗体,然后在菜单编辑器中将“位数”菜单标题的“可见”框中的“√”取消(即不选中) (2)增加以下的MouseUp事件过程代码:    Private Sub Form_MouseUp(Button As Integer, _          Shift As Integer, X As Single, Y As Single)      If Button = 2 Then ‘检查是否右击,击左键为1        PopupMenu mnu10      End If    End Sub   程序运行时,右击窗体空白处,即会弹出快捷菜单,如图10.11所示

弹出式菜单

10.6 工具栏和状态栏 分别通过Active X控件ToolBar和StatusBar来实现  10.6.1 Active X控件简介 10.6 工具栏和状态栏 分别通过Active X控件ToolBar和StatusBar来实现  10.6.1 Active X控件简介 VB中使用的控件有三类:标准控件、ActiveX控件和可插入对象(如Word文档、Excel工作表等,可当作控件使用) Active X控件是一段可重复使用的程序代码和数据。由Active X技术创建的,可以作为VB工具箱的扩充部分。 Active X控件以单独的文件存在(.ocx)

10.6.2 工具栏(ToolBar) 工具栏为用户带来比用菜单更为快速的操作 (1)添加ToolBar控件和ImageList控件 创建工具栏的大致步骤: (1)添加ToolBar控件和ImageList控件 (2)用ImageList控件保存要使用的图形 (3)创建ToolBar控件,并将ToolBar控件与ImageList控件相关联,创建Button对象 (4)编写Button的Click事件过程。 单击工具栏控件时触发Click事件,单击工具栏上按钮时触发ButtonClick事件,并返回一个Button参数(表明按下哪个按钮)

例10.11 使用工具栏 在例10.9的基础上,增加一个工具栏,使之能快速提供“加法”、“减法”和“乘法”运算类型

操作步骤 (1)打开例10.9的应用程序 (2)按照上述创建ImageList的方法,在窗体上建立ImageList1控件,并从Windows 98系统文件夹中取出图片文件Hlpcd.gif、Hlpbell.gif和Hlpglobe.gif(本例采用这三个图片作为按钮的图形),并添加到该控件中。 (3) 在窗体上建立ToolBar1控件,使之与ImageList1相关联,然后在控件中添加“加法”、“减法”和“乘法”三个按钮,并分别取用ImageList1中的三个图片。 (4)在原有程序代码的基础上,增加以下的ButtonClick事件过程代码

Private Sub Toolbar1_ButtonClick(ByVal Button As _ MSComctlLib.Button) Select Case Button.Index Case 1 sel2 = "+" Case 2 sel2 = "-" Case 3 sel2 = "*" End Select End Sub

状态栏(StatusBar)通常位于窗体的底部,主要用于显示应用程序的各种状态信息。StatusBar控件属于ActiveX控件 10.6.3 状态栏 状态栏(StatusBar)通常位于窗体的底部,主要用于显示应用程序的各种状态信息。StatusBar控件属于ActiveX控件 StatusBar控件由若干个面板(Panel)组成,每一个面板包含文本和图片。StatusBar控件最多能分成16个Panel对象

例10.12 使用状态栏 在例10.11的基础上,在窗体底部添加一个状态栏,用于显示当前时间、键盘大小写状态及运行状态。操作步骤:

(1)打开例10.9的应用程序 (2)在窗体上创建StatusBar1控件 (3)右击StatusBar1控件,从快捷菜单中选择“属性”命令,系统弹出“属性页”对话框 (4)单击“窗格”选项卡,屏幕显示如图10.16所示 (5)设置第1个窗格(索引为1),“工具提示文本”为“提示信息”,“样式”为“0-sbrText”(即显示文本和位图),其显示内容在运行时由程序代码设置 (6)设置第2个窗格(索引为2),“工具提示文本”为“大小写状态”,“样式”为“1-sbrCaps”(即显示大小写状态)

(8)要在运行中使第1个窗格显示“正在运行中”,可在Form_Load()事件过程中加入如下代码: (7)设置第3个窗格(索引为3),其“工具提示文本”为“时间”,“样式”为“5-sbrTime”(即按系统格式显示时间)。 单击“确定”按钮。 (8)要在运行中使第1个窗格显示“正在运行中”,可在Form_Load()事件过程中加入如下代码: StatusBar1.Panels.Item(1)= "正在运行中" 运行程序

10.7 键盘与鼠标事件 窗体和大多数控件都能响应键盘和鼠标事件 10.7.1 键盘事件 1. KeyPress事件 10.7 键盘与鼠标事件 窗体和大多数控件都能响应键盘和鼠标事件 10.7.1 键盘事件 有三种事件处理键盘操作,即KeyPress、KeyDown和KeyUp事件 1. KeyPress事件 2. KeyDown事件:用户按下键盘上某个键时触发此事件 Private Sub Form_KeyDown(KeyCode As Integer,Shift As Integer) Print ″按下键的代码是″;KeyCode End Sub 参数KeyCode是一个按下键的代码(不区分大小写)

3. KeyUp事件:用户按下键盘上某个键后释放时触发此事件。事件过程的语法格式类似于KeyDown事件 KeyDown和KeyUp事件除了可以识别KeyPress事件能识别的键,还可识别键盘上的大多数键,如功能键、编辑键、定位键和数字小键盘上的键

10.7.2 鼠标事件 包括:Click、DblClick、MouseMove、MouseDown和MouseUp等事件 10.7.2 鼠标事件 包括:Click、DblClick、MouseMove、MouseDown和MouseUp等事件 1.鼠标事件过程格式 后三种鼠标事件与Click、DblClick事件不同的是可以区分鼠标的左、右、中键与Shift、Ctrl、Alt键。 鼠标事件过程的语法格式为: Private Sub 对象名_鼠标事件(Button As Integer,Shift As Integer, X As Single,Y As Single) 说明:(1) Button参数表示哪个鼠标键被按下或释放。用0,1,2位分别表示鼠标的左、右、中键,用1或0表示被按下或释放 2 1 0 位 ······ 左键 右键 中键

(2) Shift参数表示当鼠标键被按下或释放时,Shift、Ctrl、Alt键的按下或释放状态。用0、1、2位表示Shift、Ctrl、Alt键 (3) X,Y表示鼠标指针的当前坐标位置 2.鼠标事件 (1)MouseDown和MouseUp事件 当按下鼠标任意键时发生MouseDown事件,放开鼠标键时发生MouseUp事件 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,Y As Single) Command1.Move X, Y End Sub

当移动鼠标时发生MouseMove事件。伴随鼠标指针在对象上移动,该事件会连续不断地产生 (3)改变鼠标指针的形状 通过MousePointer和MouseIcon属性来设置鼠标指针形状 对象的MousePointer属性用于设置鼠标指针的形状 示例: Text1.MousePointer=2

10.7.3 拖放操作 “拖放”(DragDrop)就是使用鼠标将对象从一个地方拖动到另一个地方再放下 控件拖放是指运行时将控件拖放到新的位置 它可以分解为两种操作:一个是发生在源对象的“拖”操作,另一个是发生在目标对象上的“放”操作  1.属性 (1)DragMode属性:用于设置拖放方式 1为自动方式;0 (默认)为手动方式,通过代码来设定拖放操作何时开始和结束 (2)DragIcon属性:设置拖放操作时显示的图标,默认情况下是将源对象的灰色轮廓作为拖动图标

2. 事件 (1)DragDrop事件:当一个完整的拖放动作完成时触发。它可用来控制在拖放操作完成时要进行的处理。其事件过程的语法格式为: Private Sub 对象名_DragDrop(Source As Control,X As Single, Y As Single) Source表示正在被拖动的对象,X、Y表示鼠标指针在目标对象中的坐标。  (2)DragOver事件:当源对象被拖动到目标对象上,在目标对象上就会触发DragOver事件。本事件先于DragDrop事件。其事件过程的语法格式为: Private Sub 对象名_DragOver(Source As Control, X As Single, _ Y As Single, State As Integer) State参数:0 表示进入,即源对象正进入目标对象内; 1 表示离开,即源对象正在离开目标对象; 2 表示跨越,即源对象在目标范围内移动位置

3. 方法 常用的有Drag方法。Drag方法的语法格式: 对象名.Drag [动作] “动作”取值为0时,表示取消拖动操作;取值为1时,启动拖动操作;取值为2时,结束拖动操作 例10.13 采用自动方式,实现文本框的拖动操作 在窗体上建立一个文本框Text1, 其DragMode属性值设置为1(自动方式) ,程序代码: Private Sub Form_DragDrop(Source As Control, X As Single,Y As Single) Source.Move X,Y ´移动对象位置 End Sub

例10.14 采用手动方式,实现文本框的拖动操作 在窗体上建立一个文本框Text1, 其DragMode属性值设置为0(手动方式) ,程序代码: Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Source.Move X,Y ´移动对象位置 End Sub Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Text1.Drag 1 ´启动“拖动”操作 Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, Text1.Drag 2 ´结束“拖动”操作

例10.15 把文本框中的选定文本,拖放到图片框内显示出来 例10.15 把文本框中的选定文本,拖放到图片框内显示出来 (1)在窗体上建立一个图片框(Picture1)和一个文本框(Text1),文本框的Text属性为空 (2)编写程序代码 功能要求:程序运行后,用户在文本框内输入文本和用鼠标选定(通过拖动)文本,然后按住鼠标左键后把文本框拖放到图片框内,即可把已选定的文本显示在图片框内

程序代码 Private Sub Form_Load() Text1.DragMode = 0 ´置手动方式 End Sub Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single) Picture1.CurrentX = X ´以鼠标位置为当前显示起始位置 Picture1.CurrentY = Y Picture1.Print Text1.SelText ´在图片框中显示文本框中的选定内容 Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then ´Button为1时,表示按下左键 Text1.DragMode = 1 ´置自动方式 End If End Sub

10.8 对话框 对话框(DialogBox)是应用程序与用户进行交互的主要途径。三种对话框: (1)预定义对话框 10.8 对话框 对话框(DialogBox)是应用程序与用户进行交互的主要途径。三种对话框: (1)预定义对话框 使用函数InputBox和MsgBox来实现 (2)通用对话框 (3)用户自定义对话框

10.8.1 通用对话框 通用对话框是一种ActiveX控件,利用它能够很容易地创建下列六种标准对话框:打开(Open),另存为(Save As),颜色(Color),字体(Font),打印机(Printer)和帮助(Help)对话框 1.添加通用对话框控件 在使用之前,应选择“工程”菜单中的“部件”命令先将其添加到工具箱中 当程序运行时,通用对话框是不可见的 通用对话框不仅本身具有一组属性,而且由它产生的各种标准对话框也拥有许多特定属性。 属性设置可以在属性窗口或程序代码中进行,也可以通过“属性页”对话框来设置 2.属性页

(2)Action属性:该属性直接决定打开哪种对话框 3.通用对话框的基本属性和方法 (1)Name属性 (2)Action属性:该属性直接决定打开哪种对话框 对话框类型 Action属性值 方法 无对话框 0 打开”对话框 1  ShowOpen “另存为”对话框 2 ShowSave “颜色”对话框 3 ShowColor “字体”对话框 4 ShowFont “打印”对话框 5 ShowPrinter “帮助”对话框 6 ShowHelp 例如,利用通用对话框CommonDialog1产生一个“打开”对话框,可以执行下列语句:  CommonDialog1.Action=1 或 CommonDialog1.ShowOpen

4. “打开”对话框 (3)DialogTitle属性:该属性用于设置对话框的标题 (4)ConcelError属性:该属性表示用户在使用对话框进行对话时,单击“取消”按钮是否产生错误信息 (5)通用对话框的方法 4. “打开”对话框 在程序中将通用对话框的Action属性设置为1,或用ShowOpen方法打开,则弹出“打开文件”对话框 “打开”对话框的属性: FileName、FileTitle、Filter、FilterIndex、IniDir

例10.16 建立一个“打开文件”的对话框 在窗体上添加一个通用对话框和一个“打开”命令按钮,当单击“打开”按钮时,就会弹出一个“打开文件”的对话框

(1) 把CommonDialog控件添加到工具箱中。然后在窗体上添加CommonDialog控件,其默认名称为CommonDialog1 (2)在窗体上添加一个命令按钮Command1,其Caption属性为“打开” (3)“打开”命令按钮Command1的Click事件过程代码: Private Sub Command1_Click() CommonDialog1.DialogTitle = "打开文件“ ‘设置文件过滤器 CommonDialog1.Filter = "全部文件|*.*|文本文件|*.txt" CommonDialog1.InitDir = "C:\my documents " ‘设置默认文件夹  CommonDialog1.ShowOpen ‘显示“打开”对话框 End Sub  其中,设置文件过滤器(Filter)属性的参数格式如下: 描述符1 | 过滤符1 | 描述符2 | 过滤符2 程序运行后,单击“打开”按钮即弹出如图所示的对话框 从控件的FileName属性中获取选定的路径及文件名

6. “颜色”对话框 7. “字体”对话框 例10.17 “字体”对话框应用示例 5. “另存为”对话框 (1)建立用户界面及设置对象属性 例10.17 “字体”对话框应用示例 在文本框中输入一段文字,单击命令按钮后,通过“字体”对话框来设置文本框中显示的字体、大小、字形、样式等 (1)建立用户界面及设置对象属性

8. “打印”对话框 9. “帮助”对话框 (2)编写程序代码 “设置字体”命令按钮的单击事件过程代码如下: Private Sub Command1_Click() CommonDialog1.Flags = CdlCFScreenFonts CommonDialog1.ShowFont ‘打开“字体”对话框 Text1.FontName = CommonDialog1.FontName '设置字体名称 Text1.FontSize = CommonDialog1.FontSize ‘设置字体大小 Text1.FontBold = CommonDialog1.FontBold '粗体 Text1.FontItalic = CommonDialog1.FontItalic '斜体 End Sub 8. “打印”对话框 9. “帮助”对话框

10.8.2 自定义对话框 创建自定义对话框就是建立一个窗体,在窗体上根据需要放置控件,通过设置控件属性值来定义窗体的外观 因为对话框没有控制菜单框(标题栏左侧)和最大化、最小化按钮,不能改变其大小,所以应设置以下对话框的属性,见表10.3 用窗体自定义对话框,一般步骤: (1)向工程添加窗体 (2)在窗体上创建其他控件对象,定义对话框的外观 (3)设置窗体和控体对象的属性 (4)在代码窗口中创建事件过

10.9 文件系统控件 VB工具箱中提供了三种文件系统控件:驱动器列表框(DriveListBox)、文件夹列表框(DirListBox)和文件列表框(FileListBox)。 这三种控件可以单独使用,也可以组合使用。图10.18为三种控件组合使用的情况

1. 用途 (1)驱动器列表框:选择一个驱动器 (2)文件夹列表框:显示一个磁盘的文件夹结构。 (3)文件列表框:显示当前文件夹下的所有文件名。  2. 常用属性 (1)DriveListBox控件的Drive属性:指定出现在列表框顶端的驱动器(即当前驱动器) (2)Path属性:可用于DirListBox控件和FileListBox控件,只能在程序代码中设置。格式为 对象名.Path = 路径

(3)FileListBox控件的Pattern属性:在程序运行时设置FileListBox中要显示的文件类型。例如: File1.Pattern=”*.exe” (4)ListIndex属性:设置或返回当前控件上所选择的项目的索引值。 当FileListBox没有文件显示时ListIndex属性值为1。  (5)ListCount属性:本属性可以用于这三种文件系统控件。返回控件内所列项目的总数

3. 常用事件 当这三种控件组合使用时,在改变驱动器列表框中的驱动器时,文件夹列表框中显示的文件夹也应同步改变。同样,文件夹列表框中文件夹改变,文件列表框也应同步改变 实现同步的Change事件过程如下: Private Sub Drivel_Change() ‘DriveListBox控件的Change事件 Dir1.Path=Drive1.Drive ‘DirListBox控件名为Dir1 End Sub Private Sub Dir1.Change() ‘DirListBox控件的Change事件 File1.Path=Dir1.Path ‘FileListBox控件名为File1