fancier(OP&&C/C++)你可以参考 http://expert.csdn.net/Expert/topic/1314/1314396.xml?temp=.6958734 http://expert.csdn.net/Expert/topic/1351/1351063.xml?temp=.9529535 http://expert.csdn.net/Expert/topic/1265/1265250.xml?temp=.2919428 http://expert.csdn.net/Expert/topic/1302/1302834.xml?temp=.9411737 http://expert.csdn.net/Expert/topic/1282/1282681.xml?temp=.8808863不过,我自己试过TQRDBText(已经修改了里面QRCtrls单元中的AddWord过程)、QRmemo都不能解决自动换行的问题。 我自己的解决方法如下: 1.在需要显示换行的字段的地方用TQRMemo替代TQRDBText,并调整好TQRMemo的长度和宽度(显示字段的最大范围); 2.在报表所在的Form上放一个TMemo控件,由它来负责解决换行问题,在TQRMemo所在的band的BeforePrint事件中写代码,具体如下 var i: integer; begin memo1.lines.clear; TQRMemo.lines.clear; memo1.width:= TQRMemo.Width; memo1.lines.text:= ADODataSet1.FieldByName('字段名').AsString; for i:= 0 to memo1.lines.Count - 1 do QRMemo.lines.Add(memo1.lines.strings[i]); end; 只要在需要的地方依上面的方法处理就行。
用QRRichText吧﹕ procedure TQuickReport1.QuickRepBeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin QRRichText1.Lines.Text:=dataset.FieldValues['字段名'].asstring; end;
http://expert.csdn.net/Expert/topic/1314/1314396.xml?temp=.6958734
http://expert.csdn.net/Expert/topic/1351/1351063.xml?temp=.9529535
http://expert.csdn.net/Expert/topic/1265/1265250.xml?temp=.2919428
http://expert.csdn.net/Expert/topic/1302/1302834.xml?temp=.9411737
http://expert.csdn.net/Expert/topic/1282/1282681.xml?temp=.8808863不过,我自己试过TQRDBText(已经修改了里面QRCtrls单元中的AddWord过程)、QRmemo都不能解决自动换行的问题。
我自己的解决方法如下:
1.在需要显示换行的字段的地方用TQRMemo替代TQRDBText,并调整好TQRMemo的长度和宽度(显示字段的最大范围);
2.在报表所在的Form上放一个TMemo控件,由它来负责解决换行问题,在TQRMemo所在的band的BeforePrint事件中写代码,具体如下
var
i: integer;
begin
memo1.lines.clear;
TQRMemo.lines.clear;
memo1.width:= TQRMemo.Width;
memo1.lines.text:= ADODataSet1.FieldByName('字段名').AsString;
for i:= 0 to memo1.lines.Count - 1 do
QRMemo.lines.Add(memo1.lines.strings[i]);
end;
只要在需要的地方依上面的方法处理就行。
procedure TQuickReport1.QuickRepBeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
QRRichText1.Lines.Text:=dataset.FieldValues['字段名'].asstring;
end;
如果要显示两行,在QRRichText中敲回车一次
如果要显示三行,在QRRichText中敲回车两次
依次类推