用Delphi实现打印功能

就差你了go

就差你了go

2016-01-29 14:13

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

  程序要求:

  单击[打印]按钮,把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调试通过,希望能对初次编写打印功能程序的读者有所帮助。


 
展开更多 50%)
分享

猜你喜欢

用Delphi实现打印功能

Delphi
用Delphi实现打印功能

用Delphi实现选单的自动隐藏功能

Delphi
用Delphi实现选单的自动隐藏功能

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

用Delphi实现壁纸更换

编程语言 网络编程
用Delphi实现壁纸更换

用Delphi实现文件关联

Delphi
用Delphi实现文件关联

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

用Delphi编写打印程序的窍门

Delphi
用Delphi编写打印程序的窍门

用Delphi轻松实现背景播放

Delphi
用Delphi轻松实现背景播放

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《忍者必须死2》新角色死鬼与武器爱疯20介绍

《忍者必须死2》新角色死鬼与武器爱疯20介绍

在窗口标题区添加按钮

在窗口标题区添加按钮
下拉加载更多内容 ↓