unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QuickRpt, QRCtrls, ExtCtrls, DB, ADODB, StdCtrls;
type
TForm1 = class(TForm)
ADOTable1: TADOTable;
QuickRep1: TQuickRep;
DetailBand1: TQRBand;
meCutWord: TMemo;
QRDBText2: TQRDBText;
QRShape1: TQRShape;
QRDBText1: TQRDBText;
Label1: TLabel;
QRShape2: TQRShape;
QRLabel1: TQRLabel;
procedure QRDBText1Print(sender: TObject; var Value: String);
procedure FormCreate(Sender: TObject);
procedure DetailBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
procedure QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
procedure DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
private
{ Private declarations }
public
{ Public declarations }
hhh: array of Extended; // 用来记录每条记录扩充的高度
end;
const
MAXLEN= 21;
var
Form1: TForm1;
rows : integer;
implementation
{$R *.dfm}
(* DetailBand1AfterPrint, QuickRep1BeforePrint ,DetailBand1BeforePrint
都是用来当多行显示的时候,qrdbtext将向下扩展,这时默认情况下,qrshape是不会向下扩展的,
上述三个处理就是用来解决这个问题的。
此外,还用到 rows : integer;
hhh: array of Extended;
setlength(hhh, 1000); //1000是代表的记录的总数,这里用1000是一个大概的表示。
//可以的话应该精确表示,以避免空间的浪费
quickRep1.Prepare;
*)
procedure TForm1.QRDBText1Print(sender: TObject; var Value: String);
var
I: Integer;
text:TQRDBText;
begin
//解决中文多行显示的问题。
//dbtext.autosize:= false;
//dbtext.autostretch := true;
//dbtext.wrap := true;
text := sender as TQRDBText;
meCutWord.Font.Assign(text.Font); // 指定字型
meCutWord.Width := text.Width;// 指定寬度
meCutWord.Lines.Clear;// 清除上一次的東西
meCutWord.Lines.Text := Value; // 把 value assign 進去
Value := meCutWord.Lines.Strings[0];
for I := 1 to meCutWord.Lines.Count - 1 do
begin
Value := Value + #13 + meCutWord.Lines.Strings[i];// 逐行取出再塞回去
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
setlength(hhh, 1000);
QuickRep1.Prepare;
quickRep1.PreviewModal;
end;
procedure TForm1.DetailBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
hhh[rows] := QuickRep1.bands.DetailBand.Expanded;
rows := rows + 1;
end;
procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
var
i:integer;
begin
rows := 1;
for I := 0 to quickrep1.Bands.DetailBand.ControlCount - 1 do // Iterate
begin
if QuickRep1.Bands.DetailBand.Controls[i] is TQRShape then
(QuickRep1.Bands.DetailBand.Controls[i] as TQRShape).Height :=
QuickRep1.Bands.DetailBand.Height;
end; // for
end;
procedure TForm1.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
var
i:Integer;
begin
for I := 0 to quickrep1.Bands.DetailBand.ControlCount - 1 do // Iterate
begin
if QuickRep1.Bands.DetailBand.Controls[i] is TQRShape then
begin
(QuickRep1.Bands.DetailBand.Controls[i] as TQRShape).top := 1;
(QuickRep1.Bands.DetailBand.Controls[i] as TQRShape).Size.Height :=
QuickRep1.Bands.DetailBand.Size.Height + hhh[rows];
end;
end;
end;
end.
分享到:
相关推荐
Qreport 非常 好用,易用,易编写报表
Qreport 4.05
例子 require 'qreport/time_parser' p = Qreport::TimeParser.new p.now = Time.parse('2011-03-10T15:10:37-06:00') puts p.parse("now").to_TimeRange # => "nil 2011-03-10T15:10:37.981304-06:00 ... nil ...
Qreport 4.05
人事管理.显示mssql2000的image字段, Qreport复杂报表打印
Delphi中用到的报表控件QReport是外国人写的,是世上公认的优秀报表控件之一,但它只支持英文及当前操作系统的语言,例如在中文系统上只支持中文与英文,当数据库中的字体是特殊的繁体或日文时就出现多个问号。...
QReport 4.03 for D5, D6, D7,C5,C6
关于使用QReport做打印的一个实例,已测试可用。
delphi 本身带的report 增加了runtime edit 功能
Qreport 4.05
来自福建电脑报 格式 pdf Quick.Report是c++Builder中以组件形式存在的报表设计器。它制作报表的功能非常强大,能轻松地制作...本文通过一个复杂报表的实现,深入Quicb_Report,探索其运行机制并解决一些关键性技术。
这里现在的好象只是3.6的我前段时间找了很久才找到现在传上这里
很好的一个打印报表控件
DELPHI BCB 程序中的报表输出到PDF控件 非常好用。 也可以在RM中使用。然后把{DEFINE llPDFLib}这个注释去掉。。
稳定的老版本,自动安装、完成注册,安装完成后便可以使用了,非常适用于新手
0007 在Delphi中加载QReport报表组件 7 1.3 创建DLL文件 8 0008 生成一个DLL文件 8 0009 调用DLL文件 8 1.4 窗体相关操作 9 0010 将组件置前/置后 9 0011 如何锁定窗体中的组件 9 0012 如何改变窗体...
0007 在Delphi中加载QReport报表组件 7 1.3 创建DLL文件 8 0008 生成一个DLL文件 8 0009 调用DLL文件 8 1.4 窗体相关操作 9 0010 将组件置前/置后 9 0011 如何锁定窗体中的组件 9 0012 如何改变窗体...
####################################################### QuickReport Professional eNewsletter - Christmas 2003 ####################################################### * News of QuickReport 4 * Delphi 8...
。。。