using Lskj.Business.Impl;
using Lskj.Control;
using Lskj.Control.Model;
using Lskj.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Lskj.PubArgoxPrint
{
public partial class FrmMain : BaseForm
{
public DynamicArgoxPrintModel Model;
public FrmMain()
{
InitializeComponent();
this.Opacity = 0;
this.Load += OnFrmMainLoad;
}
///
/// 初始化
///
///
///
private void OnFrmMainLoad(object sender, EventArgs e)
{
WaitForm.ShowForm("正在打印中...");
try
{
string printSql = Model.MainPrintSql;
printSql = ReplaceHelper.ReplaceRowParam(Model.MaintabFocusedRow, Model.MainPrintSql);
DataTable printTable = BaseImpl.GetDataTableResult(printSql);
if (printTable == null || printTable.Rows.Count == 0)
{
MessageUtil.Show("没有打印数据");
return;
}
int nLen = PrintUtil.A_GetUSBBufferLen() + 1;
if (nLen <= 1)
{
MessageUtil.Show("打印机未连接");
return;
}
byte[] pbuf = new byte[128];
int len1 = 128;
int len2 = 128;
byte[] buf1 = new byte[len1];
byte[] buf2 = new byte[len2];
PrintUtil.A_EnumUSB(pbuf);
PrintUtil.A_GetUSBDeviceInfo(1, buf1, out len1, buf2, out len2);
int ret = PrintUtil.A_CreatePrn(12, Encoding.ASCII.GetString(buf2, 0, len2));//open usb.
if (ret != 0)
{
MessageBox.Show("打印启动失败");
return;
}
PrintUtil.A_Set_DebugDialog(0);
PrintUtil.A_Set_Unit('m');
PrintUtil.A_Set_Syssetting(1, 0, 0, 0, 0);
PrintUtil.A_Set_Darkness(13);
PrintUtil.A_Del_Graphic(1, "*");//delete all picture.
string[] locationxArray = Model.LocationX.Split(',');
string[] printArgsArray = Model.PrintArgs.Split(',');
int columnCount = locationxArray.Length;
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < printTable.Rows.Count; i++)
{
if (i % columnCount == 0)
{
PrintUtil.A_Clear_Memory();//clear memory.
}
DataRow printRow = printTable.Rows[i];
if (!string.IsNullOrEmpty(this.Model.AfterSql))
{
string str = ReplaceHelper.ReplaceRowParam(printRow, this.Model.AfterSql);
stringBuilder.AppendLine(str + ";");
}
for (int j = 0; j < printTable.Columns.Count; j++)
{
int locationX = int.TryParse(locationxArray[i % columnCount], out locationX) ? locationX : 0;
PrintModel printModel = new PrintModel(printArgsArray[j % columnCount].Split('_'));
string printValue = printRow[j] + "";
if (printModel.PrintType == 0)
{
PrintUtil.A_Prn_Text_TrueType(locationX + printModel.X, printModel.Y, printModel.FontSize, "Arial", 1, 400, 0, 0, 0, "AA", printValue, 1);
}
else if (printModel.PrintType == 1)
{
PrintUtil.A_Prn_Barcode(locationX + printModel.X, printModel.Y, 1, 'E', 1, 2, printModel.FontSize, 'N', 1, printValue);
}
}
if ((i % columnCount == columnCount - 1) || (i == printTable.Rows.Count - 1))
{
PrintUtil.A_Print_Out(1, 1, 1, 1);
}
}
if (!string.IsNullOrEmpty(stringBuilder.ToString()))
{
BaseImpl.ExecSqlValue(stringBuilder.ToString());
}
PrintUtil.A_ClosePrn();
}
catch (Exception ex)
{
MessageUtil.Show(ex.Message);
}
finally
{
WaitForm.HideForm();
Close();
}
}
}
}