如何将溢出字段按所要求的方式打印出来(50分)

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

lane

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Quick Report做了一张报表,Detail栏中有一个Qrexpr字段,内容为:A/B
(A,B均为数据库字段),因B在有些记录中可能取值为零,所以当打印到这些记录
时会溢出,反映在打印上就是会将该表达式"A/B"打印出来.但是当此表达式很长时,
会影响后面字段的打印.
我希望当打印到这些溢出的记录时将表达式用"+++"来替代(美观又不影响后续字段),
不知该怎样实现.我试过用该字段的Event:onprint事件,代码大致为:
if A/B overflow then
Qrexpr.expression:='+++', 这样
在Preview时是符合要求的(即会造成溢出记录的为"+++",正常记录的为正常值),
但是正式打印时全部记录都变成"+++"了.
请各位大虾赤脚.
 
如果是一个简单数据集的话,不如定义一个
Calculated Field,在OnGetText中自己计算
A/B,如果B=0,则返回'+++',
否则返回FloatToStr(A/B)。
 
检查一下QRExpr能否接受if/iif语句
 
能否请dwwang再详细解释一下,(我的Detail栏是将一个Query作为Dataset的,且
QuickReport组中没有Calculated Field控件),如何"定义一个Calculated Field"
谢谢.
另外,QRExpr中似乎不能加入if/iif语句.
 
在你的Detail的Query里定义一个Calculated Field,
而不是在QuickReport里。
如果你的Query是不在DesignTime定义Field的,
则可以采用修改SQL语句的办法:
->Select f1,f2,...,'' as dummyField from your table where ...
然后定义DummyField的OnGetText。
 
请问dwwang大虾,我用的是delphi3.0 C/S 版,是在design time定义Query
的,但如何才能在Query里定义一个Calculated Field,我在Query的定义里
没找到下手的地方。
 
RightClick你的Query控件,选择Fields Editor,
就可以定义各种Fields。
如果你在那里没有定义Fields的话,就按照上面说的
第二种办法:
myQuery.SQL.Text:=Select f1,f2,...,'' as dummyField from your table where ...
然后在query的AfterOpen中写:
myQuery.FieldByName('dummyField').OnGetText:=myOnGetText;
定义一个myOnGetText过程为Form的EventHandler:
procedure myOnGetText(Sender: TField;
var Text: String;DisplayText: Boolean);
begin
....
end;
 
RightClick我的Query控件之后,选择Fields Editor, 但navigator Bar 是
灰的,没办法输入Field定义。
Form 的 EventHandler 是不是指 在private 里先声明,然后再写:
procedure myOnGetText(Sender: TField;
var Text: String;DisplayText:
Boolean);
begin
if B=0 then
Text:='+++'
else
Text:=FloatToStr(A/B);
end;

问题太幼稚了,请别见笑。
 
>>RightClick我的Query控件之后,选择Fields Editor, 但navigator Bar 是
灰的,没办法输入Field定义。
这说明你是动态生成的Field,那么就用定义EventHandler的办法吧!
Form 的 EventHandler是在private/public的"前面",
也就是你的Button1Click之类的过程所在的位置.
(我不知道如何描述这个位置:))
在那里定义的procedure自动具有TEvent的属性,从而可以作为
EventHandler.
 
查看Qrexpr的expression属性,写if条件。如:
if(B=0,'+++',A/B)
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
816
SUNSTONE的Delphi笔记
S
S
回复
0
查看
735
SUNSTONE的Delphi笔记
S
后退
顶部