参考帮助中“开发指南->报表接口编程->编程定义报表模板”部分,只要设计器能设计出来,就可以用代码定义出来。帮助中会给出相关的例子,请认真阅读帮助并参考对应编程语言的例子代码。另提供了自动生成报表模板源码的功能,通过自动产生的源码学习报表模板的编程接口。
参考帮助中的“编程参考->编程组件对象模型”部分。查看此图可以很好理解报表中的各种对象之间的关系。
如何在帮助中查询某个接口、属性或方法等相关说明:打开Grid++Report的帮助文档后,选择索引页面,在其下的编辑框里输入要查询的关键词 
请参考帮助中的“开发指南->报表动态数据->用代码提供参数化数据”部分
打开报表设计器程序后,执行菜单“文件->生成报表模板定义源代码...”即可。通过查看自动生成的源码学习报表的编程接口,知道对应的报表元素应该使用哪个属性或方法进行定义。 
方式1、把所有可能的明细网格列都定义出来,然后用代码根据条件设置列的可见性(Visible)属性。
方式2、首先明细网格不定义任何列,根据当前环境参数把需要显示的各个列用代码增加到明细网格中。
参考帮助中“开发指南->报表接口编程->编程定义报表模板”部分,只要设计器能设计出来,就可以用代码定义出来。帮助中会给出相关的例子,请认真阅读帮助并参考对应编程语言的例子代码。
应该从IGRColumnTitle.TitleCells属性中获取列的显示顺序,即IGRColumnTitle.TitleCells的各个集合对象的顺序与列的显示顺序保持一致,如果是多层表头,这里就有树形关系,需要根据IGRColumnTitleCell.SubTitles 属性进一步获取下一级的各个标题格。IGRDetailGrid.Columns中的集合对象的顺序与列的显示顺序不一定保持一致。

FAQ中没有解决问题,请查看其它技术支持方式。这里常见问题解答(FAQ)内容也全部包含在Grid++Report的帮助文档中,开发者一定要善于查看软件安装后的产品帮助文档。