VisualBasic程序设计(第二版下)ppt.ppt_第1页
VisualBasic程序设计(第二版下)ppt.ppt_第2页
VisualBasic程序设计(第二版下)ppt.ppt_第3页
VisualBasic程序设计(第二版下)ppt.ppt_第4页
VisualBasic程序设计(第二版下)ppt.ppt_第5页
已阅读5页,还剩661页未读 继续免费阅读

下载本文档

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

文档简介

VisualBasic程序设计 第二版下 高等院校计算机应用技术规划教材 谭浩强主编 第8章对话框 8 1消息框8 2输入对话框8 3自定义对话框8 4通用对话框习题 VisualBasic提供MsgBox函数 在执行此函数时 屏幕上会出现一个消息框 例如 在程序中有如下语句 intResult MsgBox 数据正确吗 65 MessageBoxExample 程序执行这条语句的结果如图8 1所示 8 1消息框 图8 1 从图8 1可以看到 消息框由标题栏信息 如 MessageBoxExample 消息框中的提示信息 如 数据正确吗 一个图标以及一个或多个命令按钮构成 图8 1所显示的消息框有两个命令按钮 用户可以单击 确定 或 取消 按钮 作为函数 MsgBox可以有返回值 函数的返回值与用户选择哪个命令按钮有关 在上面的语句中 将函数的返回值赋给变量intResult 可以根据返回值来判断用户选择了消息框上的哪个按钮 例8 1 设计一个程序 在窗体上放置一个标签 一个文本框和三个命令按钮 如图8 2所示 程序开始运行后 用户在文本框中输入一个密码 用这个密码与程序中事先给出的密码进行比较 如果两个密码不相同 系统就会显示一个消息框 提示用户输入的密码不正确 如果两个密码相同 也显示一个消息框 告诉用户输入的密码正确 如果用户选择了消息框上的 取消 按钮 则结束程序运行 单击 结束 按钮 也能结束程序的运行 属性设置如表8 1 见书153页 所示 图8 2 程序代码如下 PrivateSubcmdClear Click txtPW Text txtPW SetFocus EndSub程序开始运行 用户若单击 输入密码 命令按钮 则先使文本框清空 并将光标设于文本框左端 然后用户从键盘向文本框输入密码 再单击 核对密码 命令按钮 执行以下过程 PrivateSubcmdCheck Click pw MyProgram 这是预设的密码 Title 密码核对框 Info1 你输入了正确的密码 Info2 你输入的密码不正确 IfText1 Text pw Then answer MsgBox Info1 65 Title 1 64 0 65 Else answer MsgBox Info2 277 Title 16 5 256 277EndIf Ifanswer 2ThenEnd 选择了 取消 按钮Ifanswer 1Then 选择了 确定 按钮 command1 Visible False command2 Visible False Text1 Visible False Label1 Caption 继续运行程序 EndIf EndSub程序中事先设置了一个字符串 MyProgram 作为密码 假如用户输入的密码 即文本框txtPW的Text属性值 等于 MyProgram 即pw 则执行 answer MsgBox Info1 65 Title 屏幕上显示的消息框如图8 3所示 图8 3 MsgBox函数的第1个参数是消息框中的提示文字 现在 函数中的第1个参数Info1 的值是 你输入了正确的密码 可以看到这段文字出现在消息框的中间位置上 函数的第3个参数用来指定消息框的标题 现在 Title 值是 密码核对框 它出现在消息框的顶部 第2个参数 现为65 决定消息框内的按钮和图标的种类 数目 该参数是3个数值相加之和 这3个数值分别代表按钮的类型 显示图标的种类和哪一个按钮是默认的 活动按钮 表8 2 8 4 见书154页 分别列出这3个数值的含义 表8 2中列出消息框中包括哪些按钮 当值为0时 消息框中只包含一个 确定 按钮 当值为1时 消息框中有 确定 和 取消 两个按钮 如图8 3所示 其余类推 表8 3列出消息框中左上部显示的小图标的种类 当值为16时 显示出如图8 4 a 所示的图标 当值为64时 显示出如图8 4 d 所示的图标 图8 3的消息框中就显示了这种图标 表8 4列出哪一个按钮是默认的 活动按钮 图8 4 当值为0时 第1个按钮为默认的活动按钮 即运行开始时第1个按钮是激活的 或称为 焦点在第1个按钮处 图8 3所示就属于此情况 可以看到 确定 按钮四周有一虚线框 表示它是 活动的 可以用按Enter键来代替单击活动按钮的操作 MsgBox函数中第2个参数是从上面3个表中各取一个数相加而得 只能从每一个表中取一数 例如 65 1 64 0 即第一个表中的值为1 第2个表中的值为64 第3个表中的值为0 因此 根据表8 2 8 4中的规定 消息框的特性如下 1 有 确定 和 取消 两个按钮 2 图标如图8 4 d 所示 3 第1个按钮为默认的活动按钮 如果在程序运行时用户输入的密码不对 根据程序中的If语句 执行事件过程中第2个MsgBox函数 如下所示 answer MsgBox Info2 277 Title 在消息框中显示 你输入的密码不正确 消息框的标题为 密码核对框 第2个参数为277 5 16 256 从表8 1到表8 3中可以查出 消息框中有 重试 和 取消 两个按钮 消息框左上部有一个如图8 4 a 所示的图标 第2个按钮为活动按钮 如图8 5所示 图8 5 事件过程cmdCheck Click中 将MsgBox函数的值赋给变量answer MsgBox函数的返回值视用户单击哪个按钮而定 见表8 5 见书156页 当用户单击 确定 按钮时 MsgBox函数值为1 若单击 取消 按钮 则MsgBox函数值是2 程序中处理如下 若answer 2 表示单击 取消 按钮 则使程序结束 否则不结束 程序运行时 在单击 输入密码 按钮并输入密码后 屏幕上会出现如图8 3或图8 5所示的消息框 让用户选择按钮 无论用户单击哪一个按钮 消息框都自动消失 用户可根据函数的返回值决定后续操作 在本例中 如果用户输入密码正确 然后再单击 确定 按钮 则answer的值为1 程序使窗体中3个控件成为 不可见 并在标签中显示出 继续运行程序 的信息 如图8 6所示 本程序用MsgBox函数产生消息框 在VisualBasic中还允许将MsgBox函数写成语句形式 例如 MsgBox 数据正确吗 图8 6 这就是MsgBox语句形式 执行此MsgBox语句也产生一个消息框 在框中显示文字 数据正确吗 但MsgBox语句与MsgBox函数不同 MsgBox语句没有返回值 常用于比较简单的信息显示 消息框有一特点 它始终等待用户的选择 用户必须单击消息框中的一个按钮 或按Enter键 程序才能继续执行下去 读者可能在Windows中看到过这种对话窗口 也就是说 用户不能无视它或跳过它去执行其他操作 从前面几章的叙述中已经知道 用户可以向文本框输入信息 除此之外 VisualBasic还提供了一种 输入对话框 用户可以在其中输入信息 灵活地利用输入对话框 可以使用户界面直观 形象 使用方便 可以用InputBox函数产生输入对话框 例如 filename InputBox 请输入文件名 对话输入框 File1 将显示出如图8 7所示的输入对话框 8 2输入对话框 图8 7 InputBox函数的一般格式如下 InputBox 提示 标题 默认值 xpos ypos 对照前面的例句 可很容易地理解InputBox函数中各个参数的作用 需要补充说明的是 xpos指定了输入框的左边与屏幕左边的水平距离 ypos指定了输入框的上边与屏幕上边的距离 也就是说 设计时可以指定输入框在屏幕上的位置 例8 2 设计一个程序 求一个职工的工资总和 要求从输入对话框输入各种收入 然后在屏幕上显示出来 用户界面设计由8个标签和1个命令按钮组成 要求在运行开始时出现一个输入对话框 以便用户从中输入数据 如图8 8所示 属性设置如表8 6 见书158页 所示 图8 8 下面编写单击 运行 命令按钮时的事件过程 DimtempAsString Dimpayroll 5 AsString PrivateSubcmdInput Click Dimpayroll 5 AsString DimsumAsSingle Fori 0To6 清空接收输入数据的标签 Label2 i Caption Nexti ch Chr 13 Chr 10 title 工资输入框 Fori 0To5 massage ch ch ch ch ch Label3 i Caption flag 1 title Label3 i Caption 输入框 DoWhileflag 1 输入数据 temp InputBox massage title 100 4500 Iftemp Then 输入不为 空 flag 0 info MsgBox 数据正确吗 36 数据核对框 Ifinfo 7Then 选择No 数据不正确 info1 MsgBox 你想重新输入这个数据吗 36 Ifinfo1 6Thenflag 1 选择Yes 重新输入 EndIf Else ExitFor 输入 空串 时结束EndIf payroll i temp Loop Label2 i Caption payroll i 元 将正确数据显示在标签栏 sum sum Val payroll i 累计 Nexti Label2 6 Caption Str sum 元 EndSub 下面执行第二个For循环 当循环变量i 0时 massage 的主要内容是Label3 0 Caption 即 基本工资 前面5个ch 的作用是空5行 目的是将上面这段文字向下移5行 以靠近文本区 读者可以试一下取消这5个ch 的效果 这在图8 9中可以看出来 下面的 title Label3 i Caption 输入框 的作用是使title 的内容变为 基本工资输入框 它将作为图8 9的消息框的标题 输入数据和数据校验在DoWhile循环中进行 具体过程如下所述 图8 9 1 InputBox 函数产生一个输入对话框 框内显示massage 即 基本工资 对话框的标题为title 即 基本工资输入框 第3 4个参数100 4500用来指定该输入对话框在屏幕上的位置 单位为twip 如果不指定这两个值 系统给出的隐含位置在屏幕中心线向下约1 3处 用户在输入对话框中的文本区输入基本工资 如450 然后单击 确定 按钮 如图8 9所示 此时输入的内容450就送到temp 中 请注意 文本区中的数据一律作为字符串处理 2 判断文本区是否有数据输入 不是空串 如果有数据输入 则Flag变量的值变为0 若用户不输入任何内容就单击 确定 按钮 则读入空串 表示此职工已无其他收入 此时结束循环 输出该职工的总收入 3 通过消息框提示用户检查数据是否正确 MsgBox函数产生一个消息框 参数36 4 32 0 故消息框有两个按钮 是 和 否 如图8 10所示 询问用户 数据正确吗 4 如果用户单击 否 按钮 则MsgBox的函数值为7 表明用户发现输入数据有错误 图8 10 5 继续通过消息框询问用户是否重新输入这个数据 提示消息框如图8 11所示 该消息框询问用户 你想重新输入这个数据吗 如用户单击 是 按钮 表示希望重新输入数据 则MsgBox函数值 即Info1的值 为6 IF语句判断Info1 6后 使flag 1 即再次执行DoWhile循环 重新输入数据 如果用户单击 否 按钮 则flag仍是0 不再执行DoWhile循环 6 把输入的数据450保存到payroll 0 即保留第一次输入的值 7 Loop后面的赋值语句将输入的数据payroll 0 值显示在最上面的标签栏中 图8 11 8 将payroll 0 的值通过Val函数转换成数值累加到sum中 以上操作完成了对一个数据项的输入 在For循环中执行6次DoWhile循环体 分别使payroll 0 payroll 6 获得值 并显示在6个标签中 在For Next循环结束后 将6项工资的总和显示在最下面的标签中 sum是数值型的 故先用str 函数将它转换成字符串 然后 后面加上 元 如图8 12所示 图8 12 VisualBasic有3类对话框 1 预定义对话框 或称预制对话框 前面介绍的消息框和输入对话框就属于这类对话框 2 自定义对话框 或称定制对话框 由用户根据需要自己设计 定义 3 通用对话框 它是VisualBasic提供的一种控件 利用这种控件可以设计出比较复杂的对话框 如 打开 对话框 保存 对话框 颜色 对话框等 如前所述 自定义对话框是根据实际需要设计的对话框 在一个窗体内安排若干个控件 例如文本框 列表框 组合框 命令按钮等 构成用户与系统对话的界面 通过下面的例子 可以大致了解什么是自定义对话框以及如何设计自定义对话框 例8 3 某大学有若干个系 分属两个学院 下面设计一个对话框 当用户选择某一个学院并输入系名后 应显示出该系的简介 窗体设计如图8 13所示 8 3自定义对话框 图8 13 属性设置如表8 7 见书163页 所示 在这个程序中有5个事件过程和两个通用过程 通用过程AddDept1 和AddDept2 的功能是 分别将理工学院和文学院所属系的名称添加到列表框控件lstDept中 也就是说 当对应于 理工学院 的选项按钮被选中时 调用AddDept1 使列表框中显示出理工学院的各系名称 当对应于 文学院 的选项按钮被选中时 调用AddDept2 使列表框中显示出文学院的各系名称 两个通用过程的程序如下 PublicSubAddDept1 lstDept Clear lstDept AddItem 计算机系 lstDept AddItem 电力系 lstDept AddItem 土木建筑系 lstDept AddItem 水利系 EndSub PublicSubAddDept2 lstDept Clear lstDept AddItem 政治系 lstDept AddItem 法律系 lstDept AddItem 经济系 lstDept AddItem 水利系 EndSub5个事件过程包括窗体装载Form Load 单击退出按钮cmdExit Click 单击列表框lstDept Click 单击选项按钮Option1 Click Option2 Click 和单击显示按钮 现分述各过程的功能 cmdExit Click 除外 Form Load 程序如下 PrivateSubForm Load Label2 Caption Date Option1 Value True AddDept1 EndSub在程序开始运行时 即将当前日期放到标签2中 Date 函数的值为当前日期 以yyyy mm dd形式表示 此时出现的对话框如图8 14所示 可以看到 对话框右上角处的 最大化 和 最小化 按钮没有了 与图8 13对比 图8 14 当单击 选项 按钮 选择不同的学院时 分别触发Option1 Click 或Option2 Click 在列表框中列出所选学院的系名列表 程序如下所示 其中的AddDept1和AddDept2是通用过程 PrivateSubOption1 Click AddDept1 Text1 Text EndSub PrivateSubOption2 Click AddDept2 Text1 Text EndSub 选定学院后 在列表框中单击系名 被选中系的名称保存在列表框lstDept的Text属性中 当单击 查询 按钮时 执行cmdDisplay Click事件过程 程序中根据lstDept的Text属性值 将所选中系的简况显示在文本框中 PrivateSubcmdDisplay Click dname lstDept Text IfOption1 Value 1Then SelectCasedname Case 计算机系 Text1 Text 计算机系简况 Case 电力系 Text1 Text 电力系简况 Case 土木建筑系 Text1 Text 土木建筑系简况 Case 水利系 Text1 Text 水利系简况 EndSelect Else IfOption2 Value 1Then SelectCasedname Case 政治系 Text1 Text 政治系简况 Case 法律系 Text1 Text 法律系简况 Case 经济系 Text1 Text 经济系简况 EndSelect EndIf EndIf EndSub 上节介绍了用户自己定义对话框 在使用Windows应用程序时 用户往往可以看到 打开 Open 保存 SaveAs 打印 Print 颜色 Color 字体 Font 等对话框 用户使用起来很方便 如果在设计应用程序时 都要由程序设计人员逐个按自定义对话框的方法来设计这些对话框 常会增加许多工作量 VisualBasic提供了通用对话框 CommonDialogBox 控件 使得设计这些常用的对话框十分方便 8 4通用对话框 在默认情况下 通用对话框控件不在工具箱中 在使用通用对话框之前 应先将其添加到工具箱中 具体方法如下所述 1 在 工程 菜单中选 部件 命令 或在工具箱上单击鼠标右键 弹出如图8 15所示的 部件 对话框 2 在 部件 对话框的 控件 选项卡中 从列出的控件中找到MicrosoftCommonDialogControl6 0 使前面的方框中有 再单击 应用 按钮 通用对话框控件的图标出现在工具箱中 图8 15 通用对话框可以提供6种不同形式的对话框 在显示出通用对话框前 应通过设置Action属性或调用Show方法来选择对话框的类型 见表8 8 见书167页 通用对话框的默认名称为CommonDialog1 CommonDialog2 对话框的类型不是在设计阶段设置 而是在程序运行时设置 例8 4 设计一个 打开 对话框 并将选中文件的文件名及内容显示在窗体上的相应控件中 窗体外观如图8 16所示 在窗体上添加通用对话框及设置属性的步骤如下所述 1 单击工具箱中的通用对话框的图标 CommonDialog 8 4 1 打开 Open 对话框 图8 16 2 用拖动鼠标的方法在窗体中某个位置画出通用对话框的图标 该控件的默认Name属性为CommonDialog1 请注意 在窗体上显示出的通用对话框控件图标的大小和外观是固定的 不能改变 在程序运行时该图标消失 因此将通用对话框的图标放在窗体上什么位置是无所谓的 3 单击窗体中的通用对话框图标 使之 激活 再单击鼠标右键 选中 属性 屏幕上弹出 属性页 窗口 如图8 17所示 图8 17 4 从图中可以看出 属性页 窗口中有5个选项卡 分别是 打开 另存为 颜色 字体 打印 和 帮助 供用户选择 选择 打开 另存为 属性页 显示相关的9项属性 属性页 中的这些属性既可以在设计时设定 也可以在运行时指定 有些属性还可以作为控件的返回值取用 对话框标题 用来给出对话框的标题内容 默认值为 打开 文件名称 用来给出对话框的 文件名 文本框中文件名的初始值 用户在对话框中的文件列表框中选中的文件名也放在此属性中 即用它能设置和返回选中的文件名 初始化路径 用来指定初始的目录 若不设置该属性 系统默认显示当前目录 用户选定的目录也放在此属性中 即用它能设置和返回选中的目录名 过滤器 用来指定在对话框的文件列表框中列出的文件类型 在打开和保存文件时 由于文件的数目很多 列表框无法显示出全部文件 所以往往需要根据实际情况进行 过滤 即 过滤 出用户所需要的类型的文件 如用户只需要打开一个后缀为 frm 的文件 则在 打开 对话框中只显示出后缀为 frm的文件名 指定过滤器属性的格式如下 描述符1 过滤符1 描述符2 过滤符2 标志 用来设置对话框的一些选项 常用的参数见表8 9 见书169页 默认扩展名 用来显示在对话框的默认扩展名 如果用户输入的文件名不带扩展名 则自动将此默认扩展名作为其扩展名 文件最大长度 用来指定FileName的最大长度 范围为1 2048 默认值为256 过滤器索引 用来指定在对话框的 文件类型 列表中显示的默认的过滤符 在指定过滤器属性时 如有多个文件类型 则按序排为1 2 3 若FilterIndex 2 打开对话框时 文件类型 列表中自动显示的是第二项过滤符 即过滤符2 取消引发错误 这是一个复选钮 如果用户选中它 即属性值为True 则当单击 打开文件 对话框内 取消 按钮以关闭一个对话框时 系统将显示一个报错信息的消息框 如未选中 False 则不显示报错信息 默认值为False 在以上9个选项中 有些选项由系统给出默认值 有些需要用户根据需要设定 可做如下设定 对话框标题 打开 初始化路径 D Tan Program 过滤器 AllFile frm文件 frm vbp文件 vbp 设置属性后的窗体如图8 18所示 图8 18 以下是单击窗体中 打开 按钮的事件过程 PrivateSubcmdOpen Click CommonDialog1 Action 1 lblFile Caption CommonDialog1 FileName 读取文件 fileStr OpenCommonDialog1 FileNameForInputAs 1 DoWhileNotEOF 1 LineInput 1 fileStr1 fileStr fileStr fileStr1Loop txtFile Text fileStr Close 1 EndSub程序运行开始后 单击窗体上的 打开 命令按钮 即执行上面的事件过程 第一行CommonDialog1 Action 1的作用是显示出一个题目所要求的 打开 对话框 见图8 19 图8 19 fileStr是一个字符串变量 用于保存从文件中读取的内容 用户在 打开 对话框中所选择的文件名就是CommonDialog1 FileName属性的值 执行打开该文件的操作后 从该文件中逐个读入记录 并保存在字符串fileStr中 直到文件结束标志为止 最后 将文件的内容显示在文本框中 即txtFile Text fileStr 程序运行结果如图8 20所示 如果想按例8 4的要求在程序运行时设置 打开 的属性 可以编写出以下过程事件 图8 20 PrivateSubcmdOpen Click CommonDialog1 DialogTitle 打开文件 CommonDialog1 Filter AllFiles vbp文件 vbp CommonDialog1 FilterIndex 2 CommonDialog1 InitDir D TanVB6 Program CommonDialog1 Flags 1 CommonDialog1 Action 1 EndSub 建立一个 保存 对话框的过程与建立 打开 对话框的过程相似 既可以在设计阶段通过属性页进行设置 也可以在程序运行时设置各属性值 例8 5 在窗体上添加一个通用对话框和一个命令按钮 当程序运行时 单击命令按钮 打开一个 保存 对话框 为 保存 命令按钮编写以下事件过程 8 4 2 保存 SaveAs 对话框 PrivateSubcmdSave Click CommonDialog1 DialogTitle 保存文件 CommonDialog1 Filter frm文件 frm AllFiles CommonDialog1 FilterIndex 1 CommonDialog1 InitDir D Tan Program CommonDialog1 Flags 6 CommonDialog1 Action 2 EndSub运行时显示一个 保存 对话框 见图8 21 图8 21 可以看到 程序中指定Action属性值为2 故对话框为 保存 类型 FilterIndex值为1 故对话框中过滤的文件类型的默认值为 frm Flags值为6 在表8 6中没有直接找到属性值为6的项 Flags的值可以是表8 6中两项或多项值相加 例如 6 4 2 它表示同时具备Flags 2和Flags 4的特性 即对话框中不出现 只读检查 复选框 以及当用户选中磁盘中已存在的文件名时会出现一个消息框 询问用户是否覆盖已有的文件 如果在运行时用户选中了与已有文件同名的文件 则会出现如图8 22所示的提示消息框 图8 22 许多Windows应用程序都有 颜色 对话框 使用户能够自己选择所需的颜色 当通用对话框的Action属性值为3时 通用对话框就会执行 颜色 对话框的功能 例8 6 利用 颜色 对话框将文本框中的文字改变颜色 窗体设计如图8 23所示 属性设置如表8 10 见书174页 所示 8 4 3 颜色 Color 对话框 图8 23 标志 Flags 属性用来定义对话框的格式 颜色 对话框的Flags属性值有4种可能值 见表8 11 见书174页 设置颜色为255 红色 标志为1 改变颜色 命令按钮的事件过程如下 PrivateSubcmdColor Click colordialog Action 3 Text1 ForeColor colordialog Color EndSubPrivateSubcmdEnd Click End EndSub 程序运行开始后 用户单击窗体中的 改变颜色 按钮 触发上面的cmdColor Click事件过程 屏幕显示如图8 24所示 从 基本颜色 中选择蓝色 用户也可以选择其他颜色 然后单击 确定 按钮 文本框中的文字随即改变为蓝色 或指定的其他颜色 如果用户认为 基本颜色 中的颜色不能满足要求 需要自己定义颜色 可以单击图8 24中的 规定自定义颜色 按钮 此时在对话框右侧弹出一个 添加到自定义颜色 部分 如图8 25所示 图8 24 图8 25 在前面几章的例题中设置属性时 已用过属性窗口中的Font属性来产生一个 字体 对话框 并从中选择字体和大小 为了方便Windows应用程序的设计 VisualBasic也允许用户根据需要设计 字体 对话框 当Action 4时 定义并打开一个 字体 对话框 例8 7 将上例改成在运行过程中用 字体 对话框改变字体 窗体设计与图8 23相仿 将 改变颜色 命令按钮改为 改变字体 命令按钮 将其Name属性值改为cmdFont 将通用对话框的Name属性值改为FontDialog 8 4 4 字体 Font 对话框 程序开始运行后的屏幕如图8 26所示 文本框中的 VisualBasic 字体是在设计阶段对文本框Text1的Font属性设置的状况 用户单击 改变字体 按钮 屏幕弹出一个 字体 对话框 如图8 27所示 从图8 27中可以看出 对话框中各项属性的初始值就是在属性窗口中设置的值 用户如果确认此值就直接单击 确定 按钮 如想修改 可以重新选择各属性值 例如 设置字体为ComicSansMS 字体样式 为 粗体 大小 为20 如图8 28所示 单击 确定 按钮 此时屏幕如图8 29所示 图8 26 图8 27 图8 28 图8 29 程序如下 PrivateSubcmdFont Click fontdialog Action 4 text1 FontName Fontdialog FontName text1 FontSize Fontdialog FontSize text1 FontBold Fontdialog FontBold text1 FontItalic Fontdialog FontItalic text1 FontUnderline Fontdialog FontUnderline text1 FontStrikethru Fontdialog FontStrikethru EndSubPrivateSubcmdEnd Click End EndSub 在上述过程中 将用户在对话框中选择的字体名 即FontDialog的FontName属性值 如TimesNewRoman就是一个字体名 赋给文本框Text1的FontName属性 以下各语句类似 这样就将文本框中的文字按各Font属性值的设定显示出来 当通用对话框的Action属性值为5时 通用对话框作为 打印 对话框使用 其属性页如图8 30所示 例8 8 利用通用对话框控件使屏幕显示一个 打印 对话框 窗体设计如图8 31所示 指定 打开打印对话框 命令按钮的Name属性值为cmdPrint 对话框的Name属性值为PrintDialog 编写如下程序 8 4 5 打印 Print 对话框 图8 30 图8 31 PrivateSubcmdPrint Click PrintDialog Action 5 EndSub运行开始后 用户单击 打开打印对话框 命令按钮 屏幕上出现一个 打印 对话框 如图8 32所示 可以看出 图中各项的初始值是在设计阶段在 属性页 中指定的 如图8 30所示 用户可以根据打印需要改变 打印 对话框中的各项值 图8 32 8 1设计一个程序 当单击窗体时 出现有3个按钮的消息框 如图8 33 a 所示 选择其中一个按钮后 再出现一个消息框 显示出所选择的按钮 如图8 33 b 所示 8 2设计一个如图8 34所示的窗体 窗体上有6个标签 其中3个标签用来显示 数据1 数据2 数据3 等提示信息 另外3个为白色背景有边框的标签 输入的数据将被显示在这三个标签中 窗体上有两个命令按钮 输入 和 退出 按钮 习题 图8 33 图8 34 程序运行时 单击 输入 按钮 出现 输入 对话框 若输入的数据在0 100范围内 则依次将数据写到标签中 如果输入数据超出规定的范围 则用消息框提示 是否接受输入的数据 如图8 35所示 若选择 是 则将数据显示在标签中 否则重新输入数据 8 3设计一个输入学生成绩的窗体 窗体中各控件及属性如表8 12 见书181页 所示 窗体外观如图8 36所示 运行程序 分别在三个文本框中输入数学 物理和英语的成绩 单击 统计 按钮 对三个成绩累计求和 并将计算结果显示在 总分 后面的标签中 单击 退出 按钮 结束程序的运行 图8 35 图8 36 8 4设计一个程序 能够改变标签中文本的颜色 字体 窗体外观如图8 37所示 单击 改变颜色 按钮时 出现 颜色 对话框 选中某个颜色并单击 确定 按钮后 窗体上标签中文字的颜色被设置为选中的颜色 如果单击 改变字体 按钮 则出现 字体 对话框 在该对话框中设置字体 字体大小 字体样式后 窗体上标签中的文字按新设置的参数显示 图8 37 8 5改进题8 4中的程序 使其对显示在文本框中的文件具有简单的编辑功能 在窗体上添加一个能显示多行文本的文本框 一个通用对话框和6个命令按钮 界面如图8 38所示 文本框中的文本从一个文本文件中读取 单击 结束 按钮时 先保存文本框中的内容 再结束程序的运行 图8 38 8 6设计一个程序 查找指定的字符串 窗体上有一个文本框和一个标签框 文本框用于显示从某个文件中读取的文件 标签框显示 程序进入运行状态后 请单击窗体 的提示 窗体外观如图8 39所示 程序进入运行状态后 弹出 打开文件 对话框 选择一个文件 并将其内容显示在文本框中 单击窗体 弹出输入对话框 用户输入要查找的字符串后单击 确定 按钮 被找到的字符串被涂黑显示 如果用户输入的字符串没有查找到 弹出消息框 告诉用户字符串没找到 图8 39 8 7在窗体上画一个文本框 当向文本框中输入一个数字字符时 弹出一个消息框 其标题为 输入提示 消息框中的提示信息为 输入的是数值数据 消息框中只有一个 确定 按钮 当向文本框中输入一个字母时 不论大小写字母 弹出一个消息框 其标题为 输入提示 消息框中的提示信息为 输入的是字母 消息框外观如图8 40所示 图8 40 第9章图片框 图像框和计时器 9 1图片框9 2图像框9 3计时器9 4利用图片框和计时器设计简单动画习题 例9 1 在窗体上建立一个图片框 将VisualBasic系统提供的文件flower wmf装入图片框中 具体操作步骤如下所述 1 打开一个新工程 选用工具箱中的图片框工具 在窗体上所需的位置处画一图片框控件 设名称为picShow 再添加命令按钮控件cmdExit 如图9 1所示 9 1图片框 图9 1 2 在属性窗口中选择图片框控件picShow的Picture属性 这时在其右侧出现按钮 用鼠标单击此按钮 屏幕上出现一个 加载图片 对话框 如图9 2所示 打开C盘上的Popular 全路径名为c ProgramFiles MicrosoftOffice Clipart Popular 子目录 选择该目录中的flower wmf文件 然后单击 打开 按钮 在窗体的图片框中立即显示出一图形 如图9 3所示 当然也可以选择任何其他已存在的图形文件 图9 2 图9 3 图片框中可以使用以下三种类型的图形文件 位图 bitmap 文件后缀为 bmp 图标 icon 文件后缀为 ico Windows元文件 metafile 文件后缀为 wmf 通常希望图形能够充满图片框 或者图形能够随着图片框大小的改变而改变 也就是说始终让图形的边界与图片框的边界重合 可以通过设置图片框的AutoSize属性达到这个目的 AutoSize有两个值 True和False 当AutoSize属性的值设置为True时 图片框随着图形的实际大小而自动调整尺寸 以适应图形的尺寸 当AutoSize属性的值设置为False时 图片框不能自动调整尺寸 类型为 wmf的图形文件会自动调整大小 以适应图片框的尺寸 如果是 bmp和 ico文件 则图形不会自动调整大小 以上是在设计阶段将图形以图形文件的形式装入图片框的方法 在设计阶段将图形装入的另一种方法是 使用剪贴板把在各种图形软件下制作的图形粘贴到图片框中 例9 2 使用任何图形软件工具制作一个图形 然后利用剪贴板将图形装入图片框内 具体做法如下 1 用Windows下任何一种图形软件 如CorelDraw Paintbrush Photoshop等 画出一个图形 现在使用Word2000来制作一个立体的 VisualBasic 艺术字 2 选择 编辑 菜单中的 复制 命令 或 编辑 剪切 命令将该图形复制到剪贴板上 3 关闭Word2000的窗口 打开VisualBasic 在窗体上建立一个图片框 4 用 编辑 菜单中的 粘贴 命令将剪贴板上的图形粘贴到图片框中 如图9 4所示 实际上 并不是只有用图形软件制作的图形才能装入图片框 凡是能放到Windows剪贴板上的图形 都可以用VisualBasic的 编辑 粘贴 命令剪贴到图片框中 除上述两种方法外 还能够在程序运行中把图片加载到图片框中 图9 4 例9 3 在窗体上画一个图片框和两个命令按钮 在运行时当用户单击 装载 命令按钮时 将系统提供的一个图片装入图片框 窗体如图9 5所示 属性设置见表9 1 见书186页 按题目要求在单击命令按钮时执行加载图片的工作 编写如下过程代码 PrivateSubcmdLoad Click Picture1 Picture LoadPicture d Tan Program clock wmf EndSub 图9 5 LoadPicture函数的作用是把图形文件调入内存 它的一般形式为 对象 Picture LoadPicture 文件名 其中的 对象 指的是窗体 图片框 图像框等 默认为窗体 运行这个程序 单击 装载 命令按钮 clock wmf图形文件所对应的图形被装入图片框中 运行结果如图9 6所示 图9 6 图像框 Image 也可以用来装载图形文件 具体的使用方法与图片框类似 既可以在设计阶段给Image控件的Picture属性赋值 赋予一个图形文件的名字 也可以在运行阶段通过LoadPicture函数装入图形文件 9 2图像框 图像框与图片框有下述不同之处 1 图像框与图片框相比 占内存少 为了节省内存 一般应尽量用图像框 除非图像框不能满足使用要求 2 图片框控件内还可以包括其他控件 例如可以在图片框内画一个命令按钮 如果移动图片框 则命令按钮随之一起移动 命令按钮成为图片框的一个组成部分 如果单独移动命令按钮 只能在图片框范围内移动 不能移到图片框外去 也就是说 图片框可以作为一个 容器 使用 在其中 可以放置一组控件 图像框则不然 如果在图像框中再画一个命令按钮 这个命令按钮和图像框是彼此独立的 二者之间没有固定的联系 命令按钮不从属于图像框 不是图像框的组成部分 当移动图像框时 命令按钮仍旧在原来的位置 不随图像框的移动而移动 也就是说 看似添加到图像框上的命令按钮 实际上是添加到窗体上 如果单独移动命令按钮 可以把它移动到图像框之外 3 将图形文件装入图片框时 图形不能随图片框的尺寸调整大小 如果其AutoSize属性为True时 图片框可以调整大小以适应图形的大小 而不是图形改变大小 如果其AutoSize为False时 图片框不能改变大小 而只有当图形文件为 wmf类型 Windows元文件 时 图形会自动调整大小以填满图片框 图像框有一个Stretch 拉伸 属性 当它的值为True时 图形能自动变化大小以适应图像框的尺寸 当它为False时 图像框会自动改变大小以适应图形的大小 使图形充满图像框 例9 4 将一个图形文件放到图像框中 改变图像框的大小 观察图形是否随之改变大小 属性设置见表9 2 见书188页 用户界面设计如图9 7所示 编写出下面四个事件过程 1 单击 改变宽度 命令按钮所触发的事件过程如下 PrivateSubcmdChangeW Click Image1 Left Image1 Left Image1 Width 2 Image1 Width Image1 Width 2 EndSub 图9 7 这段程序的作用是使图像框的宽度增加1倍 Width属性值就是宽度 由于图像框改变了大小 而Stretch属性为True 因此 图像也随之改变大小而充满图像框 上述过程的第一行的作用是 使变化了大小的奖杯图形的位置仍在窗体的横向中间位置 见图9 8 图9 8 2 单击 改变高和宽 命令按钮所触发的事件过程如下 PrivateSubcmdChangeHW Click Image1 Left Image1 Left Image1 Width 2 Image1 Height Image1 Height 2 Image1 Width Image1 Width 2 EndSub运行这段程序使图像框的高和宽都增大1倍 Height属性就是图像框的高度 奖杯图形也随之调整了大小 见图9 9 图9 9 3 单击 恢复原尺寸 命令按钮所触发的事件过程如下 PrivateSubcmdReset Click Image1 Left 2325 Image1 Top 600 Image1 Height 1515 Image1 Width 1515 EndSub恢复图像框原来的位置 左上角距窗体左上角水平距离为2325 垂直距离为600 和大小 高为1515 宽为1515 即恢复如图9 7所示的大小和位置 4 单击 退出 按钮所触发的事件过程如下 PrivateSubcmdExit1 Click End EndSub VisualBasic提供了一种 计时器 的控件 计时器每隔一定时间间隔就产生一次Timer事件 可理解为报时 可以根据这个特性依照时间控制某些操作 或用于计时 例9 5 显示世界不同城市的当前时间 每秒变化一次 并发出一次蜂鸣声 设计阶段的窗体外观如图9 10所示 属性设计见表9 3 见书191页 9 3计时器 图9 10 这个程序中有三个过程 Form Load事件过程 Timer1 Timer 事件过程和clock dt 通用过程 Form Load事件过程装载两幅图片 并将地名添加到组合框中 系统每隔1秒 触发Timer1 Timer 事件过程一次 鸣响一次 并根据选择的地名的参数 调用通用过程clock dt 1 在运行开始时执行Form Load事件过程 程序如下 PrivateSubForm Load 把城市添加到组合框中 Combo1 AddItem 北京 Combo1 AddItem 上海 Combo1 AddItem 东京 Combo1 AddItem 纽约 Combo1 AddItem 伦敦 在图像框中添加图片 Image1 Picture LoadPicture d Tan Program Clock wmf Image2 Picture LoadPicture d Tan Program Amconfus wmf EndSub 2 程序开始执行后 每秒钟执行一次Timer1 Timer事件 并根据被选中的地名 显示出当地时间 要注意的是 在设计阶段 计时器控件显示在屏幕上 而在运行阶段并不显示出来 只是按设定的时间间隔定时触发Timer事件过程 如果需要显示具体的时间 应该把时间显示在某个控件中 如标签或文本框 在这个例题中 显示时间的功能是在clock dt 过程中实现的 以下是Timer1 Timer 事件过程 PrivateSubTimer1 Timer SelectCaseCombo1 Text 以组合框中选中的项目为条件Case 北京 设北京为时间基准0 clock 0 Case 上海 clock 0 Case 东京 clock 1 Case 纽约 clock 11 Case 伦敦 clock 16 EndSelect EndSub 3 下面的子程序用来计算并显示出各地的时间 PrivateSubclock dt t Time hr Val Left t 2 dt Ifhr 24Thenhr hr 24 t1 Str hr t2 Mid t 3 6 Label1 Caption t1 t2 ForI 1to100 Beep Nexti EndSub 使用Beep方法能够发出蜂鸣声 一般来说 执行一次Beep 发出的声音很短 难以听到 所以用一个For循环 多次执行Beep 运行结果如图9 11所示 图9 11 例9 6 在一个画面上轮流显示一本书的各章目录 程序运行时的屏幕显示如图9 12和图9 13所示 请注意图片中的文字不同 属性设置见表9 4 见书194页 在窗体中画一个大的图像框 见图9 14 准备在上面装入背景图案 标签在图像框的上部 准备用来显示书的目录 其BackStyle属性值为 0 Transparent 含义是 背景是透明的 这样 在背景画面上显示文字时标签不会挡住后面的图像 能够取得比较好的效果 如取1 Opaque 则标签为不透明 计时器放在右下角 但在运行时它就消失了 图9 12 图9 13 图9 14 本程序包含三个过程 初始装入事件过程Form Load 计时器触发的事件过程Timer1 Timer 和显示文本的通用过程display i 下面开始编写程序 1 首先定义一个数组a 定义数组a的方法 进入代码窗口 单击左

温馨提示

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

评论

0/150

提交评论