高人指点FastRepor,不是很难,没有主细表,如果能帮我解决问题另开贴给(400)分。我怕你们解决不了我的问题,所以就先不把分丢出去先。(0分)

对于完全动态的报表,我那时是这样子的:
事先你肯定要知道有多少数据的。
然后计算长度等,知道长度后就可以计算页数了。
我是在生成报表的时候一页一页添加报表页的。添加页的时候写入当前是几页,共几页。
办法比较土,但没想到好的办法
 
QuickRep1.PageNumber
它就有,,,为什么FR没有呢。
不可能寒松大侠想不到吧,肯定有属性的,那有那么麻烦的啊
 
你不需要晓得是多少页的吧,在你的那个()里填上[PAGE#]就是当前页数了
填上[TOTALPAGES]就是总页数了。
 
哇,高手就是高手,几个字母就搞定,,
arnew,痛苦吧。呵呵 :(
 
app2001 ty123
差一个了,报表时发现字符数量超过多少个时换行,要怎么做。
如果不换行的话,就太长了,不好看,对吧。。。。。。。
 
app2001 ty123
明天开贴给你们分每人两百,谢谢了啊
报表时发现字符数量超过多少个时换行,要怎么做。
如果不换行的话,就太长了,不好看,对吧。。。。。。。
你们是怎么做的?如果没做过,给我点思路,我自己来吧。问到自己都不好意思了。:)呵呵
 
>>如果用数据库来做的话。怎么让表达式会自动换行。
不明白什么意思。
>>这个( )里又是如何用变量来取数呢?
你用过FR没有?先假设你用FR做过报表。
-----------------
在memo中写入:
单位:( [YourQuery."YourDataField"]) 就可以了。 其中“[]”为变量。
如果你没有用过FR,我惨了,得敲半天字。
-------------------
1. 在Form上放frReport、frDBDataSet、Query等组件并关联数据库形成记录集(SQL)
2. 双击frReport进入设计界面
3. 拉一个Page header band,再拉3个memo放到这个band上,3个memo分别对应
单位:( ) 、第( )页、 总计( )页,其中“第( )页” 用第( [Page#])页;“总计( )页”用 总计([TotalPages] )页。注意:此时应该用Two-passReport(File-->Report options...
-->选中Two-pass report)
4. 拉一个Master header band,再拉几个memo放到这个band上,分别对应“名字”...
5. 拉一个Master Data band,再拉几个memo放到这个band上,分别对应“名字”的数据...
注意:Master Data band的数据源应选“frDBDataSet1”

不好意思,后面的没看到,狂晕,呵呵。。。写得真详细真是辛苦了。。。
 
哦,那我就指望你了,千万别让我等成“望夫崖”就好了,嘿嘿
 
换行的话,你如果没有汉字话,就可以这样来试一下
只要设置一下属性就可以了!
band:stretched=true;
memo:wordbreak=false;wordwrap=true
 
为了不辜负你的重奖,我现在给你拼老命了,下面是我找到别人的办法!
解决中文换行乱码 ,在fr_class 查找 WrapLine 过程,替换为下面的过程,就
可以解决。
procedure WrapLine(const s: wideString);
//解决中文换行乱码 ZWZ
var
i, cur, beg, last, LoopPos: Integer;
WasBreak, CRLF: Boolean;
begin
CRLF := False;
LoopPos := 0;
for i := 1 to Length(s)do
if (s =#10) or (s=#13) then
// if s in [#10, #13] then
begin
CRLF := True;
break;
end;
last := 1;
beg := 1;
if not CRLF and ((Length(s) 〈= 1) or (WCanvas.TextWidth(s) 〈= maxwidth)) then
OutLine(s + #1)
else
begin
cur := 1;
while cur 〈= Length(s)do
begin
if (s[cur] =#10) or (s[cur]=#13) then
// if s[cur] in [#10, #13] then
begin
OutLine(Copy(s, beg, cur - beg) + #1);
while (cur 〈 Length(s)) and
((s[cur] =#10) or (s[cur]=#13))
// (s[cur] in [#10, #13])
do
Inc(cur);
beg := cur;
last := beg;
if (s[cur] =#10) or (s[cur]=#13) then
// if s[cur] in [#13, #10] then
Exit else
continue;
end;
if s[cur] 〈>
' ' then
if WCanvas.TextWidth(Copy(s, beg, cur - beg + 1)) >
maxwidth then
begin
WasBreak := False;
if (Flags and flWordBreak) 〈>
0 then
begin
i := cur;
while (i 〈= Length(s)) and
not ((s = ' ') or (s = ' ') or (s = '.') or (s = ',') or(s = '-'))do
//not (s in spaces)do
Inc(i);
b := BreakWord(Copy(s, last + 1, i - last - 1));
if Length(b) >
0 then
begin
i := 1;
cur := last;
while (i 〈= Length(b)) and
(WCanvas.TextWidth(Copy(s, beg, last - beg + 1 + Ord(b)) + '-') 〈= maxwidth)do
begin
WasBreak := True;
cur := last + Ord(b);
Inc(i);
end;
last := cur;
end;
end
else
if last = beg then
last := cur;
if WasBreak then
OutLine(Copy(s, beg, last - beg + 1) + '-')
else
if s[last] = ' ' then
OutLine(Copy(s, beg, last - beg)) else
begin
OutLine(Copy(s, beg, last - beg));
Dec(last);
end;
if ((Flags and flWordBreak) 〈>
0) and not WasBreak and (last = cur - 1) then
if LoopPos = cur then
begin
beg := cur + 1;
cur := Length(s);
break;
end
else
LoopPos := cur;
beg := last + 1;
last := beg;
end;
// if s[cur] in spaces then
last := cur;
if s[cur] = ' ' then
last := cur;
Inc(cur);
end;
if beg 〈>
cur then
OutLine(Copy(s, beg, cur - beg + 1) + #1);
end;
end;
 
呵呵,错了,使用那个函数是在知道总页数的情况下才能使用的,如果你在报表开始要多少页数需要根据数据量来计算的话是不能用【page】这个东西的。
这个函数幼儿园的人都知道,我会不知道用?^_^
 
if not CRLF and ((Length(s) <= 1) or (wCanvas.TextWidth(s) <= maxwidth)) then
这个wcanvas编译不过,要怎么弄?
 
你仔细看一下就明白了,我拷给你的文件中所有的“<”是全角符,当然不能编译通过了,你只要把这段代码中的全角“<”替换成半角的“<”,就可以通过了。
 
呵呵,我当时没看明白,是改FR的源代码呀。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2223752(app2001请进来领分)
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2223758(ty123请进来领分)
 
新的问题---->
预览时点击“查找”"保存"按钮,不会立即出现“查找”对话框,切换一下窗口就出现啦,这是什么原因呀?是电脑问题还是控件问题?
我在delphi6.0里遇到了。在delphi7.0就不会,是不是有bug? 我的delphi6装的是一台机delphi7.0是另一台机
还有为什么我的是英文的,不是中文的(刚装完时),后来乱弄又变成中文的,再后来又弄到英文去了,奇怪
text自动折行后,折行后的内容看不到了,高度不会增长为什么?
谢谢
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
974
SUNSTONE的Delphi笔记
S
S
回复
0
查看
962
SUNSTONE的Delphi笔记
S
S
回复
0
查看
784
SUNSTONE的Delphi笔记
S
顶部