⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pbarcodeprinter.pas

📁 BarCodePrint条码打印机打印管理
💻 PAS
📖 第 1 页 / 共 3 页
字号:
       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 + -