quickreport中如果字段太长,能否自动进入下一行。(100分)

  • 主题发起人 主题发起人 沸腾一百
  • 开始时间 开始时间

沸腾一百

Unregistered / Unconfirmed
GUEST, unregistred user!
在工程中遇到一个麻烦,打印报表的时候,字段名称太长,
都占用了下一个字段的位置,请问各位高手,能否让这个长字段
在本字段中自动转行,这样只要增加字段的高度就可以了,急盼。
 
autostretch:=true
但是好像不太好用
 
不好用,我试了。
 
不行,只能是截掉。
 
自动增加字段高度是指自动增加行高吗? 不行啊(
 
这个问题以前我也碰到过,如果能在需要换行的地方加上一个‘空格’就可以换行了,可以
考虑在打印每一条记录的时候计算一下字段的长度,在字段值中间加上相应的空格。
 
对了,还有autostretch:=true,wordwrap:=true
 
垃圾qr,不过也要用,手工判断换行吧
 
to jsbhwjg,
能具体点吗?
 
to jsbhwjg,
以你的经验,如果遇到这种情况,你是怎么解决的。
请举例说明
是不是用别的控件?
 
不需要用别的控件,为QRDBTEXT的ONPRINT事件写代码,
VALUE:=AddSpace(Value);
AddSpace(Value)为一个自定义的函数,
功能就是根据Qrdbtext能显示几个字符,在VALUE中加入适当的空格,
如有汉字,还要注意用WIDESTRING转一下
 
to jsbhwjg:
AddSpace(Value)函数的写法,请明示
分值一定全部奉送
 
procedure AddSpace(var s:string;i:integer);
var
k:integer;
begin
for k:=(length(s) div i)do
wnto 1do
insert(#32,s,i*k+1);
end;
如果需要4个字符就换行就象下面
procedure TForm1.QRDBText1Print(sender: TObject;
var Value: String);
begin
AddSpace(Value,4);
end;
参数i的具体值可以根据你的需要设
 
好象不行吧。
 
对了,别忘了AUTOSIZE:=FALSE;
 
to jsbhwjg
感谢,明白。分值先奉送,明天我试一下。
 
不客气,不行告诉我,我把分还给你:)
提醒你一下,注意中文
procedure AddSpace(var s:string;i:integer);
var
k:integer;
s1:WideString;
begin
s1:=s;
for k:=(length(s1) div i)do
wnto 1do
insert(#32,s1,i*k+1);
s:=s1;
end;

 
to jsbhwjg:
是能换行了,可是QRSubDetail1却没有加高,都重叠了,怎么办
 
怎么办,想办法呀。
 
后退
顶部