报表高手请注意了!——请问如下报表如何用QUICKREP做?(我不想用别的控件)! *在线等待* (100分)

  • 主题发起人 Procedure
  • 开始时间
P

Procedure

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如下报表如何用QUICKREP做,我不想用别的控件!
请用代码回答!
数据:
name money
a 321
a 11
a 32
a 88
b 55
b 155
b 13
b 80
报表:
_________________
|___name__|_money|
| |_321_|
| |_11__|
|a |_32__|
|__________|_88__|
| |_155_|
| |_55__|
|b |_13__|
|__________|_80__|
注意这里要使用表格的方式!
分数可以再加!
 
用通用的控件,不是什么都能做到的,变通一下不行吗?
 
这样的报表我见别人做出来过,可能是用的QRSHAP 。 但一定是可以用QUICKREP做出来的!
 
你的这个需求可以完成,但是比较费事。需要在OnNeedData里面写n多的代码
实现思路:
1、以Money列为标准,你有多少行就相当于执行了多少次OnNeedData时间,就是说每次执行OnNeedData事件仅仅打印一个Money行。
2、在打印以前计算出相对于name列的Money的数量,然后动态计算出Name需要打印在那一行上。
3、至于下面的线条,是在Name下放置一个Shape,Money下放置一个Shape,根据是否需要打印来设置Name下面的Shape的Enable属性。
注意:你对QuickReport不太了解,如果你没有用过OnNeedData事件,那么你需要首先弄懂这些。
 
>>请用代码回答!
这个就免了[:D][:D][:D]东西点到为止,见谅!
 
不懂才要学嘛,我都知道了还提什么问题呀!
关于那个ONNEEDDATA事件的确没有用过,如有高手愿听其祥。
在线等待——源码最好!
 
态度不错,不过还是没有源代码,只有理论。[:)]
所谓的OnNeedData事件,是QuickReport提供的高级打印的一个事件,它主要是为了实现自定义打印和非数据库报表的打印。
使用OnNeedData事件,需要设置QuickReport的DataSet为空,然后在它的OnNeedData事件里面给Detail Band里面的控件赋值。
最后根据是否需要打印来设置MoreData的布尔数值。
使用此事件,需要特别注意数据的初始化,如Query等,需要放置在BeforePrint里面进行,不能象平时设置QuickReport的Dataset时不关心,否则会出Bug的。
 
我的想法是不是在PRIVIEW 时动态改变QUICKREPORT内的SHAPE的属性
然后对SHAPE的属性根据NAME值的个数来决定其高度
就是MONEY的高度*相同NAME的MONEY个数.
但我不知道对SHAPE怎么动态控制其精确位置.
VAR X:STRING;
WHILE NOT QUERY1.EOFdo

begin

IF QUERY1.FIELDS[0].VALUE=X then

begin

.........//控制NAME_SHAPE 高度++
end;
else

begin

...........//新建NAME_SHAPE
end;

END IF ;
.............//绘出MONEY_SHAPE
X:=QUERY1.FIELDS[0].VALUE;


QUERY1.NEXT;

end;

这只是一种想法,没有做过。
难道就没有人做过吗?
 
不是动态创建,而是动态设置Shape的显隐,在QuickReport的打印/预览中,控制显隐是通过设置控件的Enabled属性确定的。不是通过Visible属性。
 
我想我没有得到有效的解决办法,就没有哪位做过类似的报表???
此论坛真无人?
 
作个广告,ReportMachine只是设置个属性就可以实现此中报表,要不要试试?
 

Similar threads

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