关于QRtext的问题,急需帮助!!!!(200分)

  • 主题发起人 主题发起人 xulu
  • 开始时间 开始时间
X

xulu

Unregistered / Unconfirmed
GUEST, unregistred user!
1.用QRtext打印字段时,若字段太长,则可设置WordWarp属性为True,分行打印,但时必须把QRtext的HEIGHT设的足够长,因此同时也得把QRBand的HEIGHT设的足够长,但这样设置,就会使打印出的报表每行较宽,比较浪费,也不美观.不知有什么办法可以在报表打印时自动判断字段的长度,若字段长,需折行,则这行较宽,可以放下字段的所有内容;若字段短,一行就够,则这行较窄,可以放下一行的内容即可?
2.在QRtext中,文字会从QRtext的最上部开始排列,如何使QRtext的文字在QRtext中垂直居中?
3.如何在报表中计算合计值,请注意,要计算合计值的字段的单位不一样,如:
计算字段 "数量"的合计,每一项数据的"数量"分别为1台,2具,3吨,1.5吨,11台;
需计算出的合计值显示为12台,2具,4.5吨?
4.如何使用QRshape在报表中画格子?因为在我的使用中,感觉用QRshape实际就是设计的时候画多长,则在运行时显示多长,而我在运行时往往要根据字段的数量,画不同长度的格子,希望得到帮助?
以上四问,每一问为50分.
 
1. 在DetailBand的BeforePrint事件中加入以下语句:

if Length(field1.value)>20 then

begin
QRText.WordWarp:=True;
QRText.Height:=40;
end;
2. 在DetailBand的BeforePrint事件中加入以下语句:
if Length(field1.value)<=20 then

begin
QRText.Top:=(DetailBand.Height-QRText.Height)/2;//
end;
3. ???
4. 动态生成QRShape.
 
2. 在DetailBand的BeforePrint事件中加入以下语句:
QRText.Top:=(DetailBand.Height-QRText.Height)/2;
 
1)
2)
3)你要问的是不是根据报表不同的数据源(recordset)在同一report的合计中
产生不同的显示单位?请举例说明.
 
3)你要问的是不是根据报表不同的数据源(recordset)在同一report的合计中产生不同的显示单位?请举例说明.
 
1.用你的方法,好像是根据所选定字段的第一条数据的长度来设定band的height,而我需要根据不同数据的长度来形成每行宽度不同的表格,我想用循环的方法,如下:但是只能显示整个数据库的最后一条数据,不知程序中哪错了????
table1.first;
while not table1.eofdo
begin
if Length(field1.value)>20 then

begin
QRText.WordWarp:=True;
QRText.Height:=40;
end;
table1.next;
end;
3.第三问的意思是:假设我的数据库中有字段"数量",数据假设如下:
数量
1台
2具
3吨
1.5吨
11台
要求计算合计值,例如显示:

合计

12台,2具,4.5吨
 
顺便提个问题 delphi5 build5.62中好像QRText.WordWarp:=True不起作用怎么办?
 
liuly,谢谢你:
第一个问题已经得到解决了,但第四个问题(就是QRShape的问题),希望能说的详细一些,如何能够动态生成QRShape.最好能有一小段程序的例子;另外第三个问题,我已经设为了两个字段,分别为数量和单位,但不知道下一步将如何进行,能说的再具体点吗?也最好能有一小段程序的例子.
海风:
不起作用就去下载一个新控件吧,QReport的确有太多问题.
 
procedure TForm2.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
var
w,pw:integer;
a:TQRShape;
begin
a:=TQRShape.Create(Self);
a.Parent:=QuickRep1.Bands.DetailBand;
a.Left:=100;
a.Top:=0;
a.Width:=100;
a.Height:=40;
a.Shape:=qrsRectangle;
... ...
end;

 
接受答案了.
 
后退
顶部