求教: 如何根据数据值的不同来更改报表字体的属性?

比如在detailband1里面放一个QRDBText,连接到字段k
如果k=1,那么就把QRDBText的字体属性改变为斜体,
否则按原先设定的字体显示。
请高手们不吝赐教!
[106 byte] By [xiaoerliao-猪猪永] at [2008-1-9]
# 1
好久好久没有用QuickReport了. 我看看,应该没有问题
sanmaotuo-老冯 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 2
哈哈,你总是有办法
xiaoerliao-猪猪永 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 3
重温旧梦,刻苦钻研。搞定。

procedure TQuickReport.QuickRepNeedData(Sender: TObject;
var MoreData: Boolean);
begin
MoreData := True;
//我这里是演示偶数行变换字型,你根据自己的情况改变一下条件。
//如:QRDBText.DataSet.FieldByName('K').asInteger = 1
if QRDBText.DataSet.RecNo mod 2 = 0 then
QRDBText.Font.Style := [fsBold, fsItalic, fsUnderline]
else
QRDBText.Font.Style := [];
QRDBText.DataSet.Next;
if QRDBText.DataSet.Eof then MoreData := False;
end;

procedure TQuickReport.QuickRepBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
QRDBText.DataSet.First;
end;

注意事项:

不要设置QuickReport的DataSet属性.只设置QRDBText的DataSet和DataField属性.
sanmaotuo-老冯 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 4
谢谢!我研究一下!
xiaoerliao-猪猪永 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 5
我这里不行,字体没有改变,是否哪里出问题?

procedure TFrm_Rpt.QuickRt_dlNeedData(Sender: TObject;
var MoreData: Boolean);
begin
MoreData := True;

if QRDBText22.DataSet.FieldByName('K').asInteger = 1
then
begin
QRDBText22.Font.Style := [fsBold, fsUnderline];
QRDBText22.Font.Size:=10;
end
else
begin
QRDBText22.Font.Style := [fsItalic];
QRDBText22.Font.Size:=9;
end;
QRDBText22.DataSet.Next;
if QRDBText22.DataSet.Eof then MoreData := False;

end;

procedure TFrm_Rpt.QuickRt_dlBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
QRDBText22.DataSet.First;
end;
xiaoerliao-猪猪永 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 6
你先不忙改变条件, 把我的演示原封不动的执行一下, 看看是不是有效果, 好吗?
sanmaotuo-老冯 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 7
我试试看
xiaoerliao-猪猪永 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 8
一样啊,还是不行。
这2个过程在哪个条件下激活?
我是直接在主界面的一个菜单里面直接 Frm_rpt.QuickRt_dl.Preview; 的
xiaoerliao-猪猪永 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 9
还是得打印出来才能改变字体?
xiaoerliao-猪猪永 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 10
我是直接在主界面的一个菜单里面直接 Frm_rpt.QuickRt_dl.Preview; 的

===

这样是对的。没有问题的。奇怪了, 没有其他的什么设置了啊。显示出来的记录条数是不是正常的?
sanmaotuo-老冯 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 11
是正常的
xiaoerliao-猪猪永 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 12
不要设置QuickReport的DataSet属性 这个工作做了没有?
sanmaotuo-老冯 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 13
你是说把QuickReport的dataset属性删掉?
xiaoerliao-猪猪永 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 14
对的/
sanmaotuo-老冯 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 15
呵呵,行了!!!
thanks!!

我开始以为你指的是在那2个过程里面不要设置属性。
xiaoerliao-猪猪永 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 16
马上结帖!谢谢老冯
xiaoerliao-猪猪永 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 17
呵呵,不客气
sanmaotuo-老冯 at 2007-10-19 > top of Msdn China Tech,Delphi,VCL组件开发及应用...