设计微型打印机控制电路 (1)
1 引言
自从20世纪70年代问世以后,单片机作为微型计算机一个很重要的分支,应用广泛,发展迅速,已对很多领域产生了重大影响。尤其是美国Intel公司生产的MCS-51系列单片机,由于其具有集成度高、处理功能强、可靠性好、系统结构简单、价格低廉、易于使用等优点,在我国已经得到广泛使用,并已经在各个技术领域得到了迅猛发展。
随着普通打印机价格的下降,它们在单片机系统的应用也逐渐增多。微型打印机是一种通过单片机控制编程,可以自动完成一定打印任务作业的机械装置。微型打印机具有多功能超小体积、可电池供电和便于随身携带的特点。例如GP系列和μP系列打印机都是点阵式打印机,因为打印机内部有一个单片机系统,并固化有控打程序,智能化程度很高。打印机启动后,由内部单片机执行程序,就可以接受和分析主机送来的数据和命令,然后通过控制电路,实现对打印头机械动作的控制,进行打印。微型打印机可广泛使用在超市、便利店、餐饮服务、商场打印票据等,可满足不同使用人员的要求。
本设计可以实现打印预先设定的汉字和0~9十个数字,可以应用在食堂、超市等地,用来打印小票并可以其显示相关信息。因此微型打印机以其小型化、多功能等特点广泛应用在生产、销售等领域,为人们带来了极大的方便。
2 设计要求
(1) 支持多种打印命令,命令代码均为单字节,格式简单。
(2) 可输出标准的数字、在程序中所设定的汉字和英文字符。
(3) 要求简单实用、有高可靠性、良好的性能价格比以及体积小,方便携带。
3 系统组成
本设计由微型打印机、单片机、键盘、液晶显示器和电源模块等五部分组成,系统框图如图3-1所示。其中单片机部分的作用是控制微型打印机、键盘和液晶显示器;键盘用来输入要打印的信息;显示器用来显示所打印的内容;电源模块则为整个电路提供电源。
4 硬件部分设计
4.1 打印机部分
打印机是一种复杂而精密的机械电子装置,无论哪种打印机,其结构基本上都可分为机械装置和控制电路两部分,这两部分是密切相关的。机械装置包括打印头、字车机构、走纸机构、色带传动机构、墨水(墨粉)供给机构以及硒鼓传动机构等等,它们都是打印机系统的执行机构,由控制电路统一协调和控制;而打印机的控制电路则包括CPU主控电路,驱动电路,输入输出接口电路及检测电路等。
下面介绍打印机一般原理:打印机是小型机电一体化系统。机械部分为执行机构,在机内CPU及驱动电路控制下完成“数据”打印。打印机的一般构成及工作原理如下图4-1所示:
虽然打印机的外观千变万化,打印出来的图形,色彩也各不相同,但从原理上,我们可将常用的打印机分为三种类型:针式打印机、喷墨打印机和激光打印机。下面重点介绍一下针式打印机的结构和工作原理。
4.1.1 针式打印机
(1) 针式打印机的工作原理
主机送来的代码,经过打印机输入接口电路的处理后送至打印机的主控电路,在控制程序的控制下,产生字符或图形的编码,驱动打印头打印一列的点阵图形,同时字车横向运动,产生列间距或字间距,再打印下一列,逐列进行打印;一行打印完毕后,启动走纸机构进纸,产生行距,同时打印头回车换行,打印下一行;上述过程反复进行,直到打印完毕。
(2) 针式打印机的结构
针式打印机关键在于其打印头的结构。打印头的结构比较复杂,可分为打印针,驱动线圈,定位器,激励盘等。简单的说,打印头的工作过程是这样的:当打印头从驱动电路获得一个电流脉冲时,电磁铁的驱动线圈就产生磁场吸引打印针衔铁,带动打印针击打色带,在打印纸上打出一个点的图形。因其直接执行打印功能的是打印针,所以这类打印机被称为针式打印机。
针式打印机的种类繁多,型式各异,一般分为打印机械装置和控制与驱动电路两大部分。针式打印机在正常工作时有三种运动,即打印头的横向运动、打印纸的纵向运动和打印针的击针运动。这些运动都是由软件控制驱动系统通过一些精密机械进行的。
打印机械装置主要包括字车与传动机构、打印针控制机构、色带驱动机构,走纸机构和打印机状态传感器,这些机构都为精密机械装置,以保证各种机构能实现下面的各种运动。
① 字车与传动机构 字车是打印头的载体,打印头通过字车传动系统实现横向左、右移动,再由打印针撞击色带而印字。字车的动力源一般都用步进电动机,通过传动装置将步进电动机的转动变为字车的横向移动。一般用钢丝绳或同步齿形带进行传动。
② 打印针控制机构 打印针是正确打印的关键。打印针控制机构实现打印针的出针和收针动作。通常利用电磁原理控制打印针的动作。
③ 色带驱动机构 打印针撞击色带,色带上的印油在打印纸上印出字符或图形。在打印过程中,打印头左、右移动时,色带驱动机构驱动色带也同时循环往复转动,不断改变色带被打印针撞击的部位,保证色带均匀磨损,从而既延长了色带的使用寿命,又保证了打印出的字符或图形颜色均匀。色带驱动机构一般利用字车电动机带动同步齿形带(如LQ-1600K)或钢(尼龙)丝绳驱动色带铀转动,也可采用两个单独的电动机(如某些彩色打印机)分别带动色带正、反向走带。
④ 走纸机构 该机构实现打印纸的纵向移动。当打印完一行后,由它走纸换行。走纸方式一般有摩擦走纸、齿轮馈送和压纸滚筒馈送等。其动力方式为通过牵引机构将步进电动机的转动转变为走纸移动。
⑤ 打印机状态传感器 对于不同的打印机来说,传感器的设置情况不同。通常有原始位置传感器(检测字车是否停在左边原始位置上)、纸尽传感器(检测所装的打印纸是否用完,用完则报警)、计时传感器(检测字车的瞬时位置)和机盖状态传感器(检测正在打印中的异常开打印机盖操作)等等。
(3) 针式打印机的特点
针式打印机由于采用的是机械击打式的打印头,因此穿透力很强,能打印多层复写纸,具备拷贝功能,另外还能打印不限长度的连续纸。使用的耗材是色带,在三种打印机中是最廉价的一种。其缺点就是体积、重量都较大,打印噪音大,精度低,速度慢,一般无打印彩色图像功能。适合有专门要求的专业应用场合,例如财务、税务、金融机构等等。常见的机型有EPSON的LQ系列,如LQ-680K;STAR的AR、CR系列,如AR-6400等。
4.1.2 喷墨打印机和激光打印机
(1) 喷墨打印机
喷墨打印机的工作原理基本与针式打印机相同,这两者的本质区别就在于打印头的结构。喷墨打印机的打印头,是由成百上千个直径极其微小(约几微米)的墨水通道组成。当打印头的控制电路接收到驱动信号后,即驱动这些执行单元产生振动,将通道内的墨水挤压喷出;或产生高温,加热通道内的墨水,产生气泡,将墨水喷出喷孔;喷出的墨水到达打印纸,即产生图形。这就是压电式和气泡式喷墨打印头的基本原理。
喷墨打印机打印精度高,通常都能打印彩色图像,而且体积及重量都可以做的非常小巧,甚至能随身携带打印,打印时的噪音也很小。因此喷墨打印机的使用成本很高。同时,也不具备拷贝和打连续纸功能。适合对打印质量要求高但数量较小的场合,如家庭,小型办公室等等。常见的机型有EPSON的STYLUS PHOTO系列,如STYLUS PHOTO 900;CANON的i系列,如i6500、i355等。
(2) 激光打印机
激光打印机与针式、喷墨打印机的一个本质的区别在于:激光打印机打印一次成像一整页,是逐页打印;而针式和喷墨打印机都是打印头一次来回打印一行,是逐行打印。因此,相同打印要求下,激光打印机的打印速度要比针式打印机和喷墨打印机要快,这也是激光打印机的一个优势所在。激光打印机的打印精度也很高,基本上与喷墨打印机无太大区别。能打印彩色图像,且对打印介质的要求没有喷墨打印机那么高。打印的速度是三种打印机中最快的,而且噪音也很小。但体积和重量相对喷墨打印机要大。只能逐页打印,无拷贝和打印连续纸功能。适合打印数量大,任务重的场合,如大型商务机构,设计、印刷领域等等。常见的机型有惠普HP的LaserJet系列,如LaserJet1010,Color LaserJet 8550等。
4.1.3 微型打印机
微型打印机,简称微打,是针对通用打印机而言的,具有处理票据较窄、整机体积较小、操作电压较低的特点。它是广大打印机家族中一个细小而特别的种类,在通常的IT刊物、杂志及各类市场调查报告中,微型打印机均鲜有提及,甚至被忽略不记。以致一般的人虽然在生活中经常见到,然而对其缺乏必要的认识和了解。但作为特种打印机系列一个重要的组成部分,微打的市场需求日渐扩大,应用也越来越广泛,越来越多的通用打印机厂商也开始涉及微打领域。
(1) 微型打印机的分类
微型打印机具有体积小巧、价格低廉、功能多样的特点,所以在越来越多的领域得到了广泛的应用。下面按不同的方式对微型打印机进行分类:
① 按打印原理分:针式(细分为字轮式、梭式点阵式、9针点阵式、24针点阵式)、热敏式(细分为列式热敏式、行式热敏式)、喷墨式、热转印、激光式(后面两种打印方式的微型机较少)。
② 按应用分:由于微型打印机在各行业应用十分广泛,所以分成在金融零售业的ECR(高效消费者响应)、POS、交通运输业上的打票机、服务行业的排队机等。
③ 按通信方式分:有线通信(串口、并口、USB或网口)、无线通信(运用IrDA和Bluetooth技术)。
(2)针式微型打印机与热敏微型打印机的比较
①基本工作原理
针式微型打印机至少由以下基本关键部件组成:打印机芯、打印控制器、电源和外壳,而打印机芯又由打印头和字车电机运动机构、走纸电机运动机构以及各种传感器等组成。
针式微打是通过控制打印头运动和走纸运动,并控制打印头出针击打色带和打印纸,把色带上相应点的墨汁印在打印纸上,从而在纸上打出所需的信息。直热行式热敏微打,其热敏头由一排紧密均匀排列的特殊材料的可加热电阻组成,每个单元电阻对应一个点,控制其不同点的通电即可对相应的点加热,而与其紧密接触的带热敏涂层的热敏纸受热就可以印出相应的点信息,再同时通过走纸的控制,就可以打印出各种信息。另一种热敏微打——热转印微打,其工作原理与直热式热敏机基本相同,不同之处在于:热转印微打通过加热带热敏涂层的碳带,把相应碳带加热点上的涂层材料转印到普通的打印纸上。
②性能表现
主要是热敏微打的速度是针式微打的几倍。
总之,直热式热敏微打主要在噪声、速度和分辨率上优于针式微打,而针式微打却在拷贝能力和打印后纸张的保存效果(热转印式除外)上优于直热式热敏微打,这些各自的优点奠定了这两大类的微打在不同应用领域受青睐的地位。
随着国内电子政务、电子商务的迅速发展,以及工商、税务电子监控等政策的逐渐实施,对发票和税控收据的自动打印要求将越来越广泛,商业收款和税控发票打印也就成为微型打印机应用最为广泛的领域,而热敏式、9针串行点阵式打印方式则在此领域应用最为广泛。
此外,随着微型打印机技术的发展,各种新型的微型打印机也慢慢走向市场,如便携式微型打印机,它在水、电、燃气等抄表业务中得到了很好的推广。相对于传统的手工抄表,然后录入电脑,再由电脑打印出单据送到用户手中,便携式微打表现出了极大的方便性。类似的应用还有火车上的移动式补票机等。
4.2单片机芯片部分
89S52是标准的40引脚双列直插式集成电路芯片[1],引脚排列请参见下图4-2:
4.2.1 信号引脚介绍
(1) 输入/输出口线
P0.0 ~ P0.7 P0口8位双向口线
P1.0 ~ P1.7 P1口8位双向口线
P2.0 ~ P2.7 P2口8位双向口线
P3.0 ~ P3.7 P3口8位双向口线
(2) 地址锁存控制信号(ALE)
在系统扩展时,ALE用于控制把P0口输出的低8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。此外由于ALE是六分之一晶振频率的固定频率输出的正脉冲,因为可作为外部时钟或外部定时脉冲使用。
(3) 外部程序存储器读选通信号(/PSEN)
在读外部ROM时/PSEN有效(低电平),以实现外部ROM单元的读操作。
(4) 访问程序存储器控制信号(/EA)
当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;而当/EA信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储器。
(5) 复位信号(RST)
当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位操作。
(6) 外接晶体引线端(XTAL1和XTAL2)
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
(7) 地线(Vss)
(8) +5V电源(Vcc)
以上就是89S52单片机芯片40条引脚的定义及简单功能说明[2]。
4.2.2 信号引脚的第二功能
由于工艺及标准化等原因,芯片的引脚数目是有限制的,例如MCS-51系列单片机芯片引脚的数目是40条,但单片机为实现其功能所需要的信号数目却远远超过此数,因此就出现了供需问题。
解决这一问题唯一可行的办法是“复用”,即给一些信号引脚赋予双重功能。如果我们把前述的信号定义为引脚第一功能的话,则根据需要再定义的信号就是它的第二功能。第二功能信号定义主要集中在P3口线中,另外再加上几个其它信号线。
(1) EPROM 存储器程序固化所需要的信号
P3的8条口线都定义有第二功能,详见表4-1。
有内部EPROM的单片机芯片(例如87C51),为写入程序需提供专门的编程脉冲和编程电源,它们也是由信号引脚以第二功能的形式提供的,即:
编程脉冲: 30脚(ALE//PROG)
编程电压(25V):31脚(/EA/VPP)
(2) 备用电源引入
MCS-51单片机的备用电源也是以信号引脚第二功能的方式由9脚(RST/VPD)引入的。当电源发生故障,电压降低到下限值时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的信息不丢失。
4.3 单片机与微型打印机的接口
4.3.1微型打印机TPμP-40A的主要性能、接口要求及时序
TPμP-40A是一种单片机控制的微型智能打印机。每行打印40个字符[3]。
(1) TPμP-40A主要技术性能
① 采用单片机控制,具有2KB控达程序标准的Centronic并行接口。
② 具有较丰富的打印命令,命令代码均为单字节,格式简单。
③ 可产生全部标准的ASCII代码字符,以及128个非标准字符和图符。有16个代码字符(6×7点阵)可由用户通过程序自行定义。并可通过命令用此16个代码字符去更换任何驻留代码字型,以便用于多种文字的打印。
④ 可打印出8×240点阵的图样(汉字或图案点阵)。代码字符和点阵图样可在一行中混合打印。
⑤ 字符、图符和点阵图可以在宽和高的方向放大为×2、×3、×4倍。
⑥ 每行字符的点行数(包括字符的行间距)可用命令更换。即字符行间距空点行在0~256间任选。
⑦ 带有水平和垂直制表命令,便于打印表格。
⑧ 具有重复打印同一字符命令,以减少输送代码的数量。
⑨ 带有命令格式的检错功能。当输入错误命令时打印机立即打印错误信息代码。
(2) 接口信号
TPμP-40A微型打印机与单片机间是通过一条20芯扁平电缆及接插件相连(如图4-3所示)。打印机有一个20线扁平插座,信号引脚排列如表4-2所示:
其中:
① DB0~DB7:数据线,单向传输,由单片机输入给打印机。
② /STB(STROBE):数据选通信号。在该信号的上升沿时,数据线上的8位并行数据被打印机读入机内锁存。
③ BUSY:打印机“忙”状态信号。当该信号有效(高电平)时,表示打印机忙于处理数据。此时,单片机不得使STB信号有效,向打印机送入新的数据。
④ /ACK:打印机的应答信号。低电平有效,表明打印机已取走数据线上的数据。
⑤ /ERR:“出错”信号。送入打印机的命令格式出错时,打印机立即打印一行出错信息提示出错。在打印出错信息之前该信号线出现一个负脉冲,脉冲宽度为30μs。
(3) 接口信号时序[4]
接口信号时序如图4-4所示。选通信号/STB宽度需大于0.5μs。/ACK应答信号可与/STB信号作为一对应答联络信号,可使用/STB与BUSY作为一对应答联络信号[5]。
4.3.2 字符代码及打印命令
TPμP-40A全部代码共256个,其中00H无效,代码01H~0FH为打印命令;代码10H~1FH为用户自定义代码;代码20H~7FH为标准ASCII代码;代码80H~FFH为非ASCII代码,其中包括少量汉字、希腊字母、块图图符和一些特殊的字符。
(1) 字符代码
TPμP-40A中全部字符代码为10H~FFH,回车换行代码0DH为字符串的结束符。但当输入代码满40个时,打印机自动回车。几个例子如下:
① 打印“$2356.73”
输送代码串为:24,32,33,35,36,2E,37,33,0D。
② 打印“23.7㎝”
输送代码为:32,33,2E,37,63,6D,9D,0D。
③ 打印“This is Micro-Printer”
输送代码串为:54H,68H, 69H,73H, 20H,69H,73H,20H, 4DH,69H,63H,72H, 6FH,2DH,70H,72H,69H,6EH,74H,65H,72H,2EH,0DH。
(2) 打印命令
打印命令由一个命令字和若干个参数字节组成,命令结束符为0DH,除下述表中代码06H的命令必须用它外,均可省略。TPμP-40A命令代码及功能见表4-3。
(3) 命令非法时的出错显示
当主机向TPμP-40A输入非法命令时,打印机即打印出错代码。其意义为:
ERROR0: 放大系数出界,即放大倍数是1,2,3和4以外的数字。此错误出现在 01H,01H,03H命令时。
ERROR1:定义代码非法。用户自定义代码不是10H~1FH.
ERROR2:非法换码命令。换码命令只能用10H~1FH去代换驻留字符代码,否则为非法。
ERROR3:绘图命令错误。指定图形字节数为0或大于240。
ERROR4:垂直指标命令错误。指定空行数为零[6]。
4.3.3 TPμP-40A与MCS-51单片机接口设计
TPμP-40A是智能打印机,其控制电路由单片机构成,在输入电路中有锁存器,
在输出电路中有三态门控制。因此可以不通过I/O口直接与单片应用系统的总线连接,即打印机的数据线可以以外部I/O口的形式与MCS-51系列单片机的P0口相连。如图4-5所示:TPμP-40A没有读、写信号线,只有一对握手线/STB、BUSY,因此,用一根地址线(使用P2.7)来控制读写信号选通 /STB和读取打印机的BUSY状态[7]。
4.4 单片机与液晶显示器的接口
显示器部分是由液晶显示控制行、列驱动器和HY128*64液晶显示器组成的[8]。
4.4.1 液晶显示控制驱动器HD61202的特点
HD61202液晶显示控制驱动器是一种带有驱动输出的图形液晶显示控制器,它可直接与8位微处理器相连,它可与HD61203配合对液晶屏进行行、列驱动。HD61202是一种带有列驱动输出的液晶显示控制器,它可与行驱动器HD61203配合使用,组成液晶显示驱动控制系统。
(1) 内藏64×64=4096位显示RAM,RAM每位数据对应LCD屏上一个点的亮暗状态;
(2) HD61202
推荐阅读
-
设计微型打印机控制电路 (1)
-
Grid++Report 锐浪报表开发常见问题解答集锦-报表设计 问:怎样在设计时打印预览报表? 答:为了及时查看报表的设计效果,Grid++Report 报表设计应用程序提供了四种查看视图:普通视图、页面视图、预览视图与查询视图。通过窗口下边的 Tab 按钮可以在四种视图中任意切换。在预览视图中查看报表的打印预览效果,在查询视图中查看报表的查询显示效果。如果在报表的记录集提供了数据源连接串与查询 SQL,在进入预览视图与查询视图时会利用数据源连接串与查询 SQL 从数据源中自动取数,否则 Grid++Report 将自动生成模拟数据进行模拟打印预览与查询显示。注意:在预览视图与查询视图中看到的报表运行结果有可能与在你程序中的最终运行结果有差异,因为在报表的生成过程中我们可以在程序中对报表的生成行为进行一定的控制。 问:怎样用 Grid++Report 设计交叉表? 答:Grid++Report 没有提供专门实现交叉表的功能,其它的报表构件提供的交叉表功能一般也比较死板和功能有限。利用 Grid++Report 的编程接口可以做出灵活多变,功能丰富的交叉表。示例程序 CrossTab 就是一个实现交叉表的例子程序,认真领会此例子程序,你就可以做出自己想要各种交叉表,并能提取一些共用代码,便于重复使用。 问:怎样设置整个报表的缺省字体? 答:设置报表主对象的字体属性,也就是设置了整个报表的缺省字体。如果改变报表主对象的字体属性,则没有专门的设置字体属性的子对象的字体属性也跟随改变。同样每个报表节与明细网格也有字体属性,他们的字体属性也就是其拥有的子对象的缺省字体。 问:怎样在打印时限制一页的输出行数? 答:设定明细网格的内容行的‘每页行数(RowsPerPage)’属性即可。另外要注意‘调节行高(AdjustRowHeight)’属性值:为真时根据页面的输出高度自动调整行的高度,使整个页面的输出区域充满。为假时按设计时的高度输出行。 问:怎样显示中文大写金额? 答:将对象的“格式(Format)”属性设为 “$$” 及可,可以设置格式的对象有:字段(IGRField)、参数(IGRParameter)、系统变量(IGRSystemVarBox)与综合文字框(IGRMemoBox),其中综合文字框是在报表式上设格式。 问:能否实现自定义纸张与票据打印? 答:Grid++Report 完全支持自定义纸张的打印,只要在报表设定时在页面设置中选定自定义纸张,并指定准确的纸张尺寸。当然要在最终输出时得道合适的打印结果,输出打印机必须支持自定义纸张打印。Windows2000/XP/2003 操作系统上可以在打印机上定义自定义纸张,也可以采用这种方式实现自定义纸张打印。 问:怎样实现 0 值不打印? 答:直接设置格式串就可以,在“数字格式”设置对话框中选定“0 不显示”,就会得到合适的格式串。也可以通过直接录入格式串来指定 0 不显示,但格式串必须符合 Grid++Report 的规定格式。另一种实现办法是在报表获取明细记录数据时,在 BeforePostRecord 事件中将值为零的字段设为空,调用字段的 Clear 方法将字段置为空。 问:怎样实现多栏报表? 答:在明细网格上设‘页栏数(PageColumnCount)’属性值大于 1 即可。通过 Grid++Report 的“页栏输出顺序”还可以指定多栏报表的输出顺序是“先从上到下”还是“先从左到右”。 问:如何实现票据套打? 答:Grid++Report 为实现票据套打做了很多专门的安排:报表设计器提供了页面设计模式,按照设定的纸张尺寸显示设计面板,如果将空白票据的扫描图设为设计背景图,在定位报表内容的输出位置会非常方便。报表部件可以设定打印类别,非套打输出的内容在套打打印模式下就不会输出。 问:Grid++Report 有没有横向分页功能? 答:回答是肯定的,在列的总宽度超过打印页面的输出宽度时,Grid++Report 可以另起新页输出剩余的列,如果左边存在锁定列,锁定列可以在后面的新页中重复输出,这样可以保证关键数据列在每一页都有输出。仔细体会 Grid++Report 提供的多种打印适应策略,选用最合适的方式。Grid++Report 的多种打印适应策略为开发动态报表提供了很好的支持。 问:怎样实现报表本页小计功能? 答:定义一个报表分组,将本分组定义为页分组,在本分组的分组头与分组尾上定义统计。页分组就是在每页产生一个分组项,在每页的上端与下端都会分别显示页分组的分组头与分组尾,页分组不用定义分组依据字段。 报表运行 问:怎样与数据库建立连接? 答:如果在设计报表时指定了数据集的数据源连接串与查询 SQL 语句,Grid++Report 采用拉模式直接从数据源取得报表数据,Grid++Report 利用 OLE DB 从数据源取数,OLE DB 提供了广泛的数据源操作能力。如果 Grid++Report 的数据来源采用推模式,即 Grid++Report 不直接与数据库建立连接,各种编程语言/平台都提供了很好的数据库连接方式,并且易于操作,应用程序在报表主对象(IGridppReport)的 FetchRecord 事件中将数据传入,例子程序提供了各种编程语言填入数据的通用方法,对C++Builder 和 Delphi 还进行了专门的包装,直接关联 TDataSet 对象也可以将 TDataSet 对象中的数据传给报表。 问:打印时能否对打印纸张进行自适应?支持表格的折行打印吗? 答:Grid++Report 在打印时采用多种适应策略,通过设置明细网格(IGRDetailGrid)的‘打印策略(PrintAdaptMethod)’属性指定打印策略。(1)丢弃:按设计时列的宽度输出,超出范围的内容不显示。(2)绕行:按设计时列的宽度输出,如果在当前行不能完整输出,则另起新行进行输出。(3)缩放适应:对所有列的输出宽度进行按比例地缩放,使总宽度等于页面的输出宽度。(4)缩小适应:如果列的总宽度小于页面的输出宽度,对所有列的输出宽度进行按比例地缩小,使总宽度等于页面的输出宽度。(5)横向分页:超范围的列在新页中输出。(6)横向分页并重复锁定列。 问:如何改变缺省打印预览窗口的窗口标题? 答:改变报表主对象的‘标题(Title)’属性即可。 问:利用集合对象的编程接口取子对象的接口引用,但不是自己期望的结果。 答:Grid++Report中所有集合对象的下标索引都是从 1 开始,另按对象的名称查找对象的接口引用时,名称字符是不区分大小写的。 问:怎样在运行时控制报表中各个对象的可见性?即怎样在运行时显示或隐藏对象? 答:在报表主对象(GridppReport)的 SectionFormat 事件中设定相应报表子对象的可见(Visible)属性即可。 问:报表主对象重新载入数据,设计器中为什么没有反映新载入的数据? 答:应调用 IGRDesigner 的 Reload 方法。 问:怎样实现不进入打印预览界面,直接将报表打印出来?