您现在的位置: 华盟网 >> 编程 >> Delphi >> 正文

开发WEB应用程序打印组件[2]

2008/11/15 作者:不详 来源: 华盟收集
导读 四、调用  在脚本中调用这个组件的方法:  (1)、利用createobject函数创建一个打印对象。  (2)、调用prtcustompage来指定定制的纸张…

  四、调用

  在脚本中调用这个组件的方法:

  (1)、利用createobject函数创建一个打印对象。

  (2)、调用prtcustompage来指定定制的纸张的大小(以0.1毫米为基本单位)。如果,不是定制的纸张则不需要调用这个过程(即以打印默认的纸张大小进行打印)。

  (3)、调用prtstart进行打印机的初始化工作。如果打印机初始化成功,则会将isinit属性置为真,表示初始化成功;否则,表示打印机正在忙或有别的应用程序正在使用打印机,初始化不能成功。

  (4)、判断isinit标志。如果为真,则继续执行打印段。

  (5)、执行打印段。可以在利用打印机画线、和在指定位置输出文字。

  (注:在组件接中的所有位置单位都是0.1毫米。例?prtobject.prtdrawlien 0,0,1000,1000

  表示从左上角(0,0)毫米到右下角(100,100)毫米处,画一条直线)

  (6)、利用prtend结束打印任务。

  < script language=vbscript>

  < !--

  sub testprtobject

  dim prtobject

  set prtobject=createobject(prttest3.prttest3)

  prtobject.prtcustompage 1000,1000

  prtobject.prtstart

  if prtobject.isinit then

  prtobject.prtdrawline 0,0,1000,1000,1

  prtobject.prtdrawline 500,700,1000,1000,1

  prtobject.prtsetfont 宋体,16

  prtobject.prttextrect 2,2,0,0,1000,500,web应用程序打印测试

  prtobject.prtend

  end if

  set prtobject=nothing

  end sub

  testprtobject()

  //-->

  < /script>

  Delphi开发WEB应用程序打印组件(3)

  五、代码解析

  在这个组件中,我们所要解决的几个问题:

  (1)、在delphi的应用程序设计中自定义打印纸张的设置,delphi中自身带了一个quickreport的打印设计程序,这个程序在一定的程度上方便了打印的设计,但这个设计程序对于自定义纸张的设定和打印支持却不是很好。因此,在这个组件中我们采用手工代码来设定自定义纸张大小。

  function tprttest3.initprintpaper:boolean;

  var

  device:array [0..cchdevicename-1] of char;

  driver:array [0..(max_path-1)] of char;

  port:array [0..32] of char;

  hdmode:thandle;

  pdmode:pdevmode;

  begin

  result:=true;

  if prtiscustompaper then

  begin

  {设置打印机段}

[NextPage]

  printer.getprinter(device,driver,port,hdmode);

  if hdmode<>0 then begin

  try

  pdmode:=globallock(hdmode);

  if pdmode<>nil then begin

  //设定打印的方向为纵向或横向

  if paperorientation<>0 then

  pdmode^.dmorientation:=dmorient_landscape

  else pdmode^.dmorientation:=dmorient_portrait;

  //设置拷贝份数为1份.

  pdmode^.dmcopies:=1;

  //以毫米为单位的纸张大小.

  pdmode^.dmpaperlength:= paperheight*10;

  pdmode^.dmpaperwidth:=paperwidth*10;

  //设置纸张类型为用户自定义.

  pdmode^.dmpapersize:=dmpaper_user;

  end;

  globalunlock(hdmode);

  printer.setprinter(device,driver,port,hdmode);

  except

  result:=false;

  end;

  end else begin

  result:=false;

  end;

  end;

  end;

                  微信群名称:华盟黑白之道二群   华盟-黑白之道⑦QQ群: 9430885

  • 上一篇编程:

  • 下一篇编程:
  • 网友评论
      验证码
     

    关注

    分享

    0

    讨论

    2

    猜你喜欢

    论坛最新贴