📄 pbarcodeprinter.pas
字号:
AssignFile(TheTxtFile,sFileName);
//AssignPrn(TheTxtFile);
Rewrite(TheTxtFile);
WriteLn(TheTxtFile,'^XA^MCY^XZ');
for nJob:=0 to lvwPrintQueue.Items.Count-1 do
begin
// ADODataSetP.CommandText:='select * from NewSite';
// ADODataSetP.Open;
ADODataSetP.Locate('sName', 'HomeX', [loCaseInsensitive]);
sHomeX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'HomeY', [loCaseInsensitive]);
sHomeY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'PartX', [loCaseInsensitive]);
sPartX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'PartY', [loCaseInsensitive]);
sPartY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'CheckCodeX', [loCaseInsensitive]);
sCheckCodeX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'CheckCodeY', [loCaseInsensitive]);
sCheckCodeY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FCodeX', [loCaseInsensitive]);
sFCodeX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FCodeY', [loCaseInsensitive]);
sFCodeY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FCode1X', [loCaseInsensitive]);
sPCode1X:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FCode1Y', [loCaseInsensitive]);
sPCode1Y:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FCode2X', [loCaseInsensitive]);
sPCode2X:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FCode2Y', [loCaseInsensitive]);
sPCode2Y:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FCode3X', [loCaseInsensitive]);
sPCode3X:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FCode3Y', [loCaseInsensitive]);
sPCode3Y:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'ProcessX', [loCaseInsensitive]);
sProcessCodeX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'ProcessY', [loCaseInsensitive]);
sProcessCodeY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FLotNoX', [loCaseInsensitive]);
sFLotNoX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FLotNoY', [loCaseInsensitive]);
SFLotNoY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'LotNoX', [loCaseInsensitive]);
sLotNoX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'LotNoY', [loCaseInsensitive]);
sLotNoY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FQtyX', [loCaseInsensitive]);
sFQtyX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'FQtyY', [loCaseInsensitive]);
sFQtyY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'QtyX', [loCaseInsensitive]);
sQtyX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'QtyY', [loCaseInsensitive]);
sQtyY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'PcsX', [loCaseInsensitive]);
sPcsX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'PcsY', [loCaseInsensitive]);
sPcsY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'BarCodeX', [loCaseInsensitive]);
sBarCodeX:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'BarCodeY', [loCaseInsensitive]);
sBarCodeY:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'BarWidth', [loCaseInsensitive]);
sBarWidth:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'BarRatio', [loCaseInsensitive]);
sBarRatio:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'BarHeight', [loCaseInsensitive]);
sBarHeight:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'LineY1', [loCaseInsensitive]);
sLineY1:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'LineY2', [loCaseInsensitive]);
sLineY2:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'LineY3', [loCaseInsensitive]);
sLineY3:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'LineY4', [loCaseInsensitive]);
sLineY4:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'LineY5', [loCaseInsensitive]);
sLineY5:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
ADODataSetP.Locate('sName', 'LineY6', [loCaseInsensitive]);
sLineY6:=IntToStr(ADODataSetP.FieldByName('sValue').AsInteger);
// ADODataSetP.Close;
// ADODataSetP.Free;
/////////////////////////////////////////
//my code 2001.05.07
//showmessage('the value is :'+GetValue(lvwPrintQueue.Items[nJob].SubItems.Strings[1]));
/////////////////////////////////////////
//personal use in 7M,7N
if (copy(lvwPrintQueue.Items[nJob].SubItems.Strings[1],1,2)='7M') or (copy(lvwPrintQueue.Items[nJob].SubItems.Strings[1],1,2)='7N') then
begin
vDif:=strtoint(sPCode1X)-strtoint(sFCodeX);
NewPosX:=inttostr(StrToInt(sFCodeX)+150);
sPCode1X:=IntToStr(StrToInt(sPCode1X)-vDif);
sPCode1Y:=sLineY2;
sPCode2X:=IntToStr(StrToInt(sPCode2X)-vDif);
sPCode2Y:=sLineY2;
sPCode3X:=IntToStr(StrToInt(sPCode3X)-vDif);
sPCode3Y:=sLineY2;
sProcessCodeX:=inttostr(StrToInt(sPCode3X)+100);
sProcessCodeY:=sLineY2;
sFCodeY:=sLineY4;
SFLotNoY:=sLineY5;
sLotNoY:=sLineY5;
sFQtyY:=sLineY5;
sQtyY:=sLineY5;
sPcsY:=sLineY5;
sBarCodeY:=sLineY6;
sPartX:=INTTOSTR(sTRTOINT(sPartX)+200);
//WriteLn(TheTxtFile,'^FO'+NewPosX+','+sLineY5+'^A0,35,30^FD'+GetValue(lvwPrintQueue.Items[nJob].SubItems.Strings[1])+'^FS');
end;
sLotNo:=(lvwPrintQueue.Items[nJob].Caption);
sHeNo:=uppercase(lvwPrintQueue.Items[nJob].SubItems.Strings[0]);
sProductCode:=uppercase(lvwPrintQueue.Items[nJob].SubItems.Strings[1]);
sProcessCode:=uppercase(lvwPrintQueue.Items[nJob].SubItems.Strings[2]);
sCheckCode:=uppercase(lvwPrintQueue.Items[nJob].SubItems.Strings[3]);
sUnit:=lvwPrintQueue.Items[nJob].SubItems.Strings[5];
nStart:=StrToInt(lvwPrintQueue.Items[nJob].subItems.Strings[6]);
nEnd:=StrToInt(lvwPrintQueue.Items[nJob].SubItems.Strings[7]);
sPartCode:=trim(lvwPrintQueue.Items[nJob].SubItems.Strings[8]);
//First Label
sLabelNo:=IntToStr(nStart);
if Length(sLabelNo)<2 then sLabelNo:=StringOfChar('0',2-Length(sLabelNo))+sLabelNo;
if Length(sLabelNo)<2 then sLabelNo:=StringOfChar('0',2-Length(sLabelNo))+sLabelNo;
if Length(sUnit)<4 then sUnit:=StringOfChar('0',4-Length(sUnit))+sUnit;
sBarCode:=uppercase(sCheckCode+sUnit+sHeNo+sLabelNo+sCompanyCode);
if nBarCode=0 then begin
sBarWidth:='2';
WriteLn(TheTxtFile,'^XA^BY2^XZ');
end
else
begin
sBarWidth:='3';
WriteLn(TheTxtFile,'^XA^BY3^XZ');
end;
WriteLn(TheTxtFile,'^XA');
WriteLn(TheTxtFile,'^LH'+sHomeX+','+sHomeY);
if sPartCode<>'' then
WriteLn(TheTxtFile,'^FO'+sPartX+','+sPartY+'^A0,35,30^FD'+sPartCode+'^FS');
WriteLn(TheTxtFile,'^FO'+sCheckCodeX+','+sCheckCodeY+'^A0,35,30^FD'+sCheckCode+'^FS');
WriteLn(TheTxtFile,'^FO'+sFCodeX+','+sFCodeY+'^A0,35,30^FDCODE^FS');
//my program
if (copy(lvwPrintQueue.Items[nJob].SubItems.Strings[1],1,2)='7M') or (copy(lvwPrintQueue.Items[nJob].SubItems.Strings[1],1,2)='7N') then
begin
WriteLn(TheTxtFile,'^FO'+NewPosX+','+sFCodeY+'^A0,35,30^FD'+GetValue(lvwPrintQueue.Items[nJob].SubItems.Strings[1])+'^FS');
WriteLn(TheTxtFile,'^FO330,100^A0,35,30^FD+^FS');
WriteLn(TheTxtFile,'^FO336,95^A0,40,30^FD_^FS');
end;
WriteLn(TheTxtFile,'^FO'+sPCode1X+','+sPCode1Y+'^A0,35,30^FD'+copy(sProductCode,1,2)+'^FS');
WriteLn(TheTxtFile,'^FO'+sPCode2X+','+sPCode2Y+'^A0,35,30^FD'+copy(sProductCode,3,2)+'^FS');
WriteLn(TheTxtFile,'^FO'+sPCode3X+','+sPCode3Y+'^A0,35,30^FD'+copy(sProductCode,5,5)+'^FS');
WriteLn(TheTxtFile,'^FO'+sProcessCodeX+','+sProcessCodeY+'^A0,35,30^FD'+sProcessCode+'^FS');
WriteLn(TheTxtFile,'^FO'+sFLotNoX+','+sFLotNoY+'^A0,35,30^FDLOT.NO.^FS');
if sHeNo<>'QQQQQQQ' then
WriteLn(TheTxtFile,'^FO'+sLotNoX+','+sLotNoY+'^A0,35,30^FD'+sCompanyCode+sHeNo+'^FS');
WriteLn(TheTxtFile,'^FO'+sFQtyX+','+sFQtyY+'^A0,35,30^FDQ''TY^FS');
WriteLn(TheTxtFile,'^FO'+sQtyX+','+sQtyY+'^A0,35,30^FD'+sUnit+'^FS');
WriteLn(TheTxtFile,'^FO'+sPcsX+','+sPcsY+'^A0,35,30^FDPCS^FS');
if nBarCode=0 then
WriteLn(TheTxtFile,'^FO'+sBarCodeX+','+sBarCodeY+'BY'+
sBarWidth+','+sBarRatio+'.0^B3N,,'+sBarHeight+'^FV'+sBarCode+'^FS')
else
WriteLn(TheTxtFile,'^FO'+sBarCodeX+','+sBarCodeY+'^BC,'+sBarHeight+'^FV'+sBarCode+'^FS');
WriteLn(TheTxtFile,'^MCN');
WriteLn(TheTxtFile,'^XZ');
for nNowLabel:=nStart+1 to nEnd do
begin
WriteLn(TheTxtFile,'^XA');
sLabelNo:=IntToStr(nNowLabel);
if Length(sLabelNo)<2 then sLabelNo:=StringOfChar('0',2-Length(sLabelNo))+sLabelNo;
sBarCode:=uppercase(sCheckCode+sUnit+sHeNo+sLabelNo+sCompanyCode);
if nBarCode=0 then
WriteLn(TheTxtFile,'^FO'+sBarCodeX+','+sBarCodeY+'BY'+
sBarWidth+','+sBarRatio+'.0^B3N,,'+sBarHeight+'^FV'+sBarCode+'^FS')
else
WriteLn(TheTxtFile,'^FO'+sBarCodeX+','+sBarCodeY+'^BC,'+sBarHeight+'^FV'+sBarCode+'^FS');
WriteLn(TheTxtFile,'^XZ');
end;
WriteLn(TheTxtFile,'^XA^MCY^XZ');
end;
System.CloseFile(TheTxtFile);
strpcopy(sSysDirName,sFileName);
try
if nPort=0 then
CopyFile(sSysDirName,'LPT1',True)
else
CopyFile(sSysDirName,'LPT2',True);
except
Application.MessageBox('无法连接条码打印机,请检查打印机连接是否正常.','错误提示',MB_OK);
exit;
end;
end;//end of printer select;
ADODataSetP.Close;
ADODataSetP.Free;
lvwPrintQueue.Items.Clear;
end;
procedure TBarCodePrinter.N6Click(Sender: TObject);
var
ListNow:TListItem;
ListNext:TListItem;
begin
if lvwPrintQueue.SelCount>0 then
if Application.MessageBox('确定删除此打印作业吗?','提示',MB_OKCANCEL + MB_DEFBUTTON1)=ID_OK then
begin
ListNow:=TListItem.Create(Nil);
ListNext:=TListItem.Create(Nil);
if lvwPrintQueue.SelCount>0 then
ListNow:=lvwPrintQueue.Selected;
while ListNow<>Nil do
begin
ListNext:=lvwPrintQueue.GetNextItem(ListNow,sdAll,[isSelected]);
lvwPrintQueue.Items.Delete(ListNow.Index);
ListNow:=ListNext;
end;
ListNow.Free;
ListNext.Free;
end;
end;
procedure TBarCodePrinter.N39Click(Sender: TObject);
begin
if UserCode='001' then
begin
if not assigned(FormHistory) then FormHistory:=TFormHistory.Create(Self);
FormHistory.Show;
end
else
Application.MessageBox('需要管理员权限!','提示',MB_OK);
end;
procedure TBarCodePrinter.N1Click(Sender: TObject);
begin
FormSet:=TFormSet.Create(Self);
FormSet.ShowModal;
FormSet.Free;
end;
procedure TBarCodePrinter.N7Click(Sender: TObject);
begin
if lvwPrintQueue.Selected=Nil then exit ;
if lvwPrintQueue.Selected.ImageIndex=13 then
begin
if not assigned(FormEditJob) then FormEditJob:=TFormEditJob.Create(Self);
FormEditJob.EditLotNo.Text:=lvwPrintQueue.Selected.Caption;
FormEditJob.show;
end;
if lvwPrintQueue.Selected.ImageIndex=14 then
begin
if not assigned(FormEditJobB) then FormEditJobB:=TFormEditJobB.Create(Self);
FormEditJobB.EditLotNo.Text:=lvwPrintQueue.Selected.Caption;
FormEditJobB.EditAmount.Text:=lvwPrintQueue.Selected.SubItems.Strings[4];
FormEditJobB.show;
end;
if lvwPrintQueue.Selected.ImageIndex=-1 then
begin
if not assigned(FormEditJobC) then FormEditJobC:=TFormEditJobC.Create(Self);
FormEditJobC.EditCode.Text:=lvwPrintQueue.Selected.SubItems.Strings[1]+lvwPrintQueue.Selected.SubItems.Strings[2];
FormEditJobC.EditAmount.Text:=lvwPrintQueue.Selected.SubItems.Strings[4];
FormEditJobC.show;
end;
end;
procedure TBarCodePrinter.mnNewSiteClick(Sender: TObject);
begin
with TfrmNewSiteEdit.Create(nil) do
begin
showmodal;
free;
end;
end;
initialization
CoInitialize(nil);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -