十一。除了交互式向表格中添加控件外,也可以通过编写代码在运行时添加控件。使用 addcolumn方法向表格中添加列,addobject方法向表格列中添加对象,removeobject方法删除表格中的对象。设置 allowheadersizing和allowrowsizing属性为。T.,使运行时可改变表头和行的高度。
十二。设置表格的记录源: 如果需要在表格中显示或修改表文件的内容,必须在设计时为表格指定数据源,方法如下:选择表格,然后在"属性"窗口中选择 recordsourcetype属性。如果我们将表格的recordsourcetype属性设为"1-别名",然后选择recordsource属性,输入一个表文件名作为属性值,则在包含该表格的程序运行时,该表文件自动打开,其中的记录显示在表格中。
十三。设置列数据源:如果在列中显示一个指定的字段,则可为该列单独设置数据源。首先,右击表格,选"编辑"命令,然后单击选中要设置数据源的列,在"属性"窗口中将其controlsource属性设置为相应的字段名。
十四。添加记录:表格(grid)控件有一个非常重要的属性:Allowaddnew.在设计阶段,如果我们将表格的allowaddnew属性设为。T.,则在运行时,当用户选中了表格中显示的一条记录,并且按一下向下的方向键,则在作为表格数据源的表文件中就会添加一条空白记录。如在程序代码中使用append blank或insert等命令来添加新记录,则应将表格的allowaddnew属性设为。F
十四。创建一对多表单:表格常见的用途之一是当表单中的文本框显示父表记录时,表单显示子表记录;当用户在父表中浏览记录时,表格中显示的子表的记录也随之变化。
Visual FoxPro基础教程完整版
1.具有数据环境的一对多表单:
(1).从"数据环境"中的父表将需要的字段拖动到表单中(拖字段)
(2).从"数据环境"中将相关的子表拖到表单中(拖动"数据环境"中表的标题到表单中,自动生成一个表格,该表格的数据源等属性均不用另行设置了。要牢记)
2.没有数据环境的一对多表单:
(1).在表单中加入若干个文本框,分别设置文本框的controlsource属性为主表的相应字段。
(2).在表单中添加一个表格,将表格的recordsource属性设置为相关表(子表)的名称。
(3).设置表格的linkmaster属性为主表的名称。
(4).设置表格的childorder属性为相关表中索引标识的名称,索引标识名和主表中的关系表达式相对应。
(5).将表格的relationespr属性设为联接相关表和主表的表达式。例如:如果childorder标识以"KHXM"建立的索引,应将relationexpr也设置为相同的表达式。
十五。表格生成器:
1. 右击表单上的表格控件,在快捷菜单中选"生成器"命令,可以启动"表格生成器".
2.在"表格生成器"的"表格项"选项卡中,可以在"数据库和表"列表中选择一个默认目录中的数据库或表;若想打开其他目录中的数据库或表,可单击该列表框右侧的"…",在弹出的"打开"对话框中选择一个表打开。打开表后,VFP会自动将其所有字段放入"表格项"选项卡的"可用字段"列表中,用户可以选择所需字段添加到"选定字段"列表中。使用其中的双箭头按钮可将所有可用字段一次全部添加到选定字段列表中。如图43
3.在"样式"选项卡中,VFP提供了5种样式,其默认值为"保留当前样式",另外4种样式为专业式,标准式,浮雕式和账务式,当选择其中一项时,在对话框左侧会预览出其效果。如图44
4.在"布局"选项卡中,可以调整和设置行与列。拖动列标题的右边线可调整列宽;拖动行的下边线可调整行高;在"标题"文本框"中可为列设置其caption(标题)属性;在"控件类型"列表框中可改变列的控件类型。如图45
十六。例:按性别和职称过滤编辑"职工档案"表的数据
1.新建一个表单,将其caption属性设为"表格的应用",autocenter设为。T.
2.向表单中添2个label控件,将它们的caption属性分别设为"性别"和"职称",然后向两个label控件后分别添加两个组合框控件combo1和combo2,如图46
3.右击表单空白处,选"数据环境"命令,将"职工档案。DBF"添加到表单的数据环境中。
拖动"职工档案。DBF"的标题栏到表单空白处,即自动生成一个表格。注意:此处一定要拖动数据环境中表的标题栏,如果拖动的是表中的字段,则在表单上生成的是文本框和标签。
5.在表单中适当调整表格的大小,并将该表格的name属性改为grid1(为了在程序代码中引用方便),调整后的界面如图48
6.选中组合框combo1,在"属性"窗口中将其rowsourcetype属性改为"1--值",再选中rowsource属性,在上方文本框中输入值:"男,女",如图49.
同样方法,将combo2的rowsourcetype属性设为"1--值",将rowsource属性设为"教授,讲师,副教授".注意:输入rowsource属性值时,逗号分隔的是要在组合框中显示的每一个选项,且必须用英文标点。
7.编写代码:
*combo1的interactivechange事件(用鼠标选择列表项时产生的事件)代码:
set filter to 职工档案。性别=alltrim(thisform.combo1.value)
thisform.grid1.refresh
*combo的interactivechange事件代码:
set filter to 职工档案。职称=alltrim(thisform.combo2.value)
thisform.grid1.refresh
8.保存并运行表单,可发现,当我们在组合框中选择时,比如我们在combo1中选择了"男",则在表格中就将"职工档案。DBF"中的男性记录列出来。
9.分析:此例中,从数据环境中拖动所需的表到表单上,即自动生成表格,且该表格的rowsourcetype和rowsource等属性都不必再设置, 系统自动将其recordsourcetype和recordsource属性设置为生成这个表格的表文件"职工档案。DBF")
Visual FoxPro基础教程完整版