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:调色板程序