为什么动态改变QRShape的高度时,会出现问题?(50分)

  • 主题发起人 主题发起人 yd_cyc
  • 开始时间 开始时间
Y

yd_cyc

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么动态改变QRShape的高度时,会出现问题,而它所在的QRBand的高度则可以动态
改变?
 
Type
TMyQRShape = class(TQRShape)
published
Align;
end;
加在定义部分(只要在你调用之前就可以了).

TMyQRShape(QRShape1).Align := alLeftJustify; // or RightJustify
加在BeforePrint事件里
 
我试过了,编译有错误!
 
出什么问题?
不应该出问题的。描述一下。
 
我的数据库中部分字段比较长,所以要动态改变QRDBRichText的高度,那么QRShape(竖线)
的高度也得变,我先让QRBand的高度等于QRDBRichText的高度(没错),但是QRShape的高
度就有问题了,第一个记录的没错,第二个记录的QRShape的高度长出来许多,不知道你有
没有遇到过这样的问题?
 
噢,这个问题,俺测试一下。
 
没问题呀。
 
找一下你程序的逻辑关系。还有,你是如何设置QRShapre的高度的。
是不是QRShapre.Height:=QRShapr.Height+...
如果是这样,第二次应该是第一次的高度再加...
 
我用的是QRDBRichText.AutoStretch := True;(保证数据库字段过长也可以全部显示)
QRBand.Height := QRDBRichText.Height;
QRShape.Size.Height := QRBand.Height;
QuickRep.Preview;
 
QRShape.Size.Height := QRBand.Height
尝试直接使用QrShapre.Height:=QRDBRichText.Height;
 
我已经试过了,不行!
 
噢,你这个不行,需要在OnNeedData里面写!
呵呵,刚才看走眼了。
注意需要设置QuickReport.Dataset:=nil,然后在OnNeedData里面
qrRichEdittext.Text:=..赋值。
MoreData:=not Query1.Eof;
Query1.Next
 
QRShape & QRBand的高度在哪里写在哪里呢?
 
是加在OnNeedData里吗?
 
我试过了,我所用的数据库有三条记录,QRShape 的高度和第三条记录的高度相同。
 
嗨!这样写:
procedure TForm1.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
begin
QRRichText1.Text:=Query1.FieldByName('Col1').AsString;
DetailBand1.Height:=QRRichText1.Lines.Count*10;
QrShapre.Height:=QRRichText1.Lines.Count*10;
MoreData:=Query1.Eof;
Query1.Next;
end;
 
不好意思,还是不可以,是不是和字体有关?
 
和字体无关,设置你的QuickReport的DataSet为空。
 
我是这样设的呀
 
我是这样设的呀
 
后退
顶部