VisualBasic程序设计(第二版)丁爱萍第9章用户定义与枚举类型.ppt_第1页
VisualBasic程序设计(第二版)丁爱萍第9章用户定义与枚举类型.ppt_第2页
VisualBasic程序设计(第二版)丁爱萍第9章用户定义与枚举类型.ppt_第3页
VisualBasic程序设计(第二版)丁爱萍第9章用户定义与枚举类型.ppt_第4页
VisualBasic程序设计(第二版)丁爱萍第9章用户定义与枚举类型.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章 用户定义与枚举类型,9.1 用户定义类型 9.2 枚举类型 9.3 滚动条控件 习题九,9.1 用户定义类型,9.1.1 用户定义数据类型的概念 在VB中,可以用系统提供的标准类型定义变量,它们都是计算机处理的基本数据项。但在实际工作中,常见的并不是孤立的数据项,而是由两个或两个以上的基本项组成的组合项。,表9-1 学生成绩表,9.1.2 创建用户定义类型 记录与数组一样由多个数据项目组成,但是,记录与数组最大的不同就是数组中的每一元素必须具有相同的数据类型,而记录中的每一个数据项目却可以具有不同的数据类型。 在VB中提供了定义记录结构的语句,称这种语句为用户定义数据类型(user defined data type)。,用户可以用Type语句来定义自己的数据类型,其格式为 Public | Private Type 用户类型名 字段名1 As 类型名1 字段名2 As 类型名2 字段名n As 类型名n End Type,9.1.3 建立和使用用户定义类型变量 1. 建立用户定义类型变量 用户数据类型定义后,可以用Dim、Redim、Static建立一个具有这种数据类型的变量。例如定义一个具有studentrec类型的变量stu: Dim stu AS studentrec 用户定义数据类型也可以作为数组元素的数据类型。例如,定义一个拥有20个记录元素的数组student: Dim student(1 To 20) As studentrec,2. 使用用户定义类型变量 如果要存取用户数据类型变量中的某个字段的数据,其格式如下: 用户数据类型变量名.字段名,【例9-1】 把数据值分别赋给stu变量中的各个字段。 设计步骤如下: (1) 建立应用程序用户界面并设置对象属性,如图9.1所示。 (2) 在窗体模块的通用段创建用户定义类型:,Private Type studentrec stunum As String * 7 学号元素为7个字符的定长字符串 names As String * 8 姓名元素为8个字符的定长字符串 credit As Integer 学分元素为整型 avg As Single 平均成绩为单精度型 End Type,编写命令按钮的Click事件代码为 Private Sub Command1_Click() Dim stu As studentrec 定义一个具有studentrec类型的变量stu stu.stunum = “2000108“ s = “欧阳美丽“,图9.1 程序运行结果,stu.credit = 70 stu.avg = 88.5 Text1.Text = stu.stunum Text2.Text = s Text3.Text = stu.credit Text4.Text = stu.avg End Sub 程序运行结果如图9.1所示。,9.1.4 用户定义类型数组 如果一个数组中元素的数据类型是用户定义类型,则称其为用户定义类型数组或记录数组(Array of records)。存取记录数组元素中某个字段数据的语法为 记录数组元素.字段名,【例9-2】 假设某班有40位学生,每位学生一个记录,定义一个包含40个元素的用户定义数组,并给第10位学生赋值。,首先在窗体模块的通用段创建用户定义类型: Private Type studentrec stunum As String * 7 names As String * 8 credit As Integer avg As Single End Type,编写命令按钮的Click事件代码为 Private Sub Command1_Click() Dim student(1 To 40) As studentrec 定义记录数组 student(10).stunum = “2000010“ student(10).names = “孙小京“ student(10).credit = 55 student(10).avg = 78.5 Text1.Text = student(10).stunum,Text2.Text = student(10).names Text3.Text = student(10).credit Text4.Text = student(10).avg End Sub 程序运行结果如图9.2所示。,图9.2 用户定义类型数组示例,9.1.5 程序举例 【例9-3】 输入学生的姓名、学号、语文分数、英语分数、数学分数,计算每名学生的平均成绩,并显示各科成绩。 设计方法如下: (1) 选择新建工程,进入窗体设计器。,图9.3 建立用户界面和设计对象,(2) 编写代码。首先在窗体的通用段创建用户定义类型并声明变量: Private Type studentrec na As String * 6 姓名变量定义为6个字符长度 no As String * 5 学号变量定义为5个字符长度 ch As Single 语文变量定义为单精度数 en As Single 英语变量定义为单精度数 ma As Single 数学变量定义为单精度数 ag As Single 平均成绩定义为单精度数,End Type Dim stu() As studentrec 定义记录数组 窗体的Load事件代码为 Private Sub Form_Load() ReDim stu(0) End Sub “输入”按钮Command1的Click事件代码为 Private Sub Command1_Click() n = UBound(stu) ReDim stu(n + 1),With stu(n + 1) .no = Text1(0).Text .na = Text1(1).Text .ch = Val(Text1(2).Text) .en = Val(Text1(3).Text) .ma = Val(Text1(4).Text) .ag = Int(.ch + .en + .ma) / 3) 求个人平均成绩 cc = Format(.ch, “) & Format(.en, “) & _,Format(.ma, “) & Format(Str(.ag), “) List1.AddItem Format(RTrim(.no), “) & Format(RTrim(.na), “) & cc End With Text1(0).SetFocus End Sub “删除”按钮Command2的Click事件代码为 Private Sub Command2_Click() If List1.ListIndex = -1 Then,MsgBox “请选定欲删除的项!“ Exit Sub End If n = List1.ListIndex + 1 For i = n To UBound(stu) - 1 stu(i) = stu(i + 1) Next List1.RemoveItem n - 1 移除项目 Text1(0).Text = stu(1).no Text1(1).Text = stu(1).na,Text1(2).Text = stu(1).ch Text1(3).Text = stu(1).en Text1(4).Text = stu(1).ma End Sub “结束”按钮Command3的Click事件代码为 Private Sub Command3_Click() Unload Me End Sub 列表框List1的Click事件代码为 Private Sub List1_Click() n = List1.ListIndex + 1,Text1(0).Text = stu(n).no Text1(1).Text = stu(n).na Text1(2).Text = stu(n).ch Text1(3).Text = stu(n).en Text1(4).Text = stu(n).ma End Sub 另外编写文本框组的事件代码,使之方便输入 Private Sub Text1_GotFocus(Index As Integer) Text1(Index).SelStart = 0,Text1(Index).SelLength = Len(Text1(Index).Text) End Sub Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer) If KeyAscii = 13 Then i = IIf(Index = 4, 0, Index + 1) Text1(i).SetFocus End If End Sub 程序运行结果如图9.4所示。,图9.4 输入学生情况,计算平均分并显示各科成绩,9.2 枚 举 类 型,9.2.1 枚举类型的概念 前面已经介绍了VB的基本数据类型,包括整型数、单精度数、浮点数等。在程序设计中,有些数据无法直接用整型或实型数来表示,必须经过某种转换,把本来不是简单地用整数来表示的问题用几个整数去描述,从而降低了程序的可读性。,9.2.2 定义枚举类型 枚举类型放在窗体模块、标准模块或共用模块中的声明部分,通过Enum语句来定义。定义枚举类型的语法为 Public | Private Enum 类型名称 成员名 =常数表达式 成员名 =常数表达式 End Enum,图9.5 建立用户界面和设置对象属性,【例9-4】 利用枚举类型编写程序,要求输入一个数字表示星期,判断输出是否为工作日。 设计步骤如下: (1) 建立应用程序用户界面并设置对象属性,如图9.5所示。 (2) 编写事件代码。用“文件”菜单中的“新建工程”命令建立一个新工程,然后执行“工程”菜单中的“添加模块”命令,在代码窗口中输入下面的枚举类型定义:,Public Enum Workdays Sunday 值为0 Monday 值为1 Tuesday 值为2 Wednesday 值为3 Thursday 值为4 Friday 值为5 Saturday 值为6 Invalid = -1 End Enum,编写“判断”命令按钮Command1的Click事件过程为 Private Sub Command1_Click() Dim Myday As Workdays 定义Myday为枚举类型Workdays Text1.SetFocus Myday = Val(Text1.Text) If Myday = 0 Or Myday = 6 Then 星期日或星期六 MsgBox “休息吧!“, 0, “非工作日!“,Else MsgBox “请咬紧牙关,努力工作!“, 0, “工作日!“ End If End Sub,图9.6 测试工作日,图9.7 VB自动显示Workdays枚举的常数,9.3 滚 动 条 控 件,滚动条(ScrollBar)通常用来附在窗体上协助观察数据或确定位置,也可用来作为数据输入的工具。无论何时,只要应用程序或控件所包含的信息超过当前窗口(或者在ScrollBars属性被设置成True时的文本框和MDI窗体)所能显示的信息,滚动条就会自动出现。,滚动条有水平和垂直两种,可以通过水平滚动条(HScrollBars)和垂直滚动条(VScrollBars)工具来建立,如图9.8所示。,图9.8 水平滚动条和垂直滚动条,9.3.1 滚动条的属性 1. Min、Max属性 返回或设置滚动条所能代表的最小、最大值,其取值范围为-32 76832 767。Min属性的默认值为0,Max属性的默认值为32 767。 2. Value属性 返回或设置滚动条的当前位置,其返回值始终介于Max和Min属性值之间,包括这两个值。,3. LargeChange属性 返回和设置当用户单击滚动框和滚动箭头之间的区域时,滚动条控件Value属性值的改变量。 4. SmallChange属性 返回和设置当用户单击滚动箭头时,滚动条控件Value属性值的改变量。,9.3.2 滚动条的事件 滚动条可以识别多种事件,但最重要的是Change和Scroll事件。 在程序运行过程中,每当滚动条的Value属性发生变化时,就发生Change事件。,9.3.3 滚动条的应用 【例9-5】 水平滚动条应用示例。 建立一个水平滚动条,其Max属性为100,Min属性为0,SmallChange属性为2,LargeChange属性为10。另有一个文本框,它显示滑块当前位置所代表的值,如图9.9所示。,图9.9 水平滚动条应用示例,【例9-6】 利用滚动条控制色彩,还可以返回色彩的RGB值。 (1) 建立应用程序用户界面并设置对象属性。选择“新建”工程,进入窗体设计器。首先增加一个框架Frame1,激活Frame1后,在其中增加一个图片框Picture1,一个文本框Text1,一个水平滚动条控件数组HScroll1(0)HScroll1(2)和一个标签控件数组Label1(0)Label1(2),并设置其属性如表9-2所示。,表9-2 属性设置,图9.10 建立用户界面,(2) 编写事件代码。 水平滚动条HScroll1的事件代码为 Private Sub HScroll1_Change(Index As Integer) Picture1.BackColor = RGB(HScroll1(0), HScroll1(1), HScroll1(2) r = LTrim(Str(HScroll1(0) g = LTrim(Str(HScroll1(1) b = LTrim(Str(HScroll1(2) Text1.Text = “Color=RGB(“ & r & “,“ & g & “,“ & b & “)“ End Sub,文本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论