第一次做表控件的朋友应该都会遇到这样的情况:用向导生成了表控件,运行程序以后,所有东西看起来也都很正常,但是在表控件里输入了一行数据之后,一提交,数据就没了;跟踪一下,PAI里的循环居然不会执行,也就是说,屏幕上TC的数据没有会回传给程序的内表。
其实,仔细分析一下代码就可以发现,LOOP循环是对内表执行的,在PBO时,内表还没有数据,则到PAI时,内表也还是没有数据,因此循环被执行。解决方法就是让内表里有数据,这样循环也就可以执行了。所以,一般来说,我们在做带有表控件的程序时,应该在PBO事件的循环输出前向内表中追加若干行,这样在PAI里数据就能回传过来了。
另外,还有人觉得用向导做表控件时,生成的代码太乱,向导会向程序里添加很多个子程序,影响程序的清晰。这个问题解决起来也不难,在创建好程序之后,绘制屏幕之前,向主程序添加下列代码即可:
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
* 表控件对象定义
TYPE-POOLS cxtab.
* 表控件处理程序
INCLUDE tablecontrol_forms.
其实,表控件向导在主程序里添加的子程序都在包含程序 tablecontrol_forms 中定义,如果加入上述语句,表控件向导执行时就不再向主程序添加额外代码,程序看起来就很清晰了。