在GRID控制中有标题对象(Header Object)、列对象(Column Object)。通常,Header对象用来描述所要显示的表格栏目名称的特征,而列对象则用来提供用户输入的界面,许多人以为列对象的输入界面只能以文本框控制(Textbox Control)来实现,其实不然。文本框控制只是列对象的默认输入界面,使用者完全可以选择其他合适的控制来替代这个默认的输入界面,只不过需要自行加入其他种类的控制(如ComboBox控制、Spinner控制、Checkbox控制等等)到列对象中,加入后修改列对象的有关属性(其中要用到的最重要的列对象属性有CurrentControl特性、Sparse特性以及Visible特性等等)便可利用新的控制所提供的输入界面来进行数据的输入。下面结合一段实例程序来详细说明使用GRID控制可用到的一些高级技巧。
(一) 首先,对例程中所用到的三个数据表文件作简要说明。三个文件中CB_CP.DBF是产品目录库,CB_DD.DBF是生产工作令单库,CB_DY.DBF是期末生产完工情况库,它是例程中用到的主数据文件。为了计算产成品(包括自制半成品)的生产成本,必须对本月投产的产品确定其完工产量以及未完工的在产品数量和在产品的完工程度,其输入数据均保存在CB_DY.DBF中,因此,CB_DY.DBF文件的记录是现成的,而且其“生产对象”字段的内容也是已知的,只是需要往每条记录中输入每种生产对象的完工产量、期末在产品数量以及完工程度等数据。值得注意的是,CB_DY.DBF的“生产对象”字段其实际内容分成两类,一类是产成品、自制半成品的编号即“产品编号”,而另一类则是工作令单的编号即"批号”,若为产品编号的话,根据该值可在产品目录库中找到产品名称,而若是批号的话,则不能直接在产品目录中找到产品名称,而必须先通过该批号值在CB_DD.DBF中寻找对应的工作令单,找到后再根据该工作令单所对应的产品编号值(由CD_DD.DBF文件中的“产品编号”字段提供)搜寻产品目录库从而获得该“生产对象”的名称即产品名称。
(二) 为了完成以上的数据输入工作,同时保证数据输入的方便性,例程采用了GRID控制来设计输入界面:第一栏(Column1)为生产对象,其数据来源于CB_DY的生产对象字段,其栏目标题为“产品编号或工作令单批号”;第二栏(Column2)为产品名称,其数据来源构造比较特殊,设计时采用了IIF函数两重嵌套,表达式为IIF(Upper(Left(CB_DY.生产对象,1))$"BC",CB_CP.名称,IIF(Seek(CB_DD.产品编号,"CB_CP"), CB_CP.名称