转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
用Delphi实现打印功能         ★★★★

用Delphi实现打印功能

作者:闵涛 文章来源:闵涛的学习笔记 点击数:641 更新时间:2009/4/23 18:25:34

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

  程序要求:

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


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台