400 likes | 557 Views
第 5 章:常用控件. 常用控件的学习目标. 掌握常用控件的属性 属性名及其含义 掌握常用控件的方法 方法名称及其功能 掌握常用控件的事件 事件名称、事件触发的条件和时机 与控件相关的常见设计思想、算法 控件数组. 控件 —— 命令按钮( CommanButton ). 属性 Name 属性:控件名称 建议以 Cmd 为名称前缀,并以 “ 见名知义 ” 为原则 Caption 属性:显示在按钮控件上的标题 访问键的设置: &+ 字符 访问键的效果:字符带有下划线 访问键的功能:运行时按下 “ ALT+ 字符 ” 组合键即可触发该按钮的 Click 事件
E N D
常用控件的学习目标 • 掌握常用控件的属性 • 属性名及其含义 • 掌握常用控件的方法 • 方法名称及其功能 • 掌握常用控件的事件 • 事件名称、事件触发的条件和时机 • 与控件相关的常见设计思想、算法 • 控件数组
控件——命令按钮(CommanButton) • 属性 • Name属性:控件名称 • 建议以Cmd为名称前缀,并以“见名知义”为原则 • Caption属性:显示在按钮控件上的标题 • 访问键的设置:&+字符 • 访问键的效果:字符带有下划线 • 访问键的功能:运行时按下“ALT+字符”组合键即可触发该按钮的Click事件 • Enabled属性:返回或设置控件是否响应用户操作 • Visible属性
控件——命令按钮(CommanButton) • 属性 • Style属性 • 设置按钮为标准按钮(0)或图形按钮(1) • BackColor属性 • 背景颜色(Style=1的前提下设置有效) • Picture属性 • 按钮的图片(Style=1的前提下设置有效,可以用来设计漂亮的图形按钮)
控件——命令按钮(CommanButton) • 事件 • Click事件 • 鼠标单击 • 获得焦点时,按Enter键 • 如果有访问键,Alt+访问键 • 实例 • 例5-1:根据需要对按钮可用性进行控制
控件——标签(Label) • 属性 • Caption属性 • 标签文本 • AutoSize属性 • 标签大小是否自动适应文字内容 • Alignment属性 • 文本对齐方式 • BackStyle属性 • 背景是否透明(1-不透明(默认值),0-透明) • 标签控件也可以响应Click、DblClick等事件,但习惯上,仅仅把标签作为文本显示的控件。
控件——文本框(TextBox) • 属性 • Text属性:文本框最重要的属性之一 • 读取或设置文本框中的文本 读取文本框的内容 s=txtname.text 设置文本框的内容 txtname.text=s • MaxLength属性 • 设置或返回文本框中可以输入的字符最大数(0~65535) • 可以用来设置用户输入的数据长度(如身份证号)
控件——文本框(TextBox) • 属性 • MultiLine属性 • 文本框是否接受多行文本 • true —可多行,False(默认值)—单行 • 演示属性设计和代码设计多行文本的实现 • ScrollBars属性 • 是否显示滚动条(无、水平、垂直、水平和垂直) • PasswordChar属性 • 设置文本框字符掩码 • 主要用于密码的输入 • 该属性只影响文本框的显示,而不影响Text属性,即不影响真实数据。 • Locked属性 • 锁定文本框(True—不可编辑,False—可编辑)
控件——文本框(TextBox) • 属性 • 文本编辑属性 • SelStart • SelLength • SelText 实例5-2 :在代码中选定文本
控件——文本框(TextBox) • 事件 • Change事件 • 文本框的Text属性值发生改变时触发 • 一般用于对文本内容的变化进行即时响应,或监控文本内容的变化 • 例5-3:根据文本框内容决定一个按钮可用性
控件——文本框(TextBox) • 事件 • KeyPress事件 • 文本框获得焦点并按下键盘上的按键后触发 • 参数KeyAscii:用户所按按键字符的ASCII码 • 一般用于对用户输入的文字内容进行监控,并对用户输入的内容进行有效性验证或格式处理(如禁止非法数据的输入或自动转换为大写字母等)或者对某些特殊按键作处理(比如回车键往往表示执行确定功能等) • 例5-4
综合实例5-5:带密码的简易文本编辑器 • 预备知识:剪贴板对象的基本操作 • 剪贴板对象:ClipBoard • SetText方法 • 格式:ClipBoard.SetText TextString • 功能:将字符串TextString放到剪贴板中 • GetText方法 • 格式:ClipBoard.GetText • 功能:获取剪贴板中的字符串内容 • 例:s=Clipboard.GetText • Clear方法 • 格式:ClipBoard.Clear • 功能:清除剪贴板中的内容
综合实例5-5:带密码的简易文本编辑器 • 功能分析 • 密码验证 • 如果密码=“1234567”,允许进入编辑器,否则提示重新输入密码 • 编辑器初始状态 • 复制、剪切、粘贴、删除按钮不可用 • 单击“全选”按钮时 • 选中文本框内容所有文字,并反相显示 • 复制、剪切、删除按钮变为可用 • 单击“复制”按钮时 • 将选中文字复制到剪贴板 • 粘贴按钮变为可用 • 单击“清除”按钮时 • 清空文本框所有文字 • 复制、剪切、删除按钮不可用
综合实例5-5:带密码的简易文本编辑器 • 功能分析 • 单击“剪切”按钮时 • 将选中文字复制到剪贴板 • 删除选中文字 • 粘贴按钮变为可用 • 剪切、删除、复制按钮变为不可用 • 单击“粘贴”按钮时 • 文本框中的选中文字替换为剪贴板中的文字(如果没有选中文字,则在光标位置插入) • 单击“删除”按钮时 • 清空用户选中的文字 • 复制、剪切、删除按钮不可用 • 用户在文本框中选择了文本时 • 复制、剪切、删除按钮可用
控件——复选框(CheckBox) • 属性 • Value属性 • 复选框的选中状态 • 0(缺省):未选 • 1:选中 • 2:灰色(半选中状态) • 运行时的状态转换
控件——复选框(CheckBox) • 事件 • Click事件 • 复选框在运行中一般有两种状态(0或1),在Click事件中,一般需要判断用户是选中还是清除,然后根据用户的操作进行不同的操作 • 典型的复选框Click事件代码 Private Sub Check1_Click() If Check1.Value = 1 Then '选中复选框后进行的操作代码 Else '清除复选框后进行的操作代码 End If End Sub
控件——复选框(CheckBox) • 事件 • Click事件 • 可以用常数Checked和UnChecked表示复选框Value属性的1和0 Private Sub Check1_Click() If Check1.Value = Checked Then '选中复选框后进行的操作代码 Else '清除复选框后进行的操作代码 End If End Sub • 复选框没有DblClick(双击)事件 • 实例:5-6
控件——单选按钮(OptionButton) • 属性 • Value属性 • 单选按钮的选中状态 • True:选中 • False(缺省):不选中 • 事件 • Click事件 • 运行时单击单选按钮只能表示选中,其Click事件过程中一般不需要选择结构
控件——框架(Frame) • 功能:作为控件容器对控件进行分组 • 分组的意义 • 使得界面功能布局清晰、易懂 • 对单选按钮进行分组(举例) • 属性 • Caption属性 • 将控件添加到框架的方法 • 先建立框架控件,然后在框架控件内拖画控件(举例) • 注意:如果将控件绘制在框架之外,然后将它移动到框架控件内部 ,并不能达到目的(举例) • 如果希望将已经存在的若干控件放在框架中,可以先选择控件,然后“剪切”,然后选定框架控件,“粘贴”(举例)
控件——框架(Frame) • 选择框架内的多个控件 • 不能直接使用鼠标拖曳的方法 • Ctrl+鼠标点击(或鼠标拖曳) • 综合实例 • 5-7:字体设置对话框
控件——列表框(ListBox) 属性 ListCount属性 列表框中列表项的数目 List属性 列表框中列表项(列表内容)数组,下标为0~listcount-1 经常和循环结合获取列表框中的所有项目(举例,输出所有项) For i=0 to list1.listcount-1 print list1.list(i) Next I 也可以通过修改数组元素的值改变列表项(举例) MultiSelect属性 是否允许在列表框中多选(举例) 0:只能单选 1:简单复选 2:扩展复选:ctrl、shift、拖曳
控件——列表框(ListBox) 属性 ListIndex属性 MultiSelect=0时 该属性表示所选列表项的索引号(举例) 根据listindex属性值可以获取用户的选择,-1表示没有进行选择 设置listindex=-1可以取消选择 MultiSelect=1或2时 该属性仅仅表示用户最近一次选择项的索引号,不一定表示选中(举例) 无法通过该属性值获取用户的选择情况 也无法设置listindex=-1取消用户的选择
控件——列表框(ListBox) 属性 Text属性 MultiSelect=0时 该属性表示所选列表项文本内容(举例) MultiSelect=1或2时 该属性仅仅表示用户最近一次选择项的文本内容,不一定表示选中(举例) 属性值总=列表框名.list(列表框名.listindex) Style属性 列表框类型(举例) 1:复选框样式,永远可以多选 0(缺省):标准样式
控件——列表框(ListBox) 属性 Selected属性 与List属性类似,是一个数组,元素值时逻辑型,表示对应列表项的选择情况(True=选中,False=未选中) 经常与循环结合获取允许复选的列表框的选中情况(举例,输出所有选中项) For i=0 to list1.listcount-1 if list1.selected(i) then ‘添加对选中项的操作代码 End if Next i
控件——列表框(ListBox) 属性 SelCount属性 选中的列表项的数目 Sorted属性 列表项是否排序 True:自动排序 False(缺省):不排序
控件——列表框(ListBox) 方法 AddItem方法 在列表框中添加列表项 格式 列表框名.additem 文本[,索引值] 文本:添加的列表项文本 索引值:所添加项目的索引(<=listcount),如果省略,则添加到末尾 举例 在末尾添加列表项的另一个方法 List1.list(list1.listcount)=列表项文本
控件——列表框(ListBox) 方法 RemoveItem方法 在列表框中移除列表项 格式 列表框名.removeitem 索引值 索引值:准备删除的项目的索引 举例 Clear方法 清楚清除所有列表项
控件——列表框(ListBox) 事件 Click事件 单击某一列表项或改变某一列表项的选择状态(举例,通过程序出发click事件) DblClick事件 鼠标双击某列表项 按照Windows习惯,双击=单击+确定按钮(以PPT设置字体格式为例) KeyPress事件 列表框获得焦点时键盘的击键 通过参数KeyAscii可以获知击键的ASCII码 实例: 5-8:列表项的添加和删除 5-9:列表项的移动
控件——组合框(Comobox) 组合:文本框+列表框 属性 Style属性 组合框类型(举例) 0:下拉组合框(可选、可输入) 1:简单组合框(可选、可输入) 2:下拉列表框(可选、不可输入) Text属性 组合框中的文本内容
控件——组合框(Comobox) 属性 List属性:和列表框的list属性相同 方法 Additem Removeitem Clear
控件——组合框(Comobox) 事件 Click事件 利用鼠标选择列表项时触发Click事件 DblClick事件 KeyPress事件 组合框获得焦点时按下键盘按键时触发(类似文本框的KeyPress事件) 可以通过参数KeyAscii获得用户所按按键信息 Change事件 组合框文本内容改变时触发(类似文本框的Change事件) 注意:用户通过鼠标从列表项中选择不触发change事件,而是Click事件
控件——组合框(Comobox) 实例:字体设置对话框(5-10) 预备知识 系统字体的获取 For i = 0 To Screen.FontCount - 1 Print Screen.Fonts(i) Next I
控件——组合框(Comobox) 实例:字体设置对话框(5-10) 预备知识 颜色函数QbColor 格式:Qbcolor(p) 说明:p是介于0~15 之间的一个整数,分别代表常见的16种颜色
控件——滚动条(ScrollBar) • 分为水平滚动条和垂直滚动条 • 属性 • Value属性 • 滚动滑块所在位置 • Max和Min属性 • Value属性的最大值和最小值 • LargeChange和SmallChange
控件——滚动条(ScrollBar) • 事件 • Change事件 • Value属性值发生改变时触发 • Scroll事件 • 拖动滚动块时触发 • 注意拖动滚动块时Value属性值发生了改变,但是不触发Change事件,当放开滚动块的一刹那才触发change事件(举例) • 通常在scroll事件中调用change事件(举例)
控件——滚动条(ScrollBar) • 实例 • 5-11:字体大小设置 • 5-12:文字颜色配置 • 准备知识:颜色函数RGB • 格式:RGB(RedValue,GreenValue,BlueValue) • 说明 • RedValue,GreenValue,BlueValue的取值范围都是0~255 • 返回值是一个long类型的数值,代表一种颜色值
控件——定时器(Timer) • 属性 • Interval属性 • 时间间隔(单位:毫秒,0~65535) • Enabled属性 • 定时器是否可用 • 停止定时器的两种方法 • Enabled属性设置为false • Interval属性设置为0
控件——定时器(Timer) • 事件 • Timer事件 • 时间间隔interval到来时的工作代码 • 实例 • 5-13:电子时钟 • 5-14:倒计时闹钟程序 • 5-15:字幕程序
控件数组 • 控件数组的优点 • 可以通过数组对多个控件进行操作 • 实例5-16和实验9-4比较 • 控件数组 • 一组相同类型的控件,具有相同的名字和不同的index属性(特殊的数组) • 创建方法 • 已经存在的控件组成数组(演示) • 通过复制粘贴的方法(演示)
控件数组 • 控件数组 • 控件数组具有相同的名字和共同的事件,必须通过index属性进行区分 • 示例:“最大化”、“还原”按钮控件数组 • 控件数组事件的代码往往是一个Select…Case结构 • 程序运行过程中创建控件数组的方法 • 设计阶段准备一个控件,设置index=0(母本) • 利用load语句加载控件数组 • 设置新添加控件为可见 • 设置新添加控件的位置等其他属性 • 实例5-17:动态添加控件的方法 • 实例5-18:简易计算器 • 实例5-19:调色板程序