zoukankan      html  css  js  c++  java
  • 【Wonder原创】栈板标签列印

    一、画面效果如下:

    二、打印效果

    三、后台代码:

    1、全局变量

      public static int _Cur_index;   //当前页码
      public static string[] _BoardList; //需要打印的栈板号数组

    2、自定义方法

    //重置全局变量
    private void ClearVar()
    {
    _Cur_index
    = 0;
    _BoardList
    = null;
    }

    核心打印方法:

    核心打印方法
    private void BarcodePrint(PrintPageEventArgs e, DataTable dt)
    {
    string CodeNo="", PN="", qty="0", Sdate="",Bindex="";

    foreach (DataRow dr in dt.Rows)
    {
    CodeNo
    = dr["CodeNo"].ToString();
    PN
    = dr["PN"].ToString();
    Sdate
    = dr["DDate"].ToString();
    Bindex
    = dr["bindex"].ToString();
    qty
    = (Convert.ToInt32(qty) + Convert.ToInt32(dr["qty"].ToString())).ToString();
    }
    Graphics g
    = e.Graphics;
    Font fnt
    = new Font("Arial", 22);

    float xWidth = 1000F, yWidth = 700F;
    float xStart = 60F, yStart = 60F;
    float y = yStart;
    float space = 25F;

    #region 文本
    g.DrawLine(System.Drawing.Pens.Black, xStart, y, xStart
    + xWidth, y);//line (0,0) 横线
    g.DrawLine(System.Drawing.Pens.Black, xStart, y, xStart, y + yWidth);//line (0,0) 竖线
    g.DrawLine(System.Drawing.Pens.Black, xStart + 230, y, xStart + 230, y + yWidth);//line (1,0) 竖线
    g.DrawLine(System.Drawing.Pens.Black, xStart + xWidth, y, xStart + xWidth, y + yWidth);//line (3,0) 竖线

    y
    += space;
    y
    += fnt.Height / 2;
    g.DrawString(
    "Car Number", fnt, System.Drawing.Brushes.Black, xStart, y);//"Car Number"
    y += space;
    y
    += fnt.Height + fnt.Height / 2;
    g.DrawLine(System.Drawing.Pens.Black, xStart, y, xStart
    + xWidth, y);//line (0,1) 横线
    g.DrawLine(System.Drawing.Pens.Black, xStart + 500, y, xStart + 500, yWidth + yStart);//line (2,1) 竖线
    y += space;

    g.DrawString(
    "Company", fnt, System.Drawing.Brushes.Black, xStart, y);//"Company"
    g.DrawString("Xxxx Xxxxxxxxx", fnt, System.Drawing.Brushes.Black, xStart + 250, y);//"Xxxx Xxxxxxxxx"
    y += fnt.Height;
    g.DrawString(
    "Name", fnt, System.Drawing.Brushes.Black, xStart, y);//"Name"
    g.DrawString("Corp.", fnt, System.Drawing.Brushes.Black, xStart + 320, y);//"Corp."
    y += fnt.Height;
    y
    += space;
    g.DrawLine(System.Drawing.Pens.Black, xStart, y, xStart
    + 500, y);//line (0,2) 横线
    y += space;

    y
    += fnt.Height / 2;
    g.DrawString(
    "Material Code", fnt, System.Drawing.Brushes.Black, xStart, y);//"Material Code"
    g.DrawString(CodeNo, fnt, System.Drawing.Brushes.Black, xStart + 230, y);//CodeNo:"LJ01-07716A"
    y += fnt.Height + fnt.Height / 2;
    y
    += space;
    g.DrawLine(System.Drawing.Pens.Black, xStart, y, xStart
    + 500, y);//line (0,3) 横线
    y += space;

    y
    += fnt.Height / 2;
    g.DrawString(
    "Recipe", fnt, System.Drawing.Brushes.Black, xStart, y);//"Recipe"
    g.DrawString(PN, fnt, System.Drawing.Brushes.Black, xStart + 230, y);//PN:"PL-15-324"
    y += fnt.Height + fnt.Height / 2;
    y
    += space;
    g.DrawLine(System.Drawing.Pens.Black, xStart, y, xStart
    + 500, y);//line (0,4) 横线
    y += space;

    y
    += fnt.Height / 2;
    g.DrawString(
    "Q'ty", fnt, System.Drawing.Brushes.Black, xStart, y);//"Q'ty"
    g.DrawString(qty, fnt, System.Drawing.Brushes.Black, xStart + 230, y);//QTY:"9000"
    y += fnt.Height + fnt.Height / 2;
    y
    += space;
    g.DrawLine(System.Drawing.Pens.Black, xStart, y, xStart
    + 500, y);//line (0,5) 横线
    y += space;

    y
    += fnt.Height / 2;
    g.DrawString(
    "Production Date", fnt, System.Drawing.Brushes.Black, xStart, y);//"Production Date"
    g.DrawString(Sdate, fnt, System.Drawing.Brushes.Black, xStart + 230, y);//Date:"2010-08-27"
    y += fnt.Height + fnt.Height / 2;

    g.DrawLine(System.Drawing.Pens.Black, xStart, yStart
    + yWidth, xStart + xWidth, yStart + yWidth);//line (0,6) 横线
    g.DrawString(Bindex, new Font("Arial", 10), System.Drawing.Brushes.Black, xWidth + xStart + 10, yStart + yWidth + 10);//Bindex
    #endregion

    #region Barcode
    float x = xStart+ 500F+10F;
    y
    = yStart + fnt.Height * 2 + space * 2 + 10F;

    BarcodeLib.Barcode barcode
    = new BarcodeLib.Barcode();
    barcode.IncludeLabel
    = true;
    barcode.Height
    = 35;
    barcode.Width
    = 200;
    barcode.LabelFont
    = new Font("Arial", 12, FontStyle.Regular);
    barcode.LabelPosition
    = BarcodeLib.LabelPositions.BOTTOMCENTER;
    barcode.Alignment
    = BarcodeLib.AlignmentPositions.CENTER;

    for (int i = 1; i <= 18 && i<=dt.Rows.Count; i++)
    {
    string barcodeStr = dt.Rows[i-1][0].ToString()+i.ToString("D3");

    Image image
    = barcode.Encode(BarcodeLib.TYPE.CODE39Extended, barcodeStr);
    g.DrawImage(image, x
    +240*((i-1)/(dt.Rows.Count/2)), y+((i-1)%(dt.Rows.Count/2))*65);//Barcode
    }
    #endregion

    }

    3、“查询”按钮事件,查询需要打印的数据

    查询按钮
    private void btnQuery_Click(object sender, EventArgs e)
    {
    if (drpCUS.SelectedIndex == -1 || drpDept.SelectedIndex == -1)
    {
    MessageBox.Show(
    "请先选择客户及部门.");
    return;
    }
    lblBSum.Text
    = "0";
    lblQSum.Text
    = "0";
    try
    {
    DataSet ds
    = CDataSet.GetSTList(drpCUS.SelectedItem.ToString(), drpDept.SelectedItem.ToString(), dDate.Value.ToShortDateString(), "%");
    if (ds != null)
    {
    CDataSet.BindToCombox(drpSTNO, ds.Tables[
    0], "STNO");
    if (drpSTNO.Items.Count > 0)
    {
    ds
    = CDataSet.GetSTList(drpCUS.SelectedItem.ToString(), drpDept.SelectedItem.ToString(), dDate.Value.ToShortDateString(), drpSTNO.SelectedItem.ToString());
    gvData.DataSource
    = ds.Tables[0];

    int i = 0;
    double qty = 0;
    for (; i < ds.Tables[0].Rows.Count; i++)
    {
    qty
    += Convert.ToDouble(ds.Tables[0].Rows[i]["数量"].ToString());
    }
    lblBSum.Text
    = i.ToString();
    lblQSum.Text
    = qty.ToString();
    }
    else
    {
    gvData.DataSource
    = null;
    drpSTNO.Text
    = "";
    drpSTNO.Items.Clear();
    }
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

    4、“列印全部”按钮事件

    列印全部按钮事件
    private void btnPrint_Click(object sender, EventArgs e)
    {
    try
    {
    StringBuilder sbStr
    = new StringBuilder();
    ClearVar();
    foreach (DataGridViewRow gr in gvData.Rows)
    {
    sbStr.Append(gr.Cells[
    7].Value.ToString());
    sbStr.Append(
    ",");
    }
    _BoardList
    = sbStr.ToString().TrimEnd(',').Split(',');
    if (_BoardList != null && _BoardList.Length > 0)
    {
    printDoc.PrintController
    = new System.Drawing.Printing.StandardPrintController();//隐藏“正在打印。。。”小窗口
    printDoc.DefaultPageSettings.Landscape = true;//横向打印
    printDoc.Print();
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

    5、PrintDocument 响应PrintPage事件

    打印每一页都会触发这个事件,注意 HasMorePages 达到分页列印效果。

    PrintPage事件
    private void printDoc_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
    try
    {

    DataSet ds
    = CDataSet.GetBoard_SEC(_BoardList[_Cur_index].ToString());
    if (ds != null && ds.Tables.Count > 0)
    {
    //BarcodePrint(e, "LJ01-07716A1", "PL-15-324", "9000", "2010-8-27");
    BarcodePrint(e, ds.Tables[0]);
    }
    _Cur_index
    ++;
    if (_Cur_index < _BoardList.Length)
    e.HasMorePages
    = true;

    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }
  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/wonder315/p/1862235.html
Copyright © 2011-2022 走看看