您的位置: 网站首页 > 程序开发 > Visaul FoxPro程序设计 > 第8章 表单与控件设计 > 【8.4.5 页框、表格和计时器的使用】

8.4.5 页框、表格和计时器的使用

 

8.4.5  页框、表格和计时器的使用

1.页框

页框控件(Page Frame) 是一个包含多个页面的容器对象。在表单中,一个页框可以有两个以上的页面,它们共同占有表单中的一块区域。在某一时刻只有一个活动页面,而只有活动页面上的控件才是可见的。

表8-18所列为页框的常用属性。

表8-18  页框的常用属性

属    性

说    明

ActivePage

当前处于激活状态的页

PageCount

页框中包含页的数量,默认为2

Pages

可以通过顺序号访问页的数组

Tabs

确定页面的选项卡是否可见

TabStretch

当选项卡宽度不够时,页标题是被剪裁还是分多行显示

TabStyle

页框标签的对齐方式

PageOrder

本页在页框中的第几号位置

注意:和其他容器控件一样,必须选择页框,并用鼠标右击弹出的快捷菜单中选择“编辑”命令,或在“属性”窗口的“对象”下拉列表中选择容器。在添加控件前,如果没有将页框作为容器激活,控件将添加到表单中而不是页面中。

2.表格

表格控件(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所示。

3.计时器

计时器控件(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所示。