📄 pbarcodeprinter.pas
字号:
FormPrintType.Show;
end;
procedure TBarCodePrinter.N30Click(Sender: TObject);
var
RangeE:Excel97.Range; //Excel97
RangeF,RangeS:Excel97.Range;
sFileName:String;
rRowHeight:array[1..8] of single;
nTotalLabel:Integer;
nNowRow,nNowCol:Integer;
nNowLabel:Integer;
nInRow,nInCol:Integer;
sPartCode,sCheckCode:String;
sProductCode,sProcessCode:String;
sLotNo,sUnit:String;
sHeNo,sLabelNo:String;
sBarCode:String;
nI:Integer;
nJob:Integer;
nStart,nEnd:Integer;
nRowNum,nColNum,nLabelPerRow:Integer;
nBaseRow,nBaseCol:Integer;
ADODataSetP:TADODataSet;
sS,sM:String;
sSysDirName:array[0..255] of char;
sHomeX,sHomeY:String;
sPartX,sPartY:String;
sCheckCodeX,sCheckCodeY:String;
sFCodeX,sFCodeY:String;
sPCode1X,sPCode1Y,sPCode2X,sPCode2Y,sPCode3X,sPCode3Y:String;
sProcessCodeX,sProcessCodeY:String;
sFLotNoX,SFLotNoY:String;
sLotNoX,sLotNoY:String;
sFQtyX,sFQtyY:String;
sQtyX,sQtyY:String;
sPcsX,sPcsY:String;
sBarCodeX,sBarCodeY:String;
sBarWidth:String;
sBarRatio:String;
sBarHeight:String;
NewPosX:String; //personal site
sLineY1,sLineY2,sLineY3,sLineY4,sLineY5,sLineY6:String; //line pos
vDif:Integer;
TheTxtFile:TextFile;
begin
if nPrinter=0 then begin
{ nRowNum:=8;
nColNum:=6;
nLabelPerRow:=3;
//sCompanyCode:='Q';
if lvwPrintQueue.Items.Count<=0 then exit;
if Application.MessageBox('现在开始打印作业吗?','提示',MB_OKCANCEL + MB_DEFBUTTON1)=ID_CANCEL then
exit;
GetSystemDirectory(sSysDirName,255);
sModelName:=sSysDirName;
sModelName:=sModelName+'\Model.xlt';
if FileExists(sModelName)=False then
begin
Application.MessageBox('缺少打印服务器!','提示',MB_OK);
exit;
end;
sFileName:=ExtractFilePath(Application.ExeName)+'Model.xls';
if FileExists(sFileName) then DeleteFile(sFileName);
app.Workbooks.Add(sModelName,0);
for nI:=1 to 8 do
begin
RangeE:=app.Range['A'+IntToStr(nI),'B'+IntToStr(nI)];
rRowHeight[nI]:=RangeE.RowHeight;
end;
ADODataSetP:=TADODataSet.Create(Self);
ADODataSetP.Connection:=DataModuleMain.ADOConnectionBarCode;
ADODataSetP.CursorType:=ctStatic;
ADODataSetP.LockType:=ltReadOnly;
ADODataSetP.CommandText:='select * from Print';
ADODataSetP.Open;
nTotalLabel:=0;
RangeE:=app.Range['A1',chr(ord('A')+nColNum-1)+IntToStr(nRowNum)];
sS:=chr(ord('A')+nColNum-1)+IntToStr(nRowNum);
for nJob:=0 to lvwPrintQueue.Items.Count-1 do
begin
sLotNo:=uppercase(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]);
for nNowLabel:=nStart to nEnd do
begin
nTotalLabel:=nTotalLabel+1;
nBaseRow:=((nTotalLabel-1) div nLabelPerRow)*nRowNum;
nBaseCol:=((nTotalLabel-1) mod nLabelPerRow)*nColNum;
sS:=chr(nBaseCol+ord('A'))+IntToStr(nBaseRow+1);
sM:=chr(nBaseCol+ord('A')+nColNum-1)+IntToStr(nBaseRow+nRowNum);
sLabelNo:=IntToStr(nNowLabel);
if Length(sLabelNo)<2 then sLabelNo:=StringOfChar('0',2-Length(sLabelNo))+sLabelNo;
if Length(sUnit)<4 then sUnit:=StringOfChar('0',4-Length(sUnit));
RangeF:=app.Range[chr(nBaseCol+ord('A'))+IntToStr(nBaseRow+1),chr(nBaseCol+ord('A')+nColNum-1)+IntToStr(nBaseRow+nRowNum)];
RangeE.Copy(RangeF);
if (nTotalLabel mod nLabelPerRow)=0 then
for nI:=1 to 8 do
begin
RangeS:=app.Range['A'+IntToStr(nBaseRow+nI),'B'+IntToStr(nBaseRow+nI)];
RangeS.RowHeight :=rRowHeight[nI];
end;
while not ADODataSetP.Eof do
begin
nInRow:=ADODataSetP.FieldByName('Row').AsInteger;
nInCol:=ADODataSetP.FieldByName('Col').AsInteger;
sBarCode:=uppercase('*'+sCheckCode+sUnit+sHeNo+sLabelNo+sCompanyCode+'*');
if trim(ADODataSetP.FieldByName('Name').AsString)='PartsCode' then
RangeF.Item[nInRow,nInCol]:=sPartCode;
if trim(ADODataSetP.FieldByName('Name').AsString)='ProcessCode' then
RangeF.Item[nInRow,nInCol]:=sProcessCode;
if trim(ADODataSetP.FieldByName('Name').AsString)='CheckCode' then
RangeF.Item[nInRow,nInCol]:=sCheckCode;
if trim(ADODataSetP.FieldByName('Name').AsString)='ProductCode1' then
RangeF.Item[nInRow,nInCol]:=copy(sProductCode,1,2);
if trim(ADODataSetP.FieldByName('Name').AsString)='ProductCode2' then
RangeF.Item[nInRow,nInCol]:=copy(sProductCode,3,2);
if trim(ADODataSetP.FieldByName('Name').AsString)='ProductCode3' then
RangeF.Item[nInRow,nInCol]:=copy(sProductCode,5,4);
if trim(ADODataSetP.FieldByName('Name').AsString)='LotNo' then
RangeF.Item[nInRow,nInCol]:='LOT.NO. '+sCompanyCode+sHeNo;
if trim(ADODataSetP.FieldByName('Name').AsString)='PackUnit' then
RangeF.Item[nInRow,nInCol]:=sUnit;
if trim(ADODataSetP.FieldByName('Name').AsString)='BarCode' then
begin
RangeF.Item[nInRow,nInCol]:=sBarCode;
RangeF.Item[nInRow+1,nInCol+1]:=copy(sBarCode,2,Length(sBarCode)-2);
end;
ADODataSetP.Next;
end;
RangeF.Item[2,2]:='CODE';
RangeF.Item[3,6]:='PCS';
RangeF.Item[3,4]:='Q''TY';
ADODataSetP.First;
end;
end;
app.Workbooks.Item[1].SaveAs(sFileName,xlExcel9795,'','',False,False,xlExclusive,xlLocalSessionChanges,NUll,NULL,NULL,0);
app.Workbooks.Item[1].PrintOut(1,1,1,False,Null,False,0,0);
app.Workbooks.Item[1].Close(False,'',null,0);
ADODataSetP.Close;
ADODataSetP.Free;
} end //end of normal printer
else
begin
if lvwPrintQueue.Items.Count<=0 then exit;
if Application.MessageBox('现在开始打印作业吗?','提示',MB_OKCANCEL + MB_DEFBUTTON1)=ID_CANCEL then
exit;
sFileName:=ExtractFilePath(Application.ExeName)+'PRINT.ZPL';
if FileExists(sFileName) then DeleteFile(sFileName);
ADODataSetP:=TADODataSet.Create(Self);
ADODataSetP.Connection:=DataModuleMain.ADOConnectionBarCode;
ADODataSetP.CursorType:=ctStatic;
ADODataSetP.LockType:=ltReadOnly;
{//scm old program
ADODataSetP.CommandText:='select * from Site';
ADODataSetP.Open;
sHomeX:=IntToStr(ADODataSetP.FieldByName('HomeX').AsInteger);
sHomeY:=IntToStr(ADODataSetP.FieldByName('HomeY').AsInteger);
sPartX:=IntToStr(ADODataSetP.FieldByName('PartX').AsInteger);
sPartY:=IntToStr(ADODataSetP.FieldByName('PartY').AsInteger);
sCheckCodeX:=IntToStr(ADODataSetP.FieldByName('CheckCodeX').AsInteger);
sCheckCodeY:=IntToStr(ADODataSetP.FieldByName('CheckCodeY').AsInteger);
sFCodeX:=IntToStr(ADODataSetP.FieldByName('FCodeX').AsInteger);
sFCodeY:=IntToStr(ADODataSetP.FieldByName('FCodeY').AsInteger);
sPCode1X:=IntToStr(ADODataSetP.FieldByName('PCode1X').AsInteger);
sPCode1Y:=IntToStr(ADODataSetP.FieldByName('PCode1Y').AsInteger);
sPCode2X:=IntToStr(ADODataSetP.FieldByName('PCode2X').AsInteger);
sPCode2Y:=IntToStr(ADODataSetP.FieldByName('PCode2Y').AsInteger);
sPCode3X:=IntToStr(ADODataSetP.FieldByName('PCode3X').AsInteger);
sPCode3Y:=IntToStr(ADODataSetP.FieldByName('PCode3Y').AsInteger);
sProcessCodeX:=IntToStr(ADODataSetP.FieldByName('ProcessX').AsInteger);
sProcessCodeY:=IntToStr(ADODataSetP.FieldByName('ProcessY').AsInteger);
sFLotNoX:=IntToStr(ADODataSetP.FieldByName('FLotNoX').AsInteger);
SFLotNoY:=IntToStr(ADODataSetP.FieldByName('FLotNoY').AsInteger);
sLotNoX:=IntToStr(ADODataSetP.FieldByName('LotNoX').AsInteger);
sLotNoY:=IntToStr(ADODataSetP.FieldByName('LotNoY').AsInteger);
sFQtyX:=IntToStr(ADODataSetP.FieldByName('FQtyX').AsInteger);
sFQtyY:=IntToStr(ADODataSetP.FieldByName('FQtyY').AsInteger);
sQtyX:=IntToStr(ADODataSetP.FieldByName('QtyX').AsInteger);
sQtyY:=IntToStr(ADODataSetP.FieldByName('QtyY').AsInteger);
sPcsX:=IntToStr(ADODataSetP.FieldByName('PcsX').AsInteger);
sPcsY:=IntToStr(ADODataSetP.FieldByName('PcsY').AsInteger);
sBarCodeX:=IntToStr(ADODataSetP.FieldByName('BarCodeX').AsInteger);
sBarCodeY:=IntToStr(ADODataSetP.FieldByName('BarCodeY').AsInteger);
sBarWidth:=IntToStr(ADODataSetP.FieldByName('BarWidth').AsInteger);
sBarRatio:=IntToStr(ADODataSetP.FieldByName('BarRatio').AsInteger);
sBarHeight:=IntToStr(ADODataSetP.FieldByName('BarHeight').AsInteger);
ADODataSetP.Close;
ADODataSetP.Free;
///////////}
//my program 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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -