Transcript PPT课件
第5章:常用控件 常用控件的学习目标 • 掌握常用控件的属性 – 属性名及其含义 • 掌握常用控件的方法 – 方法名称及其功能 • 掌握常用控件的事件 – 事件名称、事件触发的条件和时机 • 与控件相关的常见设计思想、算法 • 控件数组 控件——命令按钮(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:灰色(半选中状态) – 运行时的状态转换 2 0 1 复选框 控件——复选框(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种颜色 0 黑 4 红 8 1 蓝 5 洋红 9 2 绿 6 黄 10 亮绿 14 亮黄 3 青 7 百 11 亮青 15 亮白 灰 12 亮红 亮蓝 13 亮洋红 控件——滚动条(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:调色板程序