关于报表打印(急)

BS 2002-11-09 11:20:09
我用TQuickRep做了一个交费发票打印,也就是连续打印。
数据是手工的到的,不是数据集;
所以在TQuickRep上我用的是标签,再动态附值,不过在直接打印时且没有反映;
但是如果先预览,再在预览中打印且可以。不只什么原因?(100分)
因为我是生成一页打一页,所以让客户每次都要预览很不方便,想一次生成所有的页;再预览,可是我不知道怎样分页,请大侠指点(100分)?

打印代码:
unit Unit2;
interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Qrctrls, QuickRpt, ExtCtrls;

type
TfrmPrintSheet = class(TForm)
QuickRep5: TQuickRep;
DetailBand2: TQRBand;
QRShape53: TQRShape;
QRLabel1: TQRLabel;
QRLabel18: TQRLabel;
QRLabel65: TQRLabel;
QRLabel67: TQRLabel;
QRLabel71: TQRLabel;
QRLabel72: TQRLabel;
QRShape72: TQRShape;
QRShape98: TQRShape;
QRShape99: TQRShape;
QRShape100: TQRShape;
QRShape101: TQRShape;
QRShape102: TQRShape;
QRShape103: TQRShape;
QRLabel73: TQRLabel;
QRLabel74: TQRLabel;
kpUserID: TQRLabel;
kpUserAddress: TQRLabel;
kpUpCaseMoney: TQRLabel;
kpLowCaseMoney: TQRLabel;
kpOperator: TQRLabel;
QRShape105: TQRShape;
QRShape106: TQRShape;
QRShape107: TQRShape;
QRShape108: TQRShape;
QRShape111: TQRShape;
QRShape112: TQRShape;
QRShape113: TQRShape;
QRLabel87: TQRLabel;
kpPrintDate: TQRLabel;
QRLabel93: TQRLabel;
kpBankAccount: TQRLabel;
kpStartDate: TQRLabel;
kpUnPay: TQRLabel;
QRLabel95: TQRLabel;
QRLabel75: TQRLabel;
kpUserName: TQRLabel;
private
{ Private declarations }
public
{ Public declarations }
function kpPreview1(var PrintData:array of string):Boolean;//开平
end;

var
frmPrintSheet: TfrmPrintSheet;

implementation

{$R *.DFM}

function TfrmPrintSheet.kpPreview1(var PrintData:array of string):Boolean;
begin
result:=true;
try
kpUserID.Caption:=PrintData[0];
kpUserName.Caption:=PrintData[1];
kpBankAccount.Caption:=PrintData[2];
kpUserAddress.Caption:=PrintData[3];
kpStartDate.Caption:=PrintData[4];
kpUnpay.Caption:=PrintData[5];
kpUpCaseMoney.Caption:=PrintData[5];
kpLowCaseMoney.Caption:=PrintData[5];
kpOperator.Caption:=PrintData[6];
kpPrintDate.Caption:=PrintData[7];
QuickRep5.Print; // .Preview;
except
result:=false;
end;
end;

end.

