熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi開發WEB應用程序打印組件[3]

2013-11-23 17:37:57  來源: Delphi編程 

  ()打印位置的確定:由於組件是以圖形方式進行打印這就使得我們可以精確指向打印文件的輸出位置以便於進行對某些票據的套打但這樣就產生一個問題我們是以打印的像素位置指定輸入位置還是以打印尺寸來指定位置顯然利用像素來輸出打印位置對於編制程序來說是比較方便的但由於一般用戶對像素的概念並不理解因此會帶來使用上的困難;而且每一種打印機的分辯率是不一樣的因此會出現在不同打印機上打印的效果不一樣的問題而以打印尺寸來指定位置並在程序中妥善加以處理就不會有上面的問題具體的處理方法是由用戶輸入尺寸位置然後在打印時首先取得當前打印機的分辯率(注意:分辨率是以每英寸多少像素為單位的)再計算得出實際輸入的像素位置後進行打印這樣就可以使得組件更加實用而且保持打印幅面的一致具體的函數如下

  function tprttestmmtoprintpixel(inputpoint:tpoint):tpoint;

  begin

  resultx:=mmtoprintpixelx(inputpointx);

  resulty:=mmtoprintpixely(inputpointy);

  end;

  function tprttestmmtoprintpixelx(inputx:integer):integer;

  begin

  if queryprintlogpixel then

  begin

  pddix:=getdevicecaps(printerhandlelogpixelsx);

  pddiy:=getdevicecaps(printerhandlelogpixelsy);

  queryprintlogpixel:=false;

  end;

  result:=trunc(inputx/*pddix+);

  end;

  function tprttestmmtoprintpixely(inputy:integer):integer;

  begin

  if queryprintlogpixel then

  begin

  pddix:=getdevicecaps(printerhandlelogpixelsx);

  pddiy:=getdevicecaps(printerhandlelogpixelsy);

  queryprintlogpixel:=false;

  end;

  result:=trunc(inputy/*pddiy+);

  end;

  getdevicecaps:windows系統中取得指定設備信息的函數函數的原型如下

  int getdevicecaps(

  hdc hdc // 設置的句柄

  int nindex // 查詢的設備參數

  );

  其中hdc為想要查詢的打印機的句柄logpixelsxlogpixelsy表示要查詢的內容是打印機橫向縱向的每英寸的像素點數

  Delphi開發WEB應用程序打印組件()

  六組件的注冊

  如果是在delphi編寫了這個組件的則可以選擇run菜單下的register activex server來進行這個組件的注冊

  對於不開發機器的注冊則可使用:點擊開始運行;在運行對話框中輸入以下命令:

  regsvr < 文件名 > 注冊一個activex控件

  regsvr /u < 文件名 > 解除某activex控件的注冊

  七其它應用

  組件的擴展:以上列出的僅僅是編寫這個組件的框架功能比較有限根據需要我們還可以添加上畫圓橢圓矩形甚至圖片等功能有興趣的讀者就請自行添加

  因為組件是采用com的方式運行所以我們還在window script hosts(wsh)中應用這個組件結合wsh原有(通過ado對象)訪問外部數據庫的能力就可能做出在windows下功能強大的wsh的腳本程序

[]  []  []  


From:http://tw.wingwit.com/Article/program/Delphi/201311/24794.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.