页框控件(Page Frame) 是一个包含多个页面的容器对象。在表单中,一个页框可以有两个以上的页面,它们共同占有表单中的一块区域。在某一时刻只有一个活动页面,而只有活动页面上的控件才是可见的。
表8-18所列为页框的常用属性。
表8-18 页框的常用属性
属 性 |
说 明 |
ActivePage |
当前处于激活状态的页 |
PageCount |
页框中包含页的数量,默认为2 |
Pages |
可以通过顺序号访问页的数组 |
Tabs |
确定页面的选项卡是否可见 |
TabStretch |
当选项卡宽度不够时,页标题是被剪裁还是分多行显示 |
TabStyle |
页框标签的对齐方式 |
PageOrder |
本页在页框中的第几号位置 |
注意:和其他容器控件一样,必须选择页框,并用鼠标右击弹出的快捷菜单中选择“编辑”命令,或在“属性”窗口的“对象”下拉列表中选择容器。在添加控件前,如果没有将页框作为容器激活,控件将添加到表单中而不是页面中。
表格控件(Grid)类似浏览窗口,它具有网格结构,有垂直滚动条和水平滚动条,可以同时操作和显示多行数据。表格是一个容器对象,和表单集包含表单一样,表格也能包含列。这些列除了包含标头和控件外,每一个列还拥有自己的一组属性、事件和方法程序,从而为表格单元提供了大量的控件。
表8-19所列为表格的常用属性。
表8-19 表格的常用属性
属性名称 |
功 能 |
RecordSource |
指定与表格控件建立联系的数据源 |
RecordSourceType |
指定表格的数据源的类型 |
ColumnCount |
设置表格中的列数 |
ReadOnly |
设置表格的数据是否只读 |
DeleteMark |
指定表格控件中是否显示删除标记列 |
RecordMark |
指定表格控件中是否显示记录选择列 |
ScrollBars |
指定表格控件所具有的滚动条类型 |
SplitBar |
指定表格控件中是否显示拆分条 |
GridLines |
指定表格控件中是否显示水平线和垂直线 |
GridLineWidth |
以像素为单位,指定表格控件中分隔线的粗细 |
GridLineColor |
指定表格控件中分隔线的颜色 |
Backcolor |
指定表格控件的背景颜色 |
续上表
属性名称 |
功 能 |
ForeColor |
指定表格控件的前景颜色 |
AllowAddNew |
指定是否可以将表格中的新记录添加到表中 |
AllowHeaderSizing |
指定表格标头高度在运行时刻能否改变 |
AllowRowSizing |
指定能否人工调整表格中行的大小 |
表8-20所列为表格的常用列属性。
表8-20 表格的常用列属性
属性名称 |
功 能 |
Bound |
指定列对象中的控件是否与其数据源建立联系 |
DynamicFontName |
定义一个表达式,当表格控件刷新时,指定用于显示列对象的字体 |
DynamicFontSize |
定义一个表达式,当表格控件刷新时,指定用于显示列对象的字体大小 |
DynamicForeColor |
定义一个表达式,当表格控件刷新时,指定用于显示列对象的前景色 |
【例8-10】在“学生成绩表”(xscj.dbf)中按照专业进行查询,运行结果如图8-47所示。
图8-47 运行的结果
其操作步骤如下:
(1)新建一个表单,并设置表单的相关属性。
(2)右击表单,在弹出的快捷菜单中选择“数据环境”命令,然后添加“学生成绩表”(xscj.dbf),如图8-48所示。
(3)在表单中添加相应的控件,并按如图8-49所示的位置摆放。
图8-48 添加的数据环境 图8-49 添加的控件
(4)在表单中添加表格控件并右击,在弹出的快捷菜单中选择“生成器”命令,并按如图8-50所示进行设置。
图8-50 设置表格控件
(5)设置完成后,单击“确定”按钮。再次右击表格控件,从弹出的快捷菜单中选择“编辑”命令,然后分别调整每列的宽度,调整完成后的效果如图8-51所示。
图8-51 调整表格控件
(6)选择组合框控件,然后设置相应的属性,如下所示。
· RowSourceType:3-SQL语句。
· RowSource:select专业from xscj into cursor temp。
(7)双击“查询”按钮控件,并编写其Click事件代码。
if empty(thisform.combo1.value)
set filter to
else
set filter to 专业=thisform.combo1.value
endif
thisform.grid1.refresh
thisform.grid1.setfocus
(8)双击“关闭”按钮控件,并编写其Click事件代码。
on key
thisform.release
(9)保存表单为“例8-10”并运行,其运行界面如图8-47所示。
计时器控件(Timer)可以在一定的间隔重复地执行指定的过程,以便处理特定的功能,如显示时钟、跑马灯(移动字幕)、路边的红绿灯等。对于其他一些后台处理,计时器也很有用,如备份数据、打印报表等。
每个计时器都有一个Interval属性,它指定了一个计时器事件和下一个计时器事件之间的毫秒数。如果计时器有效,它将以近似等间隔的时间接收一个事件(命名为Timer事件)。
在使用计时器编程时,必须考虑Interval属性的几条限制。
(1)间隔的范围为0~2,147,483,647,包括0和2,147,483,647,这意味着最长的间隔约为596.5小时(超过24天)。
(2)间隔并不能保证经历时间的精确性。为确保其精确度,计时器应及时检查系统时钟,不以内部累积的时间为准。
(3)系统每秒钟产生18次时钟跳动,虽然Interval属性是以毫秒作为计量单位,但间隔的真正精确度不会超过十八分之一秒。
(4)如果应用程序向系统提交繁重的任务(比如很长的循环、大量的计算,或磁盘、网络、端口的访问),则应用程序不能按Interval属性指定的频率来接受计时器事件。
将计时器控件放置在表单中,只需在“表单控件”工具栏中选择计时器工具并把它拖到表单中即可。
计时器控件有两个主要属性,见表8-21。
表8-21 计时器主要属性
属 性 |
设 置 |
Enabled |
若想让计时器在表单加载时就开始工作,应将这个属性设置为“真”(.T.),否则将这个属性设置为“假”(.F.)。也可以选择一个外部事件(如命令按钮的Click 事件)启动计时器操作 |
Interval |
Timer 事件之间的毫秒数 |
注意:必须记住Timer事件是周期性的。Interval属性不能决定事件已进行了多长时间,而是决定事件发生的频率。间隔的长短应根据需要达到的精度来确定。由于存在一些潜在的内部误差,应将间隔设置为所需精度的一半。
【例8-11】以前面所设计的“书籍资料表”和“借阅记录表”为例,在表单的上部有一标签文字,运行时会自动从左至右移动;表单下部为一页框,“书籍资料”以标签、文本框及命令按钮组的形式设计,而“借阅记录”以表格的形式设计,运行结果如图8-52和图8-53所示。
其具体操作步骤如下:
(1)新建一个表单,并设置表单的相关属性,然后添加数据环境,如图8-54所示。
(2)在表单的上部添加一标签控件Label1,并设置其相关属性。
(3)在表单的任意位置添加一计时器控件Timer1,并设置其属性。
· Interval:60。
图8-52 表单运行界面1
图8-53 表单运行界面2
图8-54 设置表单的数据环境
(4)双击计时器控件Timer1,并编写其Timer事件代码。
Thisform.label1.left=Thisform.label1.left-5 &&每次向左移5个图元
If thisform.label1.left<=-Thisform.label1.width &&若移出表单范围
Thisform.label1.left=Thisform.width &&将左边的距离订为表单的宽度
Endif
(5)在表单的下侧添加一页框控件,并设置相应的属性,如图8-55所示。
图8-55 设置的页框
(6)右击页框控件,在弹出的快捷菜单中选择“编辑”命令,然后单击“书籍资料”选项卡。
(7)在“数据环境”窗口中选择“书籍资料”表的,并拖动到“书籍资料”选项卡中,然后进行相应的位置调整,如图8-56所示。
图8-56 编辑“书籍资料”选项卡中的字段
(8)单击菜单“工具”→“类浏览器”命令,并在此打开相应的类“WizStyle.vcx”(在d:\program files\microsoft visual studio\vfp98的Wizards文件夹下),选择,然后拖动该窗口左上角的按钮到“书籍资料”选项卡底部,这样就添加了一组维护数据的图形按钮组,如图8-57所示。
图8-57 添加的类控件
(9)单击“借阅记录”选项卡,在“数据环境”窗口中选择“借阅记录”表,按住该表的标题栏并拖动到选项卡中,则在表单中添加了一个表格控件,如图8-58所示。
图8-58 在“借阅记录”选项卡中添加表格控件
(10)保存表单为“例8-11”并运行,其运行界面如图8-52和图8-53所示。