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

📄 pbarcodeprinter.pas

📁 BarCodePrint条码打印机打印管理
💻 PAS
📖 第 1 页 / 共 3 页
字号:



        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 + -