大狭,救一救小弟!!!难度很大的问题:报表控件能否实现横栏是动态的,竖栏是也动态的,且横栏中又包括上下栏(例如:合计、合计|其中1、合计|其中2)的情况,请给出

没有例子,真不好办啊!
 
to boyis11:
我最后问你的问题你还没说呢。
例子?太长了,而且我那个程序是和数据环境相关的,你拿到例子也没法执行。
时间长了,两年没有动过,源码不在手边,我也记不清具体写法了。
大概给你谈一下思路吧——
简单地说,这个问题最主要的就是如何用代码创建并定下QuickRep上各个控件的正确位置。
首先,各个Band可以事先放好,省得自动生成了。每次生成新报表的时候先用一个循环把
每个Bnad里的所有东西Free掉。其实象Title栏里的那些控件倒是可以不必每次都重建,
给它们起个好记的名字,然后修改其中的内容就行了。FooterBand之类的也和Title类似。
最关键的是HeaderBand,它只要定下来,DetailBand也就随之而定了。
比如根据你在667094贴子里给出的要求,你可以把标题栏的内容表示成如下的字符串:
{[序号][上月结存][本月收入[收入1][收入2]]...}
解析这个字符串,取出相邻两个左右中括号之间的字符,这就是一个QRLabel,因为还要有边框,
所以这同时也有一个QRShape。遇到左括号开始、右括号结束一个项,在连续遇到第二个左括号
的时候进入该项的子项,很明显,这中间用到了递归,最终形成一棵树。在每一个节点项的处理
过程中从一个既定的左侧起始位置(可以是0,也可以是个系统参数,由你自己来定)开始,顺序
放置各个控件,中间只要保证记录下当前项的座标,放好一项进行相应的调整,以此类推……
为此,最好要写一个自己的类代表树中的每一项,这个类主要包括一个QRLabel,一个QRShape,
这个项的座标、大小等。座标最好就以QRShape左上角的位置为准,因为QRLabel的座标可以相对这个
边框而定,至于它们中间留下多大的空隙可以用系统参数决定,用参数做的好处是你可以利用它调整
整个报表所占的宽度,这在字段项特别多以致一行显示不下的时候很有用。
还要有一个类,就是代表这棵树的(或者说这个Band),其实它的主要作用就是记录下你动态生成的所有控件,
将来删除的时候要用到。当然它还可以有更大的作用,如进行报表总体的调整(因为必然要扫描整棵树)。
它也要记录下该Band的高度、其中的报表控件实际占据的宽度等总体信息(在调整报表水平居中时有用)。
另外你会碰到的一个重要问题就是QRLabel的垂直居中显示和换行显示问题。为了垂直居中你要先统计出
整个Band所占的行数,就是树的层数。还要有函数计算每一节点所占的行数,并且同时必须考虑上下留出
的空隙共同来确定一个QRLabel的纵座标。实现折行显示的时候也有些麻烦,好在大富翁里有这样的贴子。
HeaderBand的最后一个重要问题就是要由它给出DetailBand里各项的横座标位置。
其实到这一步已经没什么难度了,就是HeaderBand里所有最末层叶子项的位置,
把它们取出来就行了,然后DetaiBand的界面处理就与之类似,并且还要简单多了。
至于字段内容的关联,可以同样用一个字符串把所有的字段名按实际顺序传过来。
你的667177那个贴子说得也不甚明白,“一”,“2”那些是什么?是分组吗?
不过既然是三个表里取出来的,肯定要用到QuickRep的OnNeedData事件,
DetailBand里不要用QRDBText,还是用QRLabel,其中的内容在该事件里自己填进去就行了。
——希望上面这些内容对你能有所启发。
 
To boyis11:
果然不出我所料,就是多层表头且层数不定的,用Ehlib没错的,用动态创建Column列的
方法绝对简单,Ehlib还支持一页显示不下所有的列时时自动分页显示
 
对,现在就是用Ehlib来作了,它的功能真的非常强大,即支持横栏的分页又支持竖栏的分页,看来饭碗可能保的住了。^-^
但是Ehlib的打印予览好象有BUG,在把‘垂直’这一项选中是会报错,不知到大家用时,怎么解决的?
 
Ehlib?是第三方控件吗?
 
to balaschen
对于Ehlib,你可以说详细点吗?谢谢!
初来乍到,请各位多多帮助!
 
Ehlib是第三方控件
 
我要EHLIB控件,谢谢
gbyahoo@21cn.com
 
TO:kagemaru
///恕我直言:不应该深入研究这种问题,费时费力并且没什么意义。
//如果是市场部提给技术部提出这种需求,应该狠狠的给他们提意见,给他们解释中国式
//报表的落后和给编程带来的复杂度,给用户宣传标准报表让他们适应这种方式。。。
//我以前就是这么做的,而且成功了:)
能将你将给他们的理由告诉我吗? 想跟你学一招!!!![:)]


 
F1Book怎么用?
 
想知道,一页纸打不下,怎么办。
 
打在下一页好了,你说对不?
 
我也要EHLIB控件,谢谢
qinyu1979@etang.com
 
我写了这么一个程序,也是各户要求的,如要的话发邮件
maochan@63.net
 
我也想要ehlib控件,如果有谁有,或知道该控件可以在那下载到?请

Mail:czhohailiuzh@sohu.com谢谢!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2473947
我發發貼子,你把分給我,我再告訴你動態的怎么做,如何?
 
Ehlib
到这里下载
http://www.51delphi.com/delphi/index
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
892
DelphiTeacher的专栏
D
I
回复
0
查看
633
import
I
顶部