線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3115
推到 Plurk!
推到 Facebook!

如何預覽條碼

 
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-06-12 14:11:16 IP:210.71.xxx.xxx 未訂閱
因一時興起在站上找到條碼製作程式中站長大大提供一篇39條碼的範例程式, 試了一下可以列印0-3的條碼但無法預覽不知問題出在哪裡,請大大給予指教, 並請問如何調整印表機的解析度 ???? code: var Form1: TForm1; Code39map:array['0'..'5'] of string= ('00S110','10S001','01S001','11S000','0S1001','0S0S0S00'); //條碼的先行及結尾碼 '*' Code39MapStar:string='0S0110'; implementation {$R *.DFM} procedure TForm1.PrintCode39(s:string); var i,j,k,p,u,u2:integer; s2:string; begin p:=100; u:=10; //Printer.BeginDoc; QRPreview1.QRPrinter := TQRPrinter.Create; for i:=1 to length(s) do begin if s[i]='*' then s2:=Code39MapStar else s2:= pattern(s[i]); for j:=1 to length(s2) do begin u2:=0; if s2[j]='1' then u2:=u*2; if s2[j]='0' then u2:=u; for k:=1 to u2 do begin QRPreview1.QRPrinter.Canvas.MoveTo(p,100); QRPreview1.QRPrinter.Canvas.LineTo(p,200); //Printer.Canvas.MoveTo(p,1600); //Printer.Canvas.LineTo(p,2100); {無法預覽 QuickRep1.Printer.Canvas.MoveTo(p,100); QuickRep1.Printer.Canvas.LineTo(p,200);} {可以顯示 form1.Canvas.moveto(p,100); form1.Canvas.LineTo(p,200);} p=101 1 p:=p 1; end; p:=p u; end; end; // printer.Canvas.TextOut(p,2200,edit1.text); //Printer.EndDoc ; QRPreview1.Show; //QuickRep1.Preview ; end; procedure TForm1.Button1Click(Sender: TObject); begin PrintCode39(edit1.text); end; function TForm1.pattern(barcode_char: char): string; begin case ord(barcode_char) of 35:ReSult := '1S0010'; 36:ReSult := '0S0S0S00'; 37:ReSult := '00S0S0S0'; 42:ReSult := '0S0110'; 43:ReSult := '0S00S0S0'; 45:ReSult := '0S0011'; 47:ReSult := '0S0S00S0'; 48:ReSult := '00S110'; 49:ReSult := '10S001'; 50:ReSult := '01S001'; 51:ReSult := '11S000'; 52:ReSult := '00S101'; 53:ReSult := '10S100'; 54:ReSult := '01S100'; 55:ReSult := '00S011'; 56:ReSult := '10S010'; 57:ReSult := '01S010'; 65:ReSult := '100S01'; 66:ReSult := '010S01'; 67:ReSult := '110S00'; 68:ReSult := '001S01'; 69:ReSult := '101S00'; 70:ReSult := '011S00'; 71:ReSult := '000S11'; 72:ReSult := '100S10'; 73:ReSult := '010S10'; 74:ReSult := '001S10'; 75:ReSult := '1000S1'; 76:ReSult := '0100S1'; 77:ReSult := '1100S0';//m 78:ReSult := '0010S1'; 79:ReSult := '1010S0'; 80:ReSult := '0110S0'; 81:ReSult := '0001S1'; 82:ReSult := '1001S0'; 83:ReSult := '0101S0'; 84:ReSult := '0011S0'; 85:ReSult := '1S0001'; 86:ReSult := '0S1001'; 87:ReSult := '1S1000'; 88:ReSult := '0S0101'; 89:ReSult := '1S0100'; 90:ReSult := '0S1100'; End; end;
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-06-12 21:59:58 IP:192.168.xxx.xxx 未訂閱
引言: 因一時興起在站上找到條碼製作程式中站長大大提供一篇39條碼的範例程式, 試了一下可以列印0-3的條碼但無法預覽不知問題出在哪裡,請大大給予指教, 並請問如何調整印表機的解析度 ????
好玩!好玩! 大家來玩接力遊戲! 我沒用過TQRPreview元件所以無法告訴您怎用, 關於預視功能我是使用一套可以從TPrinter去產生預視的元件,TPagePrinter, 請見:http://delphi.ktop.com.tw/topic.php?TOPIC_ID=13876 至於取得印表機的解析度可用以下函式: procedure GetPrinterDPI(var DPIX,DPIY:integer); begin dpix:=GetDeviceCaps(Printer.Handle, LogPixelsX); dpiy:=GetDeviceCaps(Printer.Handle, LogPixelsY); end; 例如要畫一條n公分長的條碼就可用 Printer.Canvas.MoveTo(p,0); Printer.Canvas.LineTo(p,DPIY*(n/(2.54))); 接下來有誰要接力? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
wenjung
一般會員


發表:21
回覆:61
積分:21
註冊:2002-04-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-06-13 17:07:38 IP:210.71.xxx.xxx 未訂閱
站長大大,依您所提供的方式送到印表機的條碼會變得很長,且還是無法預覽, 請各位先進惠賜指教(沒有突破很不甘心 )
系統時間:2024-04-26 14:01:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!