Visual Foxpro 6.0程序设计 第八章表 单 控 件 概述
➢输出类:标签、图像、线条、形状
➢输入类:文本框、编辑框、微调控件、列表框、组合框
➢控制类:命令按钮、命令按钮组、复选框、
选项按钮组、计时器
➢多重容器类:表格、页框、Container容器、表单集
➢连接类:ActiveX绑定控件、超级链接控件、ActiveX控件
标签Label
➢标签控件的作用
用来显示一些说明信息、对象标题等。第一个标签的默认名(Name属性)为Label1
标签Label(续)
➢常用属性
Caption 指定标题,使用字符常量设置该属性时,若在
代码窗口,需定界符,在属性窗口则不用。
AutoSize 根据内容多少自动改变大小(值.T.或.F.)
WordWarp 自动换行(值.T.或.F.)
BackStyle 透明(值0)或不透明(值1)
BorderStyle 无边框(值0)或单线框(值1)
标签控件的常用设置为:大小自动适应、背景透明
图像Image
➢图像控件的作用
用于显示图片,支持的图片文件类型有.bmp, .jpg,
.ico, .gif等。
第一个图像控件的缺省名为Image1。
➢常用属性
Picture 指定图像文件名
Stretch 调整图像以适应控件大小的方式
剪裁(值0)、等比例填充(1)、变比填充(2)
线条Line
➢线条控件的作用
用来创建直线或斜线对象。第1个线条的默认名为Line1
➢创建直线
设置Height为0(水平线)或Width为0(垂直线)
或调节控制点使上下边或左右边重合
➢创建斜线
斜线方向由LineSlant属性(\\或/)决定
线条Line(续)
➢线条控件的常用属性
BorderColor 线条颜色
BorderStyle 线条样式:0透明,1实线,2虚线,3点线,
4点划线,5双点划线,6内实线
BorderWidth 线宽为多少像素点
Width对象宽度
Height 对象高度
LineSlant 线条斜线方向:斜扛(\\)或反斜扛(/)
形状Shape
➢形状控件的作用
创建圆、椭圆、正方形、矩形等几何形状。第一个形状的默认名(Name属性)为Shape1
➢常用属性
Curvature 从0(直角)到99(圆或椭圆)的一个值
FillStyle 对象透明或使用填充图案
SpecialEffect 平面(值1)或三维(值0)
(仅Curvature为0时有效)
正方形:Width与Height相等且Curvature=0
矩形:Width与Height不相等且Curvature=0
圆:Width与Height相等且Curvature=99
小圆角正方形大圆角正方形圆:
Width与Height相等且Curvature=1~99
小圆角矩形大圆角矩形椭圆:
Width与Height不相等且Curvature=1~99
文本框Text
➢文本框控件的作用
供用户显示、输入或编辑数据。
它允许用户添加或编辑保存在表中非备注字段中的数据。
第一个文本框的默认名为Text1。
➢与标签的区别
标签没有数据源
标签不能直接编辑
标签不能用tab键选择
➢在程序中引用或更改文本框中显示的文本
1.设置或引用Value属性。
Value的初始值决定了文本框中的数据类型
无初始值则表示字符型,{}日期型。
Value值为数字或逻辑值时分别为数值型、逻辑型。
2.设置文本框的ControlSource属性
则文本框中显示的文本既保存在Value属性中,同时也保存在ControlSource属性指定的变量或字段
中。
➢屏蔽输入字符
将输入的字符用其它字符代替显示
如: 用*(星号)来显示输入的密码。
属性:PasswordChar
➢其它属性
Alignment 文字对齐方式
MaxLength 可输入的最大字符串长度
SelText 返回被选定的字符
ReadOnly 是否为只读
➢当文本框得到焦点后自动选择文本
使用键盘在文本框中输入文字时,要想选中所有的文字,需要将SelectOnEntry属性设置为“真”(.T.)。
➢对文本框中的文本进行格式编排
InputMask属性: 决定在文本框中可以输入的值
Format属性:决定在文本框中值的显示方式
➢Format(格式)属性
该属性可为整个文本框设定输入与显示格式。
设置值 功能描述(见P197)
A 只允许字母
R 允许出现非格式字符而不存储,用于C或N型数据。
! 转换为大写,用于C型
$ 显示货币符号
➢InputMask(掩码)属性
该属性控制相应位置的字符格式,一个掩码字符控制一位。
例1:将InputMask属性设置为999,999.99
作用:限制用户只能输入两位小数且小于106的数值
在用户输入值之前,逗号和句号就显示在文本框中。
如果用户输入一个字符键,则该字符无效。
例2:如果想让用户在文本框中只能键入逻辑值“Y”或“N”,应将➢常用方法
SetFocus 设置焦点
➢常用事件
When 文本框获得焦点前发生
Valid 文本框失去焦点前发生
KeyPress 按键时发生
InteractiveChange 文本框的值被改变时发生
➢文本框生成器
数据类型 对应Value属性
InputMask 属性设置为“Y”。
C,N,D,L项分别对应(无)、0、{}、.F.
在运行时启用 Enabled=.T.
使其只读 ReadOnly=.T.
隐藏选定内容 HideSelection=.T.
仅字母表中的字符 Format设置为A
进入时选定 Format设置为K
显示前导零 Format设置为L
输入掩码 自行设定InputMask属性
➢例8.3 设计如图所示表单,实现按学号查询学生的姓名与专业,查询结果显示于txt姓名与txt专业文本框中。
编辑框Editbox
➢编辑框控件的作用
实现多行文本数据的输入与编辑。常作为备注型字段的数据绑定控件。第一个编辑框默认名为Edit1
➢常用属性
Value 编辑框的值
ScollBar 是否提供滚动条
SelText 返回选定的内容
SelStart 指定或返回选定内容的起始位置
SelLength 指定或返回选定内容的长度
列表框与组合框Listbox,Combox
➢列表框、组合框的作用
提供选择项列表。
第一个列表框默认名List1,组合框默认名Combo1。
➢列表框与组合框的区别
1.列表框中显示若干列表项,其余通过滚动条查看;
组合框只显示一项,单击向下按钮时显示列表;
要突出显示当前选定项时,可使用组合框。
2.组合框分为下拉组合框、下拉列表框
下拉组合框允许添加新数据项
下拉列表框与列表框相同,不能添加。
通过Style属性设置:0-下拉组合框,1-下拉列表框
➢常用属性
ColumnCount 指定列表项的列数
ColumnWidths 指定各列的列宽
Value 返回选定的列表项
BoundColumn 指定哪一列作为Value属性值
ControlSource 数据绑定
MultiSelect 在列表框中能否多重选择
ListCount 返回列表项的个数
ListIndex 返回选定项的顺序号(仅在运行时可用)
➢常用方法
AddItem 添加列表项
用法:对象名.AddItem(“项目名”)
如:Thisform.list1.additem(“姓名”)
RemoveItem 删除列表项
用法:对象名.RemoveItem(索引值)
如:Thisform.list1.RemoveItem(3)
Clear 清除列表框中的所有项
➢数据源
RowSource 列表中显示值的来源
RowSourceType 指定RowSource的类型
RowSourceType=0 无数据来源
只能在代码中用AddItem或AddListItem添加列表项
如:ThisForm.List1.AddItem(\"First Item\")
RowSourceType=1 值
直接指定列表项的值,在属性窗口设置RowSource时用逗号分隔列表项,在代码中设置还要使用引号。如:
Thisform.list1.RowSource=“one,two,three”
RowSourceType=2 别名
列表项为数据环境中指定表的一个或多个字段
若ColumnCount=0或1,则显示第一个字段,为3时,显示前3个字段。
若不想按顺序显示字段,可使用3-SQL语句或6-字段
RowSourceType=3 SQL语句
在RowSource中应包含一个Select-SQL语句,命令中还应包含Into Cursor子句将结果生成临时表。如:
Select * from student into mylist
RowSourceType=4 查询(.qpr)
应将RowSource属性设置为 .QPR 文件
RowSourceType=5 数组
用数组中的项填充列表,应在RowSource中指定数组名。
如果使用多维数组,还应指定ColumnCount属性。
RowSourceType=6 字段
指定一个字段或逗号分隔的一系列字段填充列表。
RowSource的格式:
格式1:字段
格式2:别名.字段
格式3:别名.字段,字段,字段,...
如果想包括多个表的字段,应使用3-SQL语句
RowSourceType=7 文件
用当前目录中的文件名来填充列表,并允许选择不同的驱动器和目录。
可将RowSource设置为列表中显示的文件类型。如:可将RowSource设为*.scx。
RowSourceType=8 结构
用RowSource中指定的表的结构来填充列表:
RowSourceType=9 弹出式菜单
用一个先前定义的弹出式菜单来填充列表。
微调控件Spinner
➢微调控件的作用
用于输入给定范围的数值。
即可用键盘输入,也可用箭头按钮来增减。
第一个微调控件的默认名为Spinner1。
通过设置Inputmask属性,以及在Valid事件写入有关代码,虽然能确保输入到文本框中的数值在给定范围内,但检查输入值范围更简单的方法是使用微调控件。
➢设置用户输入值的范围
KeyboardHighValue 用户能输入的最大值
KeyboardLowValue 用户能输入的最小值
SpinnerHighValue
单击向上按钮时,微调控件能显示的最大值
SpinnerLowValue
单击向下按钮时,微调控件能显示的最小值
➢调整微调控件的值:Increment属性
若该属性值为正,单击向上按钮时,可增加微调值
若该属性值为负,单击向上按钮时,可减少微调值
➢其它属性
Value 当前的值
InputMask 输入掩码
ControlSource 数据源
➢微调非数值型值
微调控件值一般为数值型,也可以使用微调控件和文本框来微调多种类型的值。
例如:微调一定范围的日期
方法:调整微调控件的大小,使之只显示按钮,同时在微调按钮旁放置一个文本框,并设置其Value属性为日期,在微调控件的UpClick和DownClick事件中编写代码增加或减少日期。
命令按钮Commandbutton
➢命令按钮的作用
命令按钮是启动事件的最常用的控件。
最常用的是其Click事件。
第一个命令按钮的默认名为command1
➢按钮的文字标题---Caption属性
若在某字符前加“\\<”,该字符就成为热键
左图的caption属性为“Ne\\ Picture 设置命令按钮的图片 ➢常用属性 Enabled 能否选择该按钮 Visible 按钮是否可见 Default 默认命令按钮,按Enter将触发Click事件 Cancel 按Esc键时触发该按钮的Click事件 ToolTipText 提示文本(表单的ShowTips应为.T.) 命令按钮组Commandgroup ➢命令按钮组的作用 它是一个包含若干命令按钮的容器。 既可单独操作各命令按钮,也可以对整个容器进行操作。 第一个命令按钮组包括两个竖排的命令按钮,默认名为Commandgroup1。 ➢命令按钮的数目 可通过ButtonCount属性调整按钮数目 ➢命令按钮组的值----Value属性 初始值为1,单击某一按钮,则返回其序号。 若初值为空,则返回命令按钮的Caption属性。 ➢命令按钮组的生成器 ➢编辑命令按钮 激活命令按钮组后,可编辑各个命令按钮 激活方法:右键单击按钮组,选择快捷菜单中的”编辑” 复选框Checkbox ➢复选框的作用 可用复选框指定一个逻辑状态:真、假。 常用于表示逻辑型字段数据或将多个复选框合为一组。 第一个复选框的默认名为Check1。 ➢复选框的外观----Style属性 0 标准样式(方框,右侧为Caption文本) 1 图形按钮(指定Picture属性) 文本按钮(未指定Picture属性) ➢复选框的值----Value属性 若初始值为数值,则1表示选定,0表示清除,2为灰色 若初始为逻辑值,则.T.表示选定,.F.表示清除 ➢复选框的数据源----ControlSource属性 选项按钮组OptionGroup ➢选项按钮组的作用 选项按钮组是包含选项按钮的容器。 用户只能从选项按钮组中选择其中的一项。 第一个选项按钮组的默认名为Optiongroup1。其中的选项按钮名为Option1、Option2、... ➢选项按钮组中按钮的数目 默认包含两个选项按钮 改变ButtonCount属性可以设置选项按钮数目。 ➢选项按钮组的值 Value属性表明用户选择哪一个按钮。 若初值为数值,则返回被选定按钮的序号。(默认为1) 若初值为字符,则返回被选定按钮的Caption属性 ➢选项按钮的值 选择按钮组快捷菜单的“编辑”可以调整个别按钮 Value为数值时,1表示选定,0表示未选定 Value为逻辑值时,.T.表示选定,.F.表示未选定 ➢数据源----ControlSource属性 选项按钮组和选项按钮都有这一属性,一般只设置选项按钮组的数据源。 ➢选项按钮的外观----Sytle属性 0 标准方式,圆圈按钮(默认) 1 图形方式,图形按钮 ➢选项按钮组的边框----BorderStyle属性 0 无 1 固定单线(默认) ➢选项按钮组的生成器 可设置选项按钮的个数,标题,排列方式(垂直、水平)等。 计时器 Timer ➢计时器控件的作用 每隔一定的时间,自动触发Timer事件 可以把一些需反复自动执行的操作放在Timer事件中。 如按秒变化的时钟、动态字幕等。 第一个计时器默认名为Timer1。 ➢表单运行时,计时器对象自动隐藏 计时器控件没有Visible属性 ➢主要属性 Interval 指定计时器事件的时间间隔,以毫秒为单位 Enabled 计时器是否响应用户触发的事件 ➢主要事件 Timer 按Interval指定的时间间隔触发的事件 例8.9:修改例8.1,使封面标题实现由大至小或由小至大的动态变化。 补充例1:建立一个有三个标签的表单,要求label1能显示当前时间,label2显示一个不断变大的文字,label3显示一个由左向右移动的文字。 (timer1.scx) 补充例2:建立一个表单,模拟交通灯。 (timer2.scx) 补充例3:建立一个表单,实现倒计时。 (timer3.scx) 容器Container ➢容器控件的作用 命令(选项)按钮组也是容器,但它们包含的对象是固定的。 Container容器可包含多个不同类型的对象。 第一个容器的默认名为Container1。 ➢在容器控件中放入其它对象 在Container容器中添加对象,要先激活,否则表面上在该容器上,实际却在表单上,只要拖动该容器就会看到其它控件的位置不变。 激活方法:单击右键,在快捷菜单中选择“编辑” ➢容器控件的属性 SpecialEffect 指定控件的外形,0-凸起,1-凹下,2-平面 Enabled 是否响应用户引发的事件 Visible 是否可见 表格Grid ➢表格控件的作用 表格控件属于多重容器类。表格包含列,列又包含列标头和其它列控件。 表格控件可用于显示多行数据,常与表中的数据绑定。 从数据环境中拖出一张表,则自动生成一个表格控件。 第一个表格控件的默认名为Grid1。 ➢表格生成器 表格项、样式项、布局、关系 ➢表间的关系 表格grid的数据源通常都是表,通过设置表间的关系,使表格控件中的记录随着父表当前内容的变化而改变。 ➢关系的设置 方法1:在数据环境中 将父表的关键字段拖至子表的 相关索引字段上,在数据环境中会生成关系对象Relation,若子表相关字段未索引,系统还会自动建立索引。 ➢关系的设置 方法2:在表格控件生成器中 子表就是当前grid控件所用的表,需设置内容如下: 1)父表中的关键字段 相关属性LinkMaster 2)子表中的相关索引 相关属性RelationalExpr ➢表格控件的属性 ColumnCount 指定表格列数 RecordSourceType表格数据源类型 RecordSource 表格数据源 AllowAddNew 允许添加记录 DeleteMark 是否显示删除标记列 Readonly 表格为只读 ➢列(Column)的属性 ControlSource 指定某列的数据源 CurrentControl 为列指定活动控件 Sparse 为.T.时,选定单元格以CurrentControl指定的控件显示,其余以文本显示,否则均以指定控件显示。 ReadOnly 该列只读 ➢列标题(Header)的属性 Caption 列标题 Alignment 对齐方式 ➢如何改变列控件 自动生成表格控件时,根据字段类型会自动生成列控件,要改用其它控件,有两种方法: 1.使用表格生成器 可选控件: C、M型:文本框、编辑框 D型:文本框 L型:文本框、复选框 N型:文本框、微调器 G型:文本框、OLE绑定控件 该设置将改变列的CurrentControl属性和Sparse属性.F. 如果要将列控件改为其它类型,可用手工修改: 2.手工修改 1)激活表格,使之处于编辑状态 2)选择所需控件,在指定列上单击 3)选择该列,设置CurrentControl属性 4)在属性窗口中选择刚添加的控件,设置其数据源 页框与页面Pageframe,Page ➢页框控件的作用 页框是一个包含若干页面的容器。 第一个页框的默认名为Pageframe1,页面名为Page1 ➢页框控件的属性 PageCount 包含的页面数 ActivePage 活动页的页码 Caption 页面标题(选项卡标题) 表单集Formset ➢表单集的作用 表单集是一个包含一个或多个表单的容器。 ➢表单集的创建 步骤1:创建一个表单 步骤2:选择菜单“表单”“创建表单集” 步骤3:在表单集中添加/删除表单,要添加的表单必须是新建的。 ➢表单集的删除 表单集中剩余一个表单时,才可以删除。 ➢表单集的运行 与运行表单类似,用命令DO Form。表单集运行后,所有的表单都被加载,可使用表单的Visible属性或Show、Hide方法实现表单的显示与隐藏。 ➢表单集的释放 Release ThisformSet 或 释放所有表单 超链接Hyperlink ➢超链接控件的作用 从当前位置跳转到Internet或Intranet的一个目标地址上。 第一个超链接的默认名为Hyperlink1 ➢超链接的用法 超链接控件在运行时不可见 通过调用NavigateTo方法实现链接。 ➢如:可在表单上放置一个命令按钮和一个超链接,在命令按钮的Click事件中编写代码: Thisform.Hyperlink1.NavigateTo(“www.sohu.com”) 因篇幅问题不能全部显示,请点此查看更多更全内容