先把程序的说明文档放在这儿,希望得到原程序的,请到“报表问题的终极解决方案”这个帖子中发表对方案的
一个意见或一种想法,并把你的EMAIL附上,原程马上奉上,名额有限,先到先得(要知道获得总是要付出点代
价的,呵呵~~``)
{==============================================================================
程 序 名
rintF
类 型:控件
类 名:TPrintF
继 承 类:TComponent
功 能:支持放于ScrollBox控件中的各种小控件的打印,如TLabel、TPanel、TEdit、TCombobox、THeader、
TDataTimePicker、TImage、TShape、TMaskEdit、TstringGrid、TDbgrid、TMemo
编 程:佚 名
初版日期:1997.
版 本:Ver 1.0
-------------------------------- 修 改 记 录 ----------------------------------
版 本:Ver 2.0
修改日期:1998.10
修 改 者:BlueBoy、YelloBoy
修改内容:
1.增加打印预览功能;
2.增加按指定放大倍数进行打印的功能;
3.增加选择打印起止页码的功能;
4.增加打印页码位置、格式、字体大小的功能;
5.增加自动重复打印表头、页头、表尾、页尾的功能;
6.增加StringGrid、Dbgrid自动添加空行置满页的功能;
7.用坐标原点的方法修改获取各控件的Top、Left的计算方法;
8.增加Panel嵌套打印功能;
9.修改PrintImage;
-------------------------------- 接 口 文 档 ----------------------------------
定 义
ScrollBox中需要打印的各种构件的Tag=)
1. 表头(自动根据表体调整位置)
2. 页头(固定在每页头位置)
3. 表体(循环)
4. 页脚(固定在每页脚位置)
5. 表尾(自动根据表体调整位置)
6. 对于Edit和DBedit,当helpcontext=100时,打印边框
变量定义:
FScrollingName:TscrollingWinControl;
(SCROLLBOX)
C : array[0..255] of char;
(处理数据串的中间变量)
PageNumber:integer;
(打印机的页数)
tmpString:string;
(中间串)
Format : Word;
(打印机的打印格式)
R: TRect;
(打印、预览块)
CLen : integer;
()
ScaleX, ScaleY:Real;
(预览窗口、打印机纸张与用户窗口的比例)
pageBottom: integer;
(纸下方应留的高度)
PDC : HDC;
(预览窗口、打印机的描述表)
PDCCanvas:TCanvas;
(预览窗口、打印机的画布)
SW : TScrollingWinControl;
(SCROLLBOX)
WidthSet,HeightSet:integer;
(纸LEFT、TOP应留的高度)
RowTop: integer;
(ROWTOP)
FGroupString:TStrings;
(TSTRINGS)
ifPreview:boolean;
(是否预览的中间变量)
pagetotal:integer;
(预览的总页数)
startpage:integer;
(预览的开始页)
endpage:integer;
(预览的结束页)
pageRowNum:integer;
(对于GRID类的构件每页的行数)
scalebynum:integer;
(预览的放大次数)
ifmove:boolean;
(是否移动)
mousex,mousey:integer;
(鼠标位置)
foottop:integer;
(表脚在预览窗口、打印机的逻辑物理TOP)
footheight:double;
(表脚的逻辑Height)
realfoottop:integer;
(表脚在预览窗口、打印机的物理TOP)
属 性:
1. ScrollingName (连接的ScrollBox的名称)
2. Scale (打印的比例)
3. ifAutoScale (是否根据纸张自动调节比例)
4. ifShowForm (是否显示预览窗口)
5. ImageList (连接的ImageList的名称)
6. PageNopos (打印页注的位置)
7. PageNoConent (打印页注的内容)
8. PageNoConentFontSize (打印页注的字体大小)
9. ifShowPageNo (是否显示页注)
10. ifLasterPrint (是否LasterPrint)
11. ifPrintEmptyLine (是否打印空行置满页)
方 法:
1. Create
2. Excute (开始执行打印作业)