调用代码:
procedure TMainForm.BankPrintClick(Sender: TObject);
var
varfile:TextFile;
UserInfo:string;
i:integer;
varData:array[0..7] of string;
begin
if OpenDialog1.Execute then AssignFile(varfile,OpenDialog1.filename) else exit;
try
reset(varfile);
while not eof(varfile) do
begin
readln(varfile,UserInfo);
for i:=0 to 6 do
begin
varData[i]:=Copy(UserInfo,1,pos(#9,UserInfo)-1);
delete(UserInfo,1,pos(#9,UserInfo))
end;
varData[7]:=DateTimeToStr(now);
if frmPrintSheet.kpPreview1(varData) then continue;
showmessage('打印错误,请检查打印机设置');
exit;
end;
closefile(varfile);
showmessage('打印完毕');
except
showmessage('读文件'+OpenDialog1.FileName+'出错');
closefile(varfile);
end;
end;


...全文
38 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
BS 2002-11-09
  • 打赏
  • 举报
回复
现在明白了;
不过我的那段代码在我的机器上是可以直接正常打印的?但是在客户那里不
行;只能先预览才能打印;我怕你那样改的效果也一样;
你能不能帮我想个办法把数据一次读入,在分页作成可以预览那样的?
//我先让客户试试成功就结帐
chechy 2002-11-09
  • 打赏
  • 举报
回复
每个TQRLabel都有OnPrint事件啊?你在Object Inspector中看看。
TfrmPrintSheet = class(TForm)
...
private
FPrintData: array of string;
...

function TfrmPrintSheet.kpPreview1(PrintData:array of string):Boolean;
begin
FPrintData := PrintData;
QuickRep5.Print;
end;
BS 2002-11-09
  • 打赏
  • 举报
回复
不太懂你的意思,OnPrint事件在哪里?
还有PrintData是指一页的数据吗?
可不可以帮我在上边的代码里改
chechy 2002-11-09
  • 打赏
  • 举报
回复
对啊,就是修改打印的部分啊。
只修改你这个Unit2就可以了。保存PrintData,然后给相应的TQrLabel的Tag设值,都连接到一个函数,写上述代码就可以了。
BS 2002-11-09
  • 打赏
  • 举报
回复
现在已经不能这样作了,
因为客户已经在使用,数据只能是这样用了,唯一可以的就是改打印部分,使之可以打印这些数据
chechy 2002-11-09
  • 打赏
  • 举报
回复
试试这样:把你的数据存起来,然后再相应的OnPrint事件中赋值。

Value := FPrintData[(Sender as TComponent).Tag];
=============================== 特别公告,作者的邮箱更改为: borlandsoft@sina.com =============================== SReport For D6 来了 =================== 应该说SReport在好多网友特别是在写数据库管理程序(进销存,财务,客户管理等)的网友中还是很受欢迎的。好多的朋友都在找For Delphi6的版本。但是很抱歉一直没有。现在我抽时间做了出来,以解大家之。 有三点要说明: 一、下载的文件中SReport.hlp(SReport.rtf)是详细的帮助文档。 其它相关的文档在Documents目录中。 二、有关例程这次就不发布了,请参见CSDN中的For D5中的Demo。 其下载地点在Csdn的软件栏中的首页就有链接。(http://www.csdn.net/cnshare/soft/7/7408.shtm) 三、感谢CSDN(是个好地方)和上面的兄弟们。 谢谢大家的支持。 SReport 是谁? ============= 一个是将(商务管理软件)开发人员的报表设计工作量降为零,同时为最终用户提供“简单易用(这很重要)”、“功能强大”、“灵活方便”的报表自定义途径的Delphi Vcl。 SReport 能做什么? ================= (一)自定义页面、边距、字体; (二)自定义标题和页眉页脚; (三)在表头尾可以打印任何相关数据主表中的数据和自定义标签。 (四)可以定义明细数据中要打印的字段、标题、宽度、对齐方式、字体。 (五)可以定义明细数据是否页计、是否累计、是否总计、大写字段; (六)实现针打中的卷纸打印-打多少内容,走多少纸。 (七)直接生成文本文件、EXCEL格式文件、HTML网页格式文件。 (八)用户可以自己定义是否要打印报表顶端的单位信息标志。 (九)支持同一报表多格式并存,按用户的选择输出不同的报表。 (十)按任意字段分组打印并可对分组打印的相关选项进行设置。 如:按什么字段进行分组(需要软件设计者提供的数据源是按这个字段排序的); 每组打印完毕是否换页; 组间间距是多少; 换组后序号是否重排; 在报表的最后是否打印总合计。 (十一)在报表最尾打印用户自定义的信息,并可以保存这些信息。 SReport 是如何工作的? ===================== 提供需要打印的数据集名称并保证它处于打开状态。其它一切问题就由控件自己搞定(单表、主从结构、多主一从构,自定义结构)。
公司写的说明书,规范,无压力,爱下不下。 目 录 第1章 文档介绍 5 1.1文档目的 5 1.2 文档范围 5 1.3 读者对象 5 1.4 参考文档 5 1.5 术语与缩写解释 5 第2章 产品概述 6 2.1 产品介绍 6 2.2 产品面向的用户群体 6 2.3 产品应当遵循的标准与规范 6 第3章 功能性需求 7 3.0 功能分类 7 3.1 基础资料维护 9 3.1.01 部门资料 9 3.1.02 员工资料 10 3.1.03 员工赠送权限 10 3.1.04 员工折扣权限 10 3.1.05 场所区域资料 10 3.1.06 房台资料 11 3.1.07 商品大类资料 11 3.1.08 商品细类资料 11 3.1.09 商品资料 11 3.1.10 制作要求定义 12 3.1.11 制作方式定义 12 3.1.12 制作配料定义 12 3.1.13 买几送几 12 3.1.14 特价设置 12 3.1.15 推商品 12 3.1.16 限量销售 12 3.1.17 时价商品 12 3.1.18 货币资料维护 12 3.1.19 付款方式维护 13 3.1.20 年假日表 13 3.2 楼面营业 13 3.2.01 开卡 13 3.2.02 取消开卡 13 3.2.03 转台 14 3.2.04 置空 14 3.2.05 修改客数 14 3.2.06 房台查询 14 3.2.07 点单 14 3.2.08 赠送 15 3.2.09 折扣 15 3.2.10 取消点单 15 3.2.11 通知 15 3.2.12 查询点单 15 3.2.13 会员验证 16 3.3 收银结账 16 3.3.01 开卡 16 3.3.02 取消开卡 16 3.3.03 转台 16 3.3.04 置空 17 3.3.05 修改客数 17 3.3.06 房台查询 17 3.3.07 点单 17 3.3.08 赠送 17 3.3.09 折扣 18 3.3.10 取消点单 18 3.3.11 通知 18 3.3.12 查询点单 18 3.3.13 会员验证 18 3.3.14 结算 18 3.3.15 打印收银帐单 19 3.3.16 结账 19 3.3.17 继续消费 19 3.3.18 营业参数设置 19 3.3.19 时价定价 19 3.3.20 交班报表 20 3.4 经理查询 20 3.4.01 现场营业数据 20 3.4.02 顾客历史消费 20 3.5财务报表 20 3.5.01 日收入平衡表 20 3.5.02 月收入综合表 20 3.5.03 收银日报表 21 3.5.04 收银月报表 21 3.5.05 区域销售日报表 21 3.5.06 区域销售月报表 21 3.5.07 房台销售日报表 21 3.5.08 房台销售月报表 22 3.5.09 销售日报表 22 3.5.10 销售月报表 22 3.5.11 商品大类销售日报表 22 3.5.12 商品大类销售月报表 22 3.5.13 商品细类销售日报表 22 3.5.14 商品细类销售月报表 23 3.5.15 商品销售日报表 23 3.5.16 商品销售月报表 23 3.5.17 赠送日报表(明细) 23 3.5.18 赠送月报表(明细) 23 3.5.19 赠送日报表(汇总) 23 3.5.20 赠送月报表(汇总) 24 3.5.21 折扣日报表(明细) 24 3.5.22 折扣月报表(明细) 24 3.5.23 折扣日报表(汇总) 24 3.5.24 折扣月报表(汇总) 24 3.5.25 取消日报表 25 3.5.26 取消月报表 25 3.5.27 时段划分 25 3.5.28 全场时段消费分析 25 3.5.29 区域时段消费分析 25 3.5.30 全场时段消费人数 25 3.5.31 区域时段消费人数 26 3.5.32 全场时段消费金额 26 3.5.33 区域时段消费金额 26 3.6 会员管理 26 第4章 非功能性需求 26 4.1 用户界面需求 26 4.2 软件环境需求 27 4.3 硬件环境需求 28 4.3 产品质量需求 29 附录A 用户需求调查报告 30 附录B 30
易用汽车维修管理系统是一款专门面向汽车维修行业打造的简单容易上手的管理软件。它可以帮助你记录每一笔金钱的收入和去向,高效地管理各个商品库存。 易用汽修管理软件(汽车维修管理系统)秉承易用软件一贯容易又实用的理念,是一个简单易用的汽车行业管理软件,能有效的帮助您进行有效的管理。提供一个先进的管理方式,自动生成和打印工单、财务结算单、成本利润等二十多种报表报表可以自定义,可以设计你喜爱的报表,灵活自如。领先国内同行,功能全面、细腻,适用于各种类型的汽修厂使用。利润计算分解到每个维修单,每个维修项目、每个配件功能授权可以将界面的每个功能授权到一般的用户,以确保使用权限和数据安全。 【功能介绍】 1、集汽车配件销售、汽车维修管理、汽车美容服务、内部消耗品领料、应收应付往来账务、营业员销售提成、维修班组提成管理于一身。 2、为汽修、汽配行业度身定做,车型、发动机、汽车美容、维修班组……极具行业特色。 3、完整的汽修汽配流程管理,车辆入厂、维修估价、班组派工、人工材料、出厂结账环环紧扣。 4、汽修汽配材料费、人工费、相关班组一目了然,可以灵活调整维修单价格,完全符合汽修汽配行业特点。 5、方便的车辆档案管理,自动提取、更新车辆档案资料。 6、充分考虑汽修、汽配通用件、横向件的复杂性,销售单打印可以实时调整车型、发动机属性和价钱。 7、汽修、汽配配件销售时,可以随时查看通用车型及库存分布,对常规汽车美容项目提供简易管理。 8、独特的同行借调/炒件销售方式,汽修、汽配短平快销售即进即销,想顾客之所想,顾客之所。 9、完善的提成管理机制,营业员提成、维修班组提成全面灵活,汽修、汽配提成明细项目一目了然,尽在您掌握之中。 10、简便实用的汽修、汽配内部消耗品领用管理,仓存帐目滴水不漏。 11、使用先进的全字段检索查询,抛弃了同类软件中常用的难于记忆的数字编码来检索配件,所有信息均只需打入配件的拼音或五笔首字母即可自动检索出相应的配件材料,更易于操作员记忆,也加大了日常操作处理的速度。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