第 5 章:常用控件
-
Upload
kalia-dejesus -
Category
Documents
-
view
59 -
download
2
description
Transcript of 第 5 章:常用控件
第第 55 章:常用控件章:常用控件第第 55 章:常用控件章:常用控件
常用控件的学习目标• 掌握常用控件的属性
– 属性名及其含义• 掌握常用控件的方法
– 方法名称及其功能• 掌握常用控件的事件
– 事件名称、事件触发的条件和时机• 与控件相关的常见设计思想、算法• 控件数组
控件——命令按钮( 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 IfEnd Sub
控件——复选框( CheckBox)• 事件
– Click事件• 可以用常数 Checked 和 UnChecked表示复选框
Value属性的1 和 0Private 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-1if 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 - 1Print Screen.Fonts(i)
Next I
控件——组合框( Comobox)• 实例:字体设置对话框( 5-10)
– 预备知识• 颜色函数QbColor
– 格式:Qbcolor(p)– 说明: p 是介于 0~15 之间的一个整数,分
别代表常见的 16 种颜色
0 黑 4 红 8 灰 12 亮红1 蓝 5 洋红 9 亮蓝 13 亮洋红
2 绿 6 黄 10 亮绿 14 亮黄3 青 7 百 11 亮青 15 亮白
控件——滚动条( 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:调色板程序