当前位置: 首页 > 图文教程 > 开发语言 > Delphi > 用Delphi实现打印功能

Delphi
在线播放器DIY
关于VisiBroker For Delphi的使用(3)
关于VisiBroker For Delphi的使用(2)
关于VisiBroker For Delphi的使用(1)
Delphi的两个实用技巧(2)巧用Windows的API函数
Delphi的两个实用技巧(1)播放Flash
delphi学习:两种方法使用xml文档
Delphi与Word之间的融合技术
Delphi中动态链接库(DLL)的建立和使用
Delphi基础:Window 消息大全使用详解下
Delphi基础:Window 消息大全使用详解上
教你在DELPHI中如何调用系统对话框
Delphi开发单机瘦小数据库程序要点
用Delphi + DirectX开发简单RPG游戏
Delphi7从入门到精通之认识Delphi编辑器
Delphi7从入门到精通之历数Delphi七个版本
Delphi学习:图像放大漫游攻略
用编程来实现24小时制到12小时制的转换
一个实际的OLE服务器的开发
Delphi一点通:如何将源代码学好

用Delphi实现打印功能


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 78 ::
收藏到网摘: n/a

 
给单位开发软件,涉及一打印模块,我感到颇有兴趣,就拿来其中的一个小功能模块与读者共享。下面以打印在纸张的矩形框内为例简单介绍:

  程序要求:

  单击[打印]按钮,把Memo的内容最多分三行打印出来,每行最多能容纳22个三号字,限定汉字上限为50个汉字。

  编程思路:

  用LineTo和MoveTo函数画一矩形框,根据Memo组件的内容长度用Copy函数把它分割为1到3个子串。在矩形框内美观地输出文字时技术处理为:当输出一行时最多可打印18个汉字,当输出多行时第一、二行分别打印16、18个汉字。

  编程步骤:

  1、首先新建一工程,在窗体上加一个Memo组件Button组件。

  2、Memo组件的Lines值为空,MaxLength值为“100”(即50个汉字),字体为“三号字”;Button的Caption值为“打印”。

  3、添加[打印]按钮的事件处理过程代码Button1.Click,首先在Interface的Uses部分添加Printers,其完整代码如下:



  procedure TForm1.Button1Click(Sender: TObject);
  var StrLen , Left,Top , WordHeight , wordWidth : Integer;
   ContentStr : String[100];
   Str1, Str2, Str3 : String[36];
  begin
   with Printer do
   begin
   Canvas.Font.Size:=16;
   wordHeight:=Canvas.TextHeight
  ('字');
   wordWidth:=Canvas.TextWidth
  ('字');
   Left:=(Printer.PageWidth-wordWidth*22) div 2;
   Top:=(Printer.PageHeight-wordHeight*7) div 2;
   BeginDOC;
   With Canvas do
   begin
   Pen.Width:=3;
   {画一个22字宽,7个字高的矩形框}
   MoveTo(Left,Top);
   LineTo(Left+wordWidth*22,Top);
   LineTo(Left+wordWidth*22,
  Top+wordHeight*7);
   LineTo(Left,Top+wordHeight*7);
   LineTo(Left,Top);
   ContentStr:=Memo1.Lines.Text;
   StrLen:=Length(ContentStr);
   if StrLen< 37 then
   {分一行打印}
   begin
   TextOut(Left+WordWidth*2, Top+Wordheight*3, ContentStr)
   end
   else if StrLen< 66 then
   {在垂直方向中间分两行打印}
   begin
   Str1:=Copy(ContentStr, 0, 32);
   Str2:=Copy(ContentStr, 33, StrLen-32);
   TextOut(Left+WordWidth*4, Top+WordHeight*(7-2) div 2 , Str1);
   TextOut(Left+WordWidth*2, Top+WordHeight*(7-2) div 2 + wordHeight, Str2);
   end
   else
   {分三行打印}
   begin
   Str1:=Copy(ContentStr,0,32);
   Str2:=Copy(ContentStr,33,36);
   Str3:=Copy(ContentStr, 69, StrLen-68);
   TextOut(Left+WordWidth*4, Top+WordHeight*2, Str1);
   {左缩进两个汉字}
   TextOut(Left+WordWidth*2, Top+WordHeight*3, Str2);
   TextOut(Left+WordWidth*2, Top+WordHeight*4, Str3);
   end
   end;
   EndDoc;
   end;
  end;


  以上程序在Windows 98/Me+Delphi 6.0调试通过,希望能对初次编写打印功能程序的读者有所帮助。