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

📄 print.cpp

📁 数据采集
💻 CPP
📖 第 1 页 / 共 2 页
字号:
  Button1->Enabled=false;
  Button2->Enabled=false;
  Button3->Enabled=false;
  Repaint();
  print_bb(1);
  Button1->Enabled=true;
  Button2->Enabled=true;
  Button3->Enabled=true;
}

void __fastcall Tform_print::print_bb(int howto) // 打印报表
{
    char str[300];
    int i,j,k,m;
    int selected_sen_cnt=0,selected_rec_cnt=0;
    FILE *fd,*fdlw;
    int now_fileno=0;
    char lwfilename[70],bbfilename[70];
    char fjm[5];   // 分局吗
    char qdbsh[20]; //清单标识号
    AnsiString sb,bh; // 设备,编号

    try{

    if(bd.yh_mode==YH_HD)     {sb="单台面电子轨道衡"; bh="LD102";}
    else if(bd.yh_mode==YH_BT){sb="单台面电子轨道衡"; bh="LD104";}
    else if(bd.yh_mode==YH_LX){sb="单台面电子轨道衡"; bh="LD105";}
    else if(bd.yh_mode==YH_TJX){sb="双台面电子轨道衡"; bh="LD104";}

    LPSYSTEMTIME lpst=new SYSTEMTIME;
    GetLocalTime(lpst);

    if((fd=fopen(FILENO,"rb"))!=NULL){
      char tmp[10];
      sprintf(tmp,"%04d%02d%02d",lpst->wYear,lpst->wMonth,lpst->wDay);
      fread(&fno,sizeof(fno),1,fd);
      if(strcmp(tmp,fno.dt)==0) now_fileno=fno.no;
      else now_fileno=0;
      fclose(fd);
    }

    if(howto==1){ // 选择打印
      for(i=0;i<sen_cnt;i++){
        if(xz_sen[i]==true) selected_sen_cnt++;
      }
      for(i=0;i<rec_cnt;i++){
        if(xz_rec[i]==true) selected_rec_cnt++;
      }
      if(selected_sen_cnt==0 && selected_rec_cnt==0) return;
    }

    Pt->BeginDoc();
    for(m=0,y=0;m<2;m++){ //m==0 发货  m==1 收货  y只初始化一次
      if(howto==1){ // 选择打印
        if(m==0 && selected_sen_cnt==0) continue;
        if(m==1 && selected_rec_cnt==0) break;
      }

      int start,end;
      if(bd.yh_mode==YH_HD)      {start=0;end=2; }
      else if(bd.yh_mode==YH_BT) {start=0;end=4; }
      else if(bd.yh_mode==YH_LX) {start=0;end=2; }
      else if(bd.yh_mode==YH_TJX){start=1;end=2; }

      for(k=start;k<end;k++){ //k==0 原始记录  k==1,2 检测报告
        for(i=0;i<(m==0?sen_cnt:rec_cnt)&&i<MAX_CE;i++){

          if(howto==1){ // 选择打印
            if(m==0 && xz_sen[i]==false) continue;
            if(m==1 && xz_rec[i]==false) continue;
          }

          if(k==0){
            now_fileno++;
            get_bbfilename(bbfilename,lpst->wMonth,lpst->wDay,now_fileno);
            get_lwfilename(lwfilename,lpst->wMonth,lpst->wDay,now_fileno);
          }

          // print
          if(k==0) sprintf(title,"%s公正计量站原始记录",bd.name);
          else sprintf(title,"%s公正计量站检测报告",bd.name);
          x=(wide-w1-maicon->Width-w2)/2;
          Pt->Canvas->Font->Size=12;
          Pt->Canvas->TextOut(x,y,title); x+=w1; //print title
          Pt->Canvas->Draw(x,y,maicon); x+=maicon->Width;  // bmp 打印出错 改为icon
          Pt->Canvas->Font->Size=10;
          Pt->Canvas->TextOut(x,y,add);

          x=10; y+=h1+20; if(y+dy>high){y=0;Pt->NewPage();}
          Pt->Canvas->Font->Size=11;
          sprintf(str," %10s%-20s  检测日期:%s年%s月%s日  时间:%s:%s:%s  编号:%s",
              m==0 ? "发货单位:" : "收货单位:",
              m==0 ? sen[i].dw : rec[i].dw,
              form_main->data->TableName.SubString(1,4).c_str(),
              form_main->data->TableName.SubString(5,2).c_str(),
              form_main->data->TableName.SubString(7,2).c_str(),
              form_main->data->TableName.SubString(10,2).c_str(),
              form_main->data->TableName.SubString(12,2).c_str(),
              form_main->data->TableName.SubString(14,2).c_str(),
              m==0 ? sen[i].bh : rec[i].bh );
          Pt->Canvas->TextOut(x,y,str); y+=dy; if(y+dy>high){y=0;Pt->NewPage();}

          Pt->Canvas->TextOut(  x,y,"┌───┬───┬────┬──────────┬────┬──┬───┬───┬───┬───┬───┐");y+=dy; if(y+dy>high){y=0;Pt->NewPage();}
          if(m==0){
            Pt->Canvas->TextOut(x,y,"│ 序号 │ 车种 │ 车  号 │   收  货  单  位   │ 货  名 │速度│ 毛重 │ 皮重 │ 净重 │ 标重 │ 超欠 │");y+=dy; if(y+dy>high){y=0;Pt->NewPage();}
            Pt->Canvas->TextOut(x,y,"│      │ 车型 │        │                    │        │km/h│   t  │   t  │   t  │   t  │   t  │");y+=dy; if(y+dy>high){y=0;Pt->NewPage();}
          }else{
            Pt->Canvas->TextOut(x,y,"│ 序号 │ 车种 │ 车  号 │   发  货  单  位   │ 货  名 │速度│ 毛重 │ 皮重 │ 净重 │ 标重 │ 超欠 │");y+=dy; if(y+dy>high){y=0;Pt->NewPage();}
            Pt->Canvas->TextOut(x,y,"│      │ 车型 │        │                    │        │km/h│   t  │   t  │   t  │   t  │   t  │");y+=dy; if(y+dy>high){y=0;Pt->NewPage();}
          }

          Pt->Canvas->TextOut(  x,y,"├───┼───┼────┼──────────┼────┼──┼───┼───┼───┼───┼───┤");y+=dy; if(y+dy>high){y=0;Pt->NewPage();}
          float tmao=0.0,tpi=0.0,tpiao=0.0;

          for(j=0;j<(m==0?sen[i].cnt:rec[i].cnt)&&j<MAX_CE;j++){
            form_main->data->MoveBy((m==0?sen[i].no[j]:rec[i].no[j]) - form_main->data->RecNo);
            sprintf(str,"%2s%02d(%02d)%2s%6s%2s%8s%2s%20s%2s%8s%2s%4d%2s%6.02f%2s%6.02f%2s%6.02f%2s%6.02f%2s%6.02f%2s",
              "│",j+1,m==0 ? sen[i].no[j] : rec[i].no[j],
              "│",form_main->data->FindField("Bak3")->AsString.c_str(),
              "│",form_main->data->FindField("Cehao")->AsString.c_str(),
              "│",m==0 ? form_main->data->FindField("Rec")->AsString.c_str() : form_main->data->FindField("Send")->AsString.c_str(),
              "│",form_main->data->FindField("Name")->AsString.c_str(),
              "│",form_main->data->FindField("Spd")->AsInteger ,
              "│",form_main->data->FindField("Mao")->AsFloat,
              "│",form_main->data->FindField("Pi")->AsFloat,
              "│",form_main->data->FindField("Jin")->AsFloat,
              "│",form_main->data->FindField("Piao")->AsFloat,
              "│",form_main->data->FindField("Yq")->AsFloat,
              "│" );
            Pt->Canvas->TextOut(x,y,str);y+=dy; if(y+dy>high){y=0;Pt->NewPage();}
            if(j+1<(m==0?sen[i].cnt:rec[i].cnt)){
              Pt->Canvas->TextOut(x,y,"├───┼───┼────┼──────────┼────┼──┼───┼───┼───┼───┼───┤");y+=dy; if(y+dy>high){y=0;Pt->NewPage();}
            }else{
              Pt->Canvas->TextOut(x,y,"├───┴───┴────┴──────────┴────┴──┴───┴───┴───┴───┴───┤");y+=dy; if(y+dy>high){y=0;Pt->NewPage();}
            }
            tmao +=form_main->data->FindField("Mao") ->AsFloat;
            tpi  +=form_main->data->FindField("Pi")  ->AsFloat;
            tpiao+=form_main->data->FindField("Piao")->AsFloat;
          }
          sprintf(str,"%2s%9s%8s%-9.02f%8s%-9.02f%8s%-9.02f%8s%-9.02f%8s%-9.02f%10s",
             "│","  合计  ",
             "毛重:",tmao,
             "皮重:",tpi,
             "净重:",tmao-tpi,
             "标重:",tpiao,
             "超欠:",tmao-tpi-tpiao,
             "│" );
          Pt->Canvas->TextOut(x,y,str);y+=dy; if(y+dy>high){y=0;Pt->NewPage();}
          Pt->Canvas->TextOut(x,y,    "└───────────────────────────────────────────────────┘");y+=dy; if(y+dy>high){y=0;Pt->NewPage();}

          Pt->Canvas->TextOut(x,y," 检测设备:" + sb + "    " +
                                  "设备编号:" + bh + "    " +
                                  "天气:" + form_main->dirTrain_no->Value + "    " +
                                  "温度:" + form_main->dirBak2->Value + "℃" + "    " +
                                  "相对湿度:" + form_main->dirBak1->Value + "%"); y+=dy; if(y+dy>high){y=0;Pt->NewPage();}

          char tmp[100];
          sprintf(tmp," 检测员:                 校核员:               签发人:             %s",
                   k==0?"领取检测报告人:":"检测单位(盖章)");
          Pt->Canvas->TextOut(x,y,tmp); y+=dy; if(y+dy>high){y=0;Pt->NewPage();}

          y+=10*dy; if(y+dy>high){y=5*dy;Pt->NewPage();}
          Pt->Canvas->TextOut(x,y," ");y+=dy; if(y+dy>high){y=0;Pt->NewPage();}

          // write bbfile and lw
          if(k==0){ // only write once
            if( (fd  =fopen(bbfilename,"wb"))!=NULL  &&
                (fdlw=fopen(lwfilename,"wb"))!=NULL ){
              // 分局吗,清单标识号
              if(bd.yh_mode==YH_HD){
                strcpy(fjm,"sjp");
                sprintf(qdbsh,"%3s%3s%4s%03d",fjm,"020",
                   form_main->data->TableName.SubString(5,4).c_str(),
                   now_fileno);
              }else if(bd.yh_mode==YH_BT){
                strcpy(fjm,"sjp");
                sprintf(qdbsh,"%3s%3s%4s%03d",fjm,"041",
                   form_main->data->TableName.SubString(5,4).c_str(),
                   now_fileno);
              }else if(bd.yh_mode==YH_LX){
                strcpy(fjm,"sjp");
                sprintf(qdbsh,"%3s%3s%4s%03d",fjm,"131",
                   form_main->data->TableName.SubString(5,4).c_str(),
                   now_fileno);
              }

              // 标记行
              sprintf( str,"%c,%s,%s,%c,%s,%s%c%c",
                     'f',
                     qdbsh, //清单标识号
                     fjm,  // 分局吗
                     m==0 ? 'f' : 'd' ,
                     form_main->data->TableName.SubString(1,8).c_str(),
                     form_main->data->TableName.SubString(10,4).c_str(),
                     '\r','\n');
              fwrite(str,strlen(str),1,fd);
              fwrite(str,strlen(str),1,fdlw);

              // 详细行
              for(j=0;j<(m==0?sen[i].cnt:rec[i].cnt);j++){
                form_main->data->MoveBy((m==0?sen[i].no[j]:rec[i].no[j]) - form_main->data->RecNo);
                sprintf(str,
                  "%c,%02d(%02d),%s,%s,%s,%s,%s,%s,%s,%6.02f,%6.02f,%6.02f,%6.02f,%6.02f,%6.02f%c%c",
                  'd',
                  j+1,
                  m==0 ? sen[i].no[j] : rec[i].no[j],
                  form_main->data->FindField("Bak3")->AsString.c_str(), //车型
                  form_main->data->FindField("Cehao")->AsString.c_str(),
                  form_main->data->FindField("Bak2")->AsString.Pos(",")!=0 ?
                    form_main->data->FindField("Bak2")->AsString.c_str() : "," , //发站略吗,发站名
                  form_main->data->FindField("Bak1")->AsString.Pos(",")!=0 ?
                    form_main->data->FindField("Bak1")->AsString.c_str() : "," , //到站略吗,到站名
                  form_main->data->FindField("Send")->AsString.c_str(),
                  form_main->data->FindField("Rec")->AsString.c_str(),
                  form_main->data->FindField("Name")->AsString.c_str(),
                  form_main->data->FindField("Spd")->AsFloat ,
                  form_main->data->FindField("Mao")->AsFloat,
                  form_main->data->FindField("Pi")->AsFloat,
                  form_main->data->FindField("Jin")->AsFloat,
                  form_main->data->FindField("Piao")->AsFloat,
                  form_main->data->FindField("Yq")->AsFloat,
                  '\r','\n');
                fwrite(str,strlen(str),1,fd);
                fwrite(str,strlen(str),1,fdlw);
              }

              // 合计行
              sprintf(str,"%c,%9.02f,%9.02f,%9.02f,%9.02f,%9.02f%c%c",
                  's',tmao,tpi,tmao-tpi,tpiao,tmao-tpi-tpiao,'\r','\n');
              fwrite(str,strlen(str),1,fd);
              fwrite(str,strlen(str),1,fdlw);

              // 结束行
              sprintf(str,"%c,%s,%s,%s,%s%c%c",
                'e',"检测单位","检测员","校核员","签发人",'\r','\n');
              fwrite(str,strlen(str),1,fd);
              fwrite(str,strlen(str),1,fdlw);
              fclose(fd);
              fclose(fdlw);
            } // if fopen
          }//if m==0

        }//for(i)
      }//for(k)
    }//for(m)
    Pt->EndDoc();

    // write FILENO
    if((fd=fopen(FILENO,"wb"))!=NULL){
      sprintf(fno.dt,"%04d%02d%02d",lpst->wYear,lpst->wMonth,lpst->wDay);
      fno.no=now_fileno;
      fwrite(&fno,sizeof(fno),1,fd);
      fclose(fd);
    }

    //del oldfile
    del_oldfile(lpst->wMonth);
    delete lpst;

    // start lwthread
    if(bd.yh_mode==YH_HD||bd.yh_mode==YH_BT||bd.yh_mode==YH_LX){
      if(lwThread!=NULL){
        if(lwThread->Suspended==true) lwThread->Resume();
      }
    }

    }catch(...){
       Application->MessageBox("     打 印 出 错    ", NULL, MB_OK);
    }
}
//---------------------------------------------------------------------------
void __fastcall Tform_print::get_bbfilename(char* fnm,int mon,int day,int fno)
{
   if(bd.yh_mode==YH_HD){
     sprintf(fnm,"%s%c%1x%02d%c%s.%03d",BB_PATH,'F',mon,day,'S',"020",fno);
   }else if(bd.yh_mode==YH_BT){
     sprintf(fnm,"%s%c%1x%02d%c%s.%03d",BB_PATH,'F',mon,day,'S',"041",fno);
   }else if(bd.yh_mode==YH_LX){
     sprintf(fnm,"%s%c%1x%02d%c%s.%03d",BB_PATH,'F',mon,day,'S',"131",fno);
   }else if(bd.yh_mode==YH_TJX){
     sprintf(fnm,"%s%c%1x%02d%c%s.%03d",BB_PATH,'F',mon,day,'S',"TJX",fno);
   }
}

void __fastcall Tform_print::get_lwfilename(char* fnm,int mon,int day,int fno)
{
   if(bd.yh_mode==YH_HD){
     sprintf(fnm,"%s%c%1x%02d%c%s.%03d",LW_PATH,'F',mon,day,'S',"020",fno);
   }else if(bd.yh_mode==YH_BT){
     sprintf(fnm,"%s%c%1x%02d%c%s.%03d",LW_PATH,'F',mon,day,'S',"041",fno);
   }else if(bd.yh_mode==YH_LX){
     sprintf(fnm,"%s%c%1x%02d%c%s.%03d",LW_PATH,'F',mon,day,'S',"131",fno);
   }else if(bd.yh_mode==YH_TJX){
     sprintf(fnm,"%s%c%1x%02d%c%s.%03d",LW_PATH,'F',mon,day,'S',"TJX",fno);
   }
}

void __fastcall Tform_print::del_oldfile(int mon)
{
    char del_filename[70];
    struct ffblk ffblk;
    int done;

    if( mon > 2 ) sprintf(del_filename,"%s%c%1x%s",BB_PATH,'F',mon-2,"*.*");
    else          sprintf(del_filename,"%s%c%1x%s",BB_PATH,'F',mon+12-2,"*.*");

    done = findfirst(del_filename,&ffblk,0);
    //DeleteFile(del_filename);
    while (!done){
      strcpy(del_filename,BB_PATH);
      strcat(del_filename,ffblk.ff_name);
      DeleteFile(del_filename);
      done = findnext(&ffblk);
    }
}

void __fastcall Tform_print::FormClose(TObject *Sender,
      TCloseAction &Action)
{
   delete maicon;
}
//---------------------------------------------------------------------------

void __fastcall Tform_print::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
  if(Key==F8_KEY)       { if( Button1->Enabled==true) Button1Click(NULL);}
  else  if(Key==F3_KEY) { if( Button2->Enabled==true) Button2Click(NULL);}
  else  if(Key==Esc_KEY){ if( Button3->Enabled==true) Button3Click(NULL);}
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -