如何預覽條碼 |
|
wenjung
一般會員 發表:21 回覆:61 積分:21 註冊:2002-04-29 發送簡訊給我 |
因一時興起在站上找到條碼製作程式中站長大大提供一篇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 發送簡訊給我 |
引言: 因一時興起在站上找到條碼製作程式中站長大大提供一篇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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |