您的位置: 网站首页 > 程序开发 > 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)选择组合框控件,然后设置相应的属性,如下所示。

·    RowSourceType3-SQL语句。

·    RowSourceselect专业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)间隔的范围为02,147,483,647,包括02,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,并设置其属性。

·    Interval60

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\vfp98Wizards文件夹下),选择,然后拖动该窗口左上角的按钮到“书籍资料”选项卡底部,这样就添加了一组维护数据的图形按钮组,如图8-57所示。

8-57   添加的类控件

9)单击“借阅记录”选项卡,在“数据环境”窗口中选择“借阅记录”表,按住该表的标题栏并拖动到选项卡中,则在表单中添加了一个表格控件,如图8-58所示。

8-58  在“借阅记录”选项卡中添加表格控件

10)保存表单为“例8-11并运行,其运行界面如图8-52和图8-53所示。