使用fastreport或report machine如何同时设置行距和行首缩进?(200分)

  • 主题发起人 主题发起人 lionmilk
  • 开始时间 开始时间
L

lionmilk

Unregistered / Unconfirmed
GUEST, unregistred user!
正在设计一个报表,其中一个字段需要控制行距,同时要有行首缩进(即每一段开头空2个空格),使用RichText发现不能设置行距,使用Memo,发现行距是有了,但不能实现行首缩进,晕倒,应该有解决的办法的吧?
曾经试过在RichText中使用Rich.Memo.linespacing=8;好像没有用。
谢谢!
 
我用的 FastReport 3.2.5 用 TfrxMemoView 就是有首行缩进的,就是 ParagraphGap 属性。
 
哦!
我用的是2.5。
看看能不能找到3.2.5。
谢谢!
[:)]
 
安装了3.20,设置行距和行首缩进的问题解决了,发现部分空格被当作回车处理,不该换行的地方换行了。
不知道哪里有3.2.5,不知道3.2.5有没有这个问题?
 
3.2.5 也有这个问题,这其实是组件的自动断字引起的,其实 TfrxMemoView 有一个 WordBreak 属性,但是这个属性的设置成 True 或 False 都没有作用,真不知道为什么!
 
有什么解决的办法吗?比如说自己写一段script来自主控制缩进。
不知道别的报表控件如何。
 
简单的方法,在Memo中写:
“  [RMDS1."字段1"]”
(就是在字段前加两个空格)
 
我的那个字段有几个段落的,呵呵。
 
大虾们,我现在想装fastreport ,步骤如下,
先安装了fastreport 在c 盘 然后运行程序,
select the compiler 选择 c++ builder6
select the fr3 version 选择 professional
select the teechart 选择 teechart6
path to teecart files 没有填写。
为什么老是出现如下错误
recompiled files are in the "
c:/program files/fastreport/fastreport3/libbcb6"
folder
be sure that your delphi/cbc library path is set up correct;
请问如何解决??急等!!!我可以给分的!!!
另外我装report machine也一样装 不上?为什么?
天要绝我么·!!!!!!!!
 
那段提示是错误吗?
我觉得好像不是吧,它是告诉你重新编译的文件在文件夹c:/program files/fastreport/fastreport3/libbcb6中,要在delphi/cbc的library path中加入这个路径吧?!
安装fastreport3.20与2.5不太一样,看看install.txt文件吧。
report machine好像挺容易装的,不过不记得了,按照readme.txt或是install.txt文件的提示安装就可以了。
 
我用fr2.46的版本,我加了首行缩进的功能。
 
请问szlbz如何加的,改源代码吗?
谢谢!
 
改源码的,主要改了TfrMemoView.Draw这个过程,并增加了ParagrapGap变量。
procedure TfrMemoView.Draw(Canvas: TCanvas);
var
i,newdx: Integer;
OldScaleX, OldScaleY:do
uble;
fs: integer;
//2002.7.25 LBZ
Memo_t: TStringList;
function sp(n:integer):string;
var j:integer;
s:string;
begin
s:='';
for j:=1 to ndo
s:=s+' ';
sp:=s;
end;
begin
//将首行加上N个空格实现首行缩进
if ParagrapGap<>0 then
begin
if Memo.Count>0 then
begin
Memo_t := TStringList.Create;
Memo_t.Assign(Memo);
for i:=0 to Memo_t.Count-1do
begin
Memo_t:=sp(ParagrapGap)+trim(Memo_t);
end;
Memo.Assign(Memo_t);
Memo_t.free;
end;
end;
//
 
高手!
我研究了一下fastreport3.2.5的script
我写了下面一段代码
s:=<&quot;field1&quot;>
i:=1;
while(i<=length(s))do
begin
if s=#10 then
insert(' ',s,i+1);//' '为4个空格
i:=i+1;
end;
memo7.text:=s;
但是插入的四个空格缺变成了回车!!
我也试过插入四个#32,也变成了回车。
只要是2个空格,都会被当成回车处理!!???
插入一个空格倒是没问题。
看来还是得改源代码。
谢谢!
今天值班,明天试试!
 
不要以为我在灌水 真的好想有人和我交流以下啊!!!!!
有人愿意帮助我么?加我QQ 381786877 加好友请留言
有人愿意和我交流么?加我QQ 87219720 加好友请留言
自学过 VB ,PHP ,ASP DELPHI ,JAVA ,SQL SERVER ,MYSQL
[:)]强烈希望编程高手指教
 
哇,真难找呀,找了老半天才在report machine中找到TfrMemoView.Draw这个过程,
还需要在TRMMemoView的public部分声明ParagrapGap变量
发现除了TfrMemoView.Draw这个过程,还要修改下面几个过程:
TRMMemoView.DefineProperties
TRMMemoView.SetPropValue
TRMMemoView.GetPropValue
TRMMemoView.SaveToStream
编译
好容易在对象查看器中可以看见ParagrapGap,正欲狂喜,却发现将ParagrapGap设为2回车,又变回0,如果设为2不回车,点预览,就会提示
Access violation at address ×××××× in module 'DclRMachine7.bpl'.Read of address 00000000.
???!!!
还要什么地方要改吗?
还望szlbz指点,谢谢!
 
还有TRMMemoView.LoadToStream
 
TRMMemoView.LoadToStream中加入
ParagrapGap := RMReadInteger(Stream);
问题依旧,仍然无法修改ParagrapGap的值。
其它地方我是这样修改的:
TRMMemoView.Create中加入ParagrapGap :=0;
TRMMemoView.SaveToStream中加入RMWriteInteger(Stream, ParagrapGap);
TRMMemoView.DefineProperties中加入AddProperty('ParagrapGap', [RMdtInteger], nil);
TRMMemoView.SetPropValue中加入else
if Index = 'ParagrapGap' then
ParagrapGap := Value
TRMMemoView.GetPropValue中加入 else
if Index = 'PARAGRAPGAP' then
Result := ParagrapGap
 
真是奇怪,如果我在TRMMemoView.Create中将ParagrapGap :=2;确实可以实现缩进!!
然而无法在设计报表时修改这个PragrapGap的值奇怪了?
郁闷中......
 
我也是修改了这此。你可以将RM删除,并重新编译RM,然后再重装试试!
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
930
DelphiTeacher的专栏
D
后退
顶部