我用报表做的。下面是源码。procedure Code39print(x_pos ,y_pos,bar_width:real;code:string;Rep:TQuickRep); //x_pos ,y_pos,bar_widthµÄ³¤¶Èµ¥Î»ÎªÙñÃ× var aQRShape:array[1..75]of TQRShape; aQRLabel:TQRLabel; Bar_Card:string; Bar_Print:string; Temp_Card:string; Bar_Table:array[1..40] of string; i,j,k,Cal_Card:integer; X_Scan,y_scan:real; begin // x_pos £¬y_pos ΪÌõÂë´òÓ¡µÄÆðʼλÖà //Bar_Width ÌõÂëÕ­ÏߵĿí¶È //code ,Òª´òÓ¡µÄ×Ö·û´® aQRLabel:=TQRLabel.create(Rep); aQRLabel.parent:=Rep; aQRLabel.Caption:=code; aQRLabel.size.Top:=y_pos+BarHight; aQRLabel.size.Left:=x_pos; x_scan:= x_pos; y_scan := y_pos; Bar_Table[1]:='00110-0100'; // 0 Bar_Table[2]:='10001-0100'; // 1 Bar_Table[3]:='01001-0100'; // 2 Bar_Table[4]:='11000-0100'; // 3 Bar_Table[5]:='00101-0100'; // 4 Bar_Table[6]:='10100-0100'; // 5 Bar_Table[7]:='01100-0100'; // 6 Bar_Table[8]:='00011-0100'; // 7 Bar_Table[9]:='10010-0100'; // 8 Bar_Table[10]:='01010-0100'; // 9 Bar_Table[11]:='10001-0010'; // A Bar_Table[12]:='01001-0010'; // B Bar_Table[13]:='11000-0010'; // C Bar_Table[14]:='00101-0010'; // D Bar_Table[15]:='10100-0010'; // E Bar_Table[16]:='01100-0010'; // F Bar_Table[17]:='00011-0010'; // G Bar_Table[18]:='10010-0010'; // H Bar_Table[19]:='01010-0010'; // I Bar_Table[20]:='00110-0010'; // J Bar_Table[21]:='10001-0001'; // K Bar_Table[22]:='01001-0001'; // L Bar_Table[23]:='11000-0001'; // M Bar_Table[24]:='00101-0001'; // N Bar_Table[25]:='10100-0001'; // O Bar_Table[26]:='01100-0001'; // P Bar_Table[27]:='00011-0001'; // Q Bar_Table[28]:='10010-0001'; // R Bar_Table[29]:='01010-0001'; // S Bar_Table[30]:='00110-0001'; // T Bar_Table[31]:='10001-1000'; // U Bar_Table[32]:='01001-1000'; // V Bar_Table[33]:='11000-1000'; // W Bar_Table[34]:='00101-1000'; // X Bar_Table[35]:='10100-1000'; // Y Bar_Table[36]:='01100-1000'; // Z Bar_Table[37]:='00011-1000'; // - Bar_Table[38]:='10010-1000'; // % Bar_Table[39]:='01010-1000'; // $ Bar_Table[40]:='00110-1000'; // *Bar_Card := uppercase(code); k:=length(bar_card); if bar_card[1]<>'*' then Bar_Print:= '*' + Bar_Card; // Ìí¼ÓÆðʼ·û if bar_card[k]<>'*' then Bar_Print := Bar_Print + '*'; // Ìí¼Ó½áÊø·ûfor j:=1 to length(Bar_Print) do begin if (Bar_Print[j] = '*') then Cal_Card := 40 else if (Bar_Print[j]='-') then Cal_Card := 37 else if (Bar_Print[j]>= 'A') then Cal_Card := 11 + ord(Bar_Print[j])-ord('A') else if (Bar_Print[j]>='0') then Cal_Card := 1 + ord(Bar_Print[j])-ord('0') else continue; Temp_Card := Bar_Table[Cal_Card]; for i := 1 to 5 do begin if (Temp_Card[i] = '0') then begin aQRShape[(j-1)*5+i]:=TQRShape.create(Rep); aQrShape[(j-1)*5+i].parent:=Rep; aQRShape[(j-1)*5+i].Brush.color:=clblack; aQRShape[(j-1)*5+i].size.Left:=X_Scan; aQRShape[(j-1)*5+i].size.Top:=y_scan; aQRShape[(j-1)*5+i].size.Width:=Bar_Width; aQRShape[(j-1)*5+i].size.Height:=BarHight; X_Scan := X_Scan + Bar_Width; end else begin aQRShape[(j-1)*5+i]:=TQRShape.create(Rep); aQrShape[(j-1)*5+i].parent:=Rep; aQRShape[(j-1)*5+i].Brush.color:=clblack; aQRShape[(j-1)*5+i].size.Left:=X_Scan; aQRShape[(j-1)*5+i].size.Top:=y_scan; aQRShape[(j-1)*5+i].size.Width:=2*Bar_Width; aQRShape[(j-1)*5+i].size.Height:=BarHight; X_Scan := X_Scan + 2*Bar_Width; end; if (Temp_Card[6 + i]= '1') then X_Scan := X_Scan + 2*Bar_Width else X_Scan := X_Scan + Bar_Width; end; end; //rep.preview; end;
TO jyu1221(天同) 自己写的识别不出来,我觉的很正常,但是,用字体它不应该不识别啊
调用方法:procedure TfrmPrintNO.BitBtn4Click(Sender: TObject); begin if length(Edit1.Text)>1 then begin dzreport3:=Tdzreport3.create(self); dzreport3.ParentWindow:=self.Handle; Code39print(23,3,0.3,Edit1.Text,dzreport3); dzreport3.free; end; end;
用7.0吧!他的RAVA报表中有条码!
源代码,用报表做的:procedure Code39print(x_pos ,y_pos,bar_width:real;code:string;Rep:TQuickRep); //x_pos ,y_pos,bar_widthµÄ³¤¶Èµ¥Î»ÎªÙñÃ× var aQRShape:array[1..75]of TQRShape; aQRLabel:TQRLabel; Bar_Card:string; Bar_Print:string; Temp_Card:string; Bar_Table:array[1..40] of string; i,j,k,Cal_Card:integer; X_Scan,y_scan:real; begin // x_pos £¬y_pos ΪÌõÂë´òÓ¡µÄÆðʼλÖà //Bar_Width ÌõÂëÕ­ÏߵĿí¶È //code ,Òª´òÓ¡µÄ×Ö·û´® aQRLabel:=TQRLabel.create(Rep); aQRLabel.parent:=Rep; aQRLabel.Caption:=code; aQRLabel.size.Top:=y_pos+BarHight; aQRLabel.size.Left:=x_pos; x_scan:= x_pos; y_scan := y_pos; Bar_Table[1]:='00110-0100'; // 0 Bar_Table[2]:='10001-0100'; // 1 Bar_Table[3]:='01001-0100'; // 2 Bar_Table[4]:='11000-0100'; // 3 Bar_Table[5]:='00101-0100'; // 4 Bar_Table[6]:='10100-0100'; // 5 Bar_Table[7]:='01100-0100'; // 6 Bar_Table[8]:='00011-0100'; // 7 Bar_Table[9]:='10010-0100'; // 8 Bar_Table[10]:='01010-0100'; // 9 Bar_Table[11]:='10001-0010'; // A Bar_Table[12]:='01001-0010'; // B Bar_Table[13]:='11000-0010'; // C Bar_Table[14]:='00101-0010'; // D Bar_Table[15]:='10100-0010'; // E Bar_Table[16]:='01100-0010'; // F Bar_Table[17]:='00011-0010'; // G Bar_Table[18]:='10010-0010'; // H Bar_Table[19]:='01010-0010'; // I Bar_Table[20]:='00110-0010'; // J Bar_Table[21]:='10001-0001'; // K Bar_Table[22]:='01001-0001'; // L Bar_Table[23]:='11000-0001'; // M Bar_Table[24]:='00101-0001'; // N Bar_Table[25]:='10100-0001'; // O Bar_Table[26]:='01100-0001'; // P Bar_Table[27]:='00011-0001'; // Q Bar_Table[28]:='10010-0001'; // R Bar_Table[29]:='01010-0001'; // S Bar_Table[30]:='00110-0001'; // T Bar_Table[31]:='10001-1000'; // U Bar_Table[32]:='01001-1000'; // V Bar_Table[33]:='11000-1000'; // W Bar_Table[34]:='00101-1000'; // X Bar_Table[35]:='10100-1000'; // Y Bar_Table[36]:='01100-1000'; // Z Bar_Table[37]:='00011-1000'; // - Bar_Table[38]:='10010-1000'; // % Bar_Table[39]:='01010-1000'; // $ Bar_Table[40]:='00110-1000'; // *
dzreport3 我那有啊? 没有的啊; HP DeskJet 2000;
Bar_Card := uppercase(code); k:=length(bar_card); if bar_card[1]<>'*' then Bar_Print:= '*' + Bar_Card; // Ìí¼ÓÆðʼ·û if bar_card[k]<>'*' then Bar_Print := Bar_Print + '*'; // Ìí¼Ó½áÊø·ûfor j:=1 to length(Bar_Print) do begin if (Bar_Print[j] = '*') then Cal_Card := 40 else if (Bar_Print[j]='-') then Cal_Card := 37 else if (Bar_Print[j]>= 'A') then Cal_Card := 11 + ord(Bar_Print[j])-ord('A') else if (Bar_Print[j]>='0') then Cal_Card := 1 + ord(Bar_Print[j])-ord('0') else continue; Temp_Card := Bar_Table[Cal_Card]; for i := 1 to 5 do begin if (Temp_Card[i] = '0') then begin aQRShape[(j-1)*5+i]:=TQRShape.create(Rep); aQrShape[(j-1)*5+i].parent:=Rep; aQRShape[(j-1)*5+i].Brush.color:=clblack; aQRShape[(j-1)*5+i].size.Left:=X_Scan; aQRShape[(j-1)*5+i].size.Top:=y_scan; aQRShape[(j-1)*5+i].size.Width:=Bar_Width; aQRShape[(j-1)*5+i].size.Height:=BarHight; X_Scan := X_Scan + Bar_Width; end
你说这话是不是有点不太对?
人各有所长的;
哎
差不多,如何做?
请教:)
我用HP laserjet 6l。
它只识别13位的
你是怎么做出的条形码?
//x_pos ,y_pos,bar_widthµÄ³¤¶Èµ¥Î»ÎªÙñÃ×
var
aQRShape:array[1..75]of TQRShape;
aQRLabel:TQRLabel;
Bar_Card:string;
Bar_Print:string;
Temp_Card:string;
Bar_Table:array[1..40] of string;
i,j,k,Cal_Card:integer;
X_Scan,y_scan:real;
begin
// x_pos £¬y_pos ΪÌõÂë´òÓ¡µÄÆðʼλÖÃ
//Bar_Width ÌõÂëÕ­ÏߵĿí¶È
//code ,Òª´òÓ¡µÄ×Ö·û´®
aQRLabel:=TQRLabel.create(Rep);
aQRLabel.parent:=Rep;
aQRLabel.Caption:=code;
aQRLabel.size.Top:=y_pos+BarHight;
aQRLabel.size.Left:=x_pos;
x_scan:= x_pos;
y_scan := y_pos;
Bar_Table[1]:='00110-0100'; // 0
Bar_Table[2]:='10001-0100'; // 1
Bar_Table[3]:='01001-0100'; // 2
Bar_Table[4]:='11000-0100'; // 3
Bar_Table[5]:='00101-0100'; // 4
Bar_Table[6]:='10100-0100'; // 5
Bar_Table[7]:='01100-0100'; // 6
Bar_Table[8]:='00011-0100'; // 7
Bar_Table[9]:='10010-0100'; // 8
Bar_Table[10]:='01010-0100'; // 9
Bar_Table[11]:='10001-0010'; // A
Bar_Table[12]:='01001-0010'; // B
Bar_Table[13]:='11000-0010'; // C
Bar_Table[14]:='00101-0010'; // D
Bar_Table[15]:='10100-0010'; // E
Bar_Table[16]:='01100-0010'; // F
Bar_Table[17]:='00011-0010'; // G
Bar_Table[18]:='10010-0010'; // H
Bar_Table[19]:='01010-0010'; // I
Bar_Table[20]:='00110-0010'; // J
Bar_Table[21]:='10001-0001'; // K
Bar_Table[22]:='01001-0001'; // L
Bar_Table[23]:='11000-0001'; // M
Bar_Table[24]:='00101-0001'; // N
Bar_Table[25]:='10100-0001'; // O
Bar_Table[26]:='01100-0001'; // P
Bar_Table[27]:='00011-0001'; // Q
Bar_Table[28]:='10010-0001'; // R
Bar_Table[29]:='01010-0001'; // S
Bar_Table[30]:='00110-0001'; // T
Bar_Table[31]:='10001-1000'; // U
Bar_Table[32]:='01001-1000'; // V
Bar_Table[33]:='11000-1000'; // W
Bar_Table[34]:='00101-1000'; // X
Bar_Table[35]:='10100-1000'; // Y
Bar_Table[36]:='01100-1000'; // Z
Bar_Table[37]:='00011-1000'; // -
Bar_Table[38]:='10010-1000'; // %
Bar_Table[39]:='01010-1000'; // $
Bar_Table[40]:='00110-1000'; // *Bar_Card := uppercase(code);
k:=length(bar_card);
if bar_card[1]<>'*' then
Bar_Print:= '*' + Bar_Card; // Ìí¼ÓÆðʼ·û
if bar_card[k]<>'*' then
Bar_Print := Bar_Print + '*'; // Ìí¼Ó½áÊø·ûfor j:=1 to length(Bar_Print) do
begin
if (Bar_Print[j] = '*') then
Cal_Card := 40
else if (Bar_Print[j]='-') then
Cal_Card := 37
else if (Bar_Print[j]>= 'A') then
Cal_Card := 11 + ord(Bar_Print[j])-ord('A')
else if (Bar_Print[j]>='0') then
Cal_Card := 1 + ord(Bar_Print[j])-ord('0')
else continue;
Temp_Card := Bar_Table[Cal_Card];
for i := 1 to 5 do
begin
if (Temp_Card[i] = '0') then
begin
aQRShape[(j-1)*5+i]:=TQRShape.create(Rep);
aQrShape[(j-1)*5+i].parent:=Rep;
aQRShape[(j-1)*5+i].Brush.color:=clblack;
aQRShape[(j-1)*5+i].size.Left:=X_Scan;
aQRShape[(j-1)*5+i].size.Top:=y_scan;
aQRShape[(j-1)*5+i].size.Width:=Bar_Width;
aQRShape[(j-1)*5+i].size.Height:=BarHight;
X_Scan := X_Scan + Bar_Width;
end
else begin
aQRShape[(j-1)*5+i]:=TQRShape.create(Rep);
aQrShape[(j-1)*5+i].parent:=Rep;
aQRShape[(j-1)*5+i].Brush.color:=clblack;
aQRShape[(j-1)*5+i].size.Left:=X_Scan;
aQRShape[(j-1)*5+i].size.Top:=y_scan;
aQRShape[(j-1)*5+i].size.Width:=2*Bar_Width;
aQRShape[(j-1)*5+i].size.Height:=BarHight;
X_Scan := X_Scan + 2*Bar_Width;
end;
if (Temp_Card[6 + i]= '1') then
X_Scan := X_Scan + 2*Bar_Width
else
X_Scan := X_Scan + Bar_Width;
end;
end;
//rep.preview;
end;
自己写的识别不出来,我觉的很正常,但是,用字体它不应该不识别啊
begin
if length(Edit1.Text)>1 then begin
dzreport3:=Tdzreport3.create(self);
dzreport3.ParentWindow:=self.Handle;
Code39print(23,3,0.3,Edit1.Text,dzreport3);
dzreport3.free;
end;
end;
//x_pos ,y_pos,bar_widthµÄ³¤¶Èµ¥Î»ÎªÙñÃ×
var
aQRShape:array[1..75]of TQRShape;
aQRLabel:TQRLabel;
Bar_Card:string;
Bar_Print:string;
Temp_Card:string;
Bar_Table:array[1..40] of string;
i,j,k,Cal_Card:integer;
X_Scan,y_scan:real;
begin
// x_pos £¬y_pos ΪÌõÂë´òÓ¡µÄÆðʼλÖÃ
//Bar_Width ÌõÂëÕ­ÏߵĿí¶È
//code ,Òª´òÓ¡µÄ×Ö·û´®
aQRLabel:=TQRLabel.create(Rep);
aQRLabel.parent:=Rep;
aQRLabel.Caption:=code;
aQRLabel.size.Top:=y_pos+BarHight;
aQRLabel.size.Left:=x_pos;
x_scan:= x_pos;
y_scan := y_pos;
Bar_Table[1]:='00110-0100'; // 0
Bar_Table[2]:='10001-0100'; // 1
Bar_Table[3]:='01001-0100'; // 2
Bar_Table[4]:='11000-0100'; // 3
Bar_Table[5]:='00101-0100'; // 4
Bar_Table[6]:='10100-0100'; // 5
Bar_Table[7]:='01100-0100'; // 6
Bar_Table[8]:='00011-0100'; // 7
Bar_Table[9]:='10010-0100'; // 8
Bar_Table[10]:='01010-0100'; // 9
Bar_Table[11]:='10001-0010'; // A
Bar_Table[12]:='01001-0010'; // B
Bar_Table[13]:='11000-0010'; // C
Bar_Table[14]:='00101-0010'; // D
Bar_Table[15]:='10100-0010'; // E
Bar_Table[16]:='01100-0010'; // F
Bar_Table[17]:='00011-0010'; // G
Bar_Table[18]:='10010-0010'; // H
Bar_Table[19]:='01010-0010'; // I
Bar_Table[20]:='00110-0010'; // J
Bar_Table[21]:='10001-0001'; // K
Bar_Table[22]:='01001-0001'; // L
Bar_Table[23]:='11000-0001'; // M
Bar_Table[24]:='00101-0001'; // N
Bar_Table[25]:='10100-0001'; // O
Bar_Table[26]:='01100-0001'; // P
Bar_Table[27]:='00011-0001'; // Q
Bar_Table[28]:='10010-0001'; // R
Bar_Table[29]:='01010-0001'; // S
Bar_Table[30]:='00110-0001'; // T
Bar_Table[31]:='10001-1000'; // U
Bar_Table[32]:='01001-1000'; // V
Bar_Table[33]:='11000-1000'; // W
Bar_Table[34]:='00101-1000'; // X
Bar_Table[35]:='10100-1000'; // Y
Bar_Table[36]:='01100-1000'; // Z
Bar_Table[37]:='00011-1000'; // -
Bar_Table[38]:='10010-1000'; // %
Bar_Table[39]:='01010-1000'; // $
Bar_Table[40]:='00110-1000'; // *
我那有啊?
没有的啊;
HP DeskJet 2000;
k:=length(bar_card);
if bar_card[1]<>'*' then
Bar_Print:= '*' + Bar_Card; // Ìí¼ÓÆðʼ·û
if bar_card[k]<>'*' then
Bar_Print := Bar_Print + '*'; // Ìí¼Ó½áÊø·ûfor j:=1 to length(Bar_Print) do
begin
if (Bar_Print[j] = '*') then
Cal_Card := 40
else if (Bar_Print[j]='-') then
Cal_Card := 37
else if (Bar_Print[j]>= 'A') then
Cal_Card := 11 + ord(Bar_Print[j])-ord('A')
else if (Bar_Print[j]>='0') then
Cal_Card := 1 + ord(Bar_Print[j])-ord('0')
else continue;
Temp_Card := Bar_Table[Cal_Card];
for i := 1 to 5 do
begin
if (Temp_Card[i] = '0') then
begin
aQRShape[(j-1)*5+i]:=TQRShape.create(Rep);
aQrShape[(j-1)*5+i].parent:=Rep;
aQRShape[(j-1)*5+i].Brush.color:=clblack;
aQRShape[(j-1)*5+i].size.Left:=X_Scan;
aQRShape[(j-1)*5+i].size.Top:=y_scan;
aQRShape[(j-1)*5+i].size.Width:=Bar_Width;
aQRShape[(j-1)*5+i].size.Height:=BarHight;
X_Scan := X_Scan + Bar_Width;
end
aQRShape[(j-1)*5+i]:=TQRShape.create(Rep);
aQrShape[(j-1)*5+i].parent:=Rep;
aQRShape[(j-1)*5+i].Brush.color:=clblack;
aQRShape[(j-1)*5+i].size.Left:=X_Scan;
aQRShape[(j-1)*5+i].size.Top:=y_scan;
aQRShape[(j-1)*5+i].size.Width:=2*Bar_Width;
aQRShape[(j-1)*5+i].size.Height:=BarHight;
X_Scan := X_Scan + 2*Bar_Width;
end;
if (Temp_Card[6 + i]= '1') then
X_Scan := X_Scan + 2*Bar_Width
else
X_Scan := X_Scan + Bar_Width;
end;
end;
rep.preview;
end;
StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls;type
Tdzreport3 = class(TQuickRep)
QRBand1: TQRBand;
QRBand2: TQRBand;
private
public end;var
dzreport3: Tdzreport3;implementation{$R *.DFM}end.
你别晕,再晕我就完完了:)
http://www.barcodes.com.cn/
书上的条形码是不是EAN-13字体打印的?
呵呵,你用一下试试,应该没问题,我编它很久了。