用Delphi实现打印功能
2008-02-23 07:20:00来源:互联网 阅读 ()
程序要求:
单击[打印]按钮,把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调试通过,希望能对初次编写打印功能程序的读者有所帮助。
上一篇: 用Delphi控制IE窗口
下一篇: 你的大写数字规范吗
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash