using OTSSysMgrTools; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Windows.Forms; namespace OTSIncAReportTemplate { public partial class OTSIncAReportTemplate : Form { #region 全局变量 List list_dt; MBSZClass m_mbszclass = null; public XmlConfigUtil xmlutil; public XmlConfigUtil xmlutil2; //全局变量,与报告项目同步,共传4个参数 //参数1:是需要打开db数据库的路径 //参数2:是打开报表模板xml文件的路径 //参数3:是要执行查看报表的类型,输出主报表,还是输出颗粒列表 //参数4:打开主报表时是是指定夹杂物的数量,打开颗粒列表时,是颗粒列表显示的范围如,0-50,50-100 //参数5:是要执行查看报表的类型,输出主报表时,指定读取的标记帧图图像范围,如0-50,50-100,输出颗粒列表时无用 string m_arg1 = ""; string m_arg2 = ""; string m_arg3 = ""; string m_arg4 = ""; string m_arg5 = ""; #endregion #region 构造函数及窗体加载 public OTSIncAReportTemplate() { InitializeComponent(); } public OTSIncAReportTemplate(string[] args) { InitializeComponent(); //if (args.Length == 0) //{ // MessageBox.Show("请使用报告程序打开模板程序!"); // return; //} //if (args.Length != 5) //{ // string str = ""; // for (int i = 0; i < args.Length; i++) // { // str = str + "参数" + (i + 1).ToString() + ":" + args[i].ToString() + Environment.NewLine; // } // MessageBox.Show("传入的参数数量不正确,应为5个参数:" + Environment.NewLine + str); // return; //} //方便测试代码分岐 bool bDebug = false; if (bDebug == false) { m_arg1 = args[0].Replace("^", " "); m_arg2 = args[1].Replace("^", " "); m_arg3 = args[2].Replace("^", " "); m_arg4 = args[3].Replace("^", " "); m_arg5 = args[4].Replace("^", " "); } else { ////测试 //m_arg1 = "E:\\ResultFile\\东钢\\11.24\\002\\Sample1\\ReportTemplateDBParticleList.db"; //m_arg2 = "./Config/ProData/ReportTemplateConfig.xml"; //m_arg3 = "ParticleListReport"; //m_arg4 = "33-66"; //m_arg5 = "0-100"; //m_arg1 = "E:\\ResultFile\\keda20201209\\Sample1\\ReportTemplateDBParticleList.db"; //m_arg2 = "./Config/ProData/ReportTemplateConfig.xml"; //m_arg3 = "ParticleListReport"; //m_arg4 = "0-983"; //m_arg5 = ""; m_arg1 = "C:\\Users\\admin\\Desktop\\马钢\\71-3\\71-3\\Sample71-3\\ReportTemplateDBParticleList.db"; m_arg2 = "./Config/ProData/ReportTemplateConfig.xml"; m_arg3 = "MainReport"; m_arg4 = "100"; m_arg5 = "0-100"; } //MessageBox.Show(""); //初始化xml类 xmlutil = new XmlConfigUtil(m_arg2); m_mbszclass = new MBSZClass(); list_dt = new List(); } protected override void SetVisibleCore(bool value) { base.SetVisibleCore(value); } private void Form1_Load(object sender, EventArgs e) { //隐藏窗体 this.WindowState = FormWindowState.Minimized; //this.ShowInTaskbar = false; //SetVisibleCore(false); if (m_arg1 != "") { rmReport1 = new RMReportEngine.RMReport(); rmReport1.ModifyPrepared = false; rmReport1.Init(this, RM.Interop.ReportMachine.TxRMReportType.rmrtReport); //1300购买的注册码 rmReport1.SetUserInfo("15040732794", "UEsDBBQAAAAIAPZ9ulCdRMtANAAAADUAAAAFAAAAZmlsZTET4mZgYDA0NTAxMDc2Mrc0EVIA8dPMU5LMDBONLC0NzCyTzZJTDROTzc0TDZIskhINLFIBUEsBAhQAFAAAAAgA9n26UJ1Ey0A0AAAANQAAAAUAAAAAAAAAAAAAAAAAAAAAAGZpbGUxUEsFBgAAAAABAAEAMwAAAFcAAAAAAA == "); //读取xml //LoadControlsToXml(); LoadMBSZClass(); LoadRouteclass(); //加载显示report if (m_arg3 == "MainReport") { //读取db LoadReportTemplateDBFile(); ReportTemplatePrint_MainReport(); } else if (m_arg3 == "ParticleListReport") { //读取db LoadReportTemplateDBFile_ParticleList(); ReportTemplatePrint_PartilceListReport(); } else if( m_arg3 == "GBReport") { LoadReportGBDBFile(); ReportTemplatePrint_GBReport(); } //File.Delete(m_arg1); } //关闭查看报告,则退出进程 this.Close(); Application.Exit(); } #endregion #region 显示报表方法 /// /// 调用预览查看报表,显示主报表 /// private void ReportTemplatePrint_MainReport() { DataRelation myRela1; DataTable ls_resultgrid = list_dt.Where(aa => aa.TableName.Contains("ResultGrid")).ToList()[0];//插入测量结果Grid表格 rmReport1.PreviewOptions.BtnDesignVisible = true; #region 选择报告模板 if (m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk == true && m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk == true && m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk == true) { rmReport1.LoadFromFile("Resources\\ReportTemplate\\Inca.rmf"); } else if (m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk == false && m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk == false && m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk == true) { rmReport1.LoadFromFile("Resources\\ReportTemplate\\groupCancelElement.rmf"); } else if (m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk == false && m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk == false && m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk == false) { rmReport1.LoadFromFile("Resources\\ReportTemplate\\groupCancelBlank.rmf"); } else { rmReport1.LoadFromFile("Resources\\ReportTemplate\\groupCancelGrain.rmf"); } #endregion rmReport1.AddVariable("ZBT", m_mbszclass.M_SY.str_tb_ZBT, true); rmReport1.AddVariable("FBT", m_mbszclass.M_SY.str_tb_FBT, true); rmReport1.AddVariable("YPBH", m_mbszclass.M_SY.str_tb_YPBH, true); rmReport1.AddVariable("KHH", m_mbszclass.M_YMYJ.str_tb_KHH, true); rmReport1.AddVariable("CKBZ", m_mbszclass.M_SY.str_tb_CKBZ, true); rmReport1.AddVariable("RM_YM", m_mbszclass.M_YMYJ.str_tb_ymwb, true); rmReport1.AddVariable("RM_YJ", m_mbszclass.M_YMYJ.str_tb_yjwb, true); #region 判断是否显示 DataTable ls_dt_AreaRatio = list_dt.Where(aa => aa.TableName.Contains("AreaRatio")).ToList()[0]; rmReport1.AddDataSet(ls_dt_AreaRatio, "AreaRatio"); DataTable ls_dt_PicInclusionAreaRatio = list_dt.Where(aa => aa.TableName.Contains("PicInclusionAreaRatio")).ToList()[0]; rmReport1.AddDataSet(ls_dt_PicInclusionAreaRatio, "PicInclusionAreaRatio"); DataTable ls_dt_PicInclusionAreaClassRatio = list_dt.Where(aa => aa.TableName.Contains("Pic_InclusionareaClassRatio")).ToList()[0]; rmReport1.AddDataSet(ls_dt_PicInclusionAreaClassRatio, "Pic_InclusionareaClassRatio"); if (m_mbszclass.M_SYXT.b_ck_syxt_xsmk)//判断三元相图是否显示 { rmReport1.FindObject("GroupHeader1").Prop["Visible"] = true; if (m_mbszclass.M_SYXT.str_cb_syxt_mhxssl == "2") { DataTable ls_dt_picSYXT = list_dt.Where(aa => aa.TableName.Contains("PicSYXT2T")).ToList()[0];//一排两个三元相图 rmReport1.FindObject("MasterData18").Prop["Visible"] = false; rmReport1.FindObject("MasterData10").Prop["Visible"] = true; rmReport1.AddDataSet(ls_dt_picSYXT, "PicSYXT");//三元相图 ls_dt_picSYXT.Dispose(); } else if (m_mbszclass.M_SYXT.str_cb_syxt_mhxssl == "3") { DataTable ls_dt_picSYXT3T = list_dt.Where(aa => aa.TableName.Contains("PicSYXT3T")).ToList()[0];//一排三个三元相图 rmReport1.FindObject("MasterData10").Prop["Visible"] = false; rmReport1.FindObject("MasterData18").Prop["Visible"] = true; rmReport1.AddDataSet(ls_dt_picSYXT3T, "PicSYXT3T"); ls_dt_picSYXT3T.Dispose(); //ls_dt_picSYXT3T.Clear(); } } else { //DataTable dataTable = new DataTable(); //rmReport1.AddDataSet(dataTable, "PicSYXT2T");//三元相图 //rmReport1.AddDataSet(dataTable, "PicSYXT3T"); //dataTable.Dispose(); //dataTable.Clear(); //rmReport1.FindObject("GroupHeader81").Prop["Visible"] = false; //rmReport1.FindObject("MasterData96").Prop["Visible"] = false; //rmReport1.FindObject("MasterData10").Prop["Visible"] = false; //rmReport1.DeletePage(3); } if (m_mbszclass.M_SY.b_ck_ypsm)//判断样品说明是否显示 { rmReport1.AddDataSet(ls_resultgrid, "ResultGrid"); ls_resultgrid.Dispose(); rmReport1.FindObject("MasterData1").Prop["Visible"] = true; } else { rmReport1.FindObject("MasterData1").Prop["Visible"] = false; } if (m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk == false && m_mbszclass.M_KLFXJG.b_cb_jzwfl_xsmk == false)//如果颗粒尺寸分析结果和夹杂物分类图都不显示 { DataTable dataTable = new DataTable(); rmReport1.AddDataSet(dataTable, "PartSize"); rmReport1.AddDataSet(dataTable, "Particel"); //rmReport1.AddDataSet(dataTable, "PicKL"); dataTable.Dispose(); dataTable.Clear(); rmReport1.FindObject("MasterData2").Prop["Visible"] = false; rmReport1.FindObject("MasterData126").Prop["Visible"] = false; //rmReport1.FindObject("MasterData95").Prop["Visible"] = false; rmReport1.DeletePage(1); } else { if (m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk)//判断颗粒尺寸分析结果 { DataTable ls_dt_PartSize = list_dt.Where(aa => aa.TableName.Contains("PartSize")).ToList()[0];//插入 颗粒尺寸表 DataTable ls_dt_Particel = list_dt.Where(aa => aa.TableName.Contains("Particel")).ToList()[0]; DataTable ls_dt_Particel_subdivision = list_dt.Where(aa => aa.TableName.Contains("Particel_subdivision")).ToList()[0]; rmReport1.AddDataSet(ls_dt_PartSize, "PartSize"); rmReport1.AddDataSet(ls_dt_Particel, "Particel"); rmReport1.AddDataSet(ls_dt_Particel_subdivision, "Particel_subdivision"); List vs = new List() { "DMAX", "DMIN", "Area", "FERET" }; string str = vs[m_mbszclass.M_KLFXJG.index_cb_klcc_jsfs]; rmReport1.AddVariable("klccfxjg_jsfx", str, true); ls_dt_PartSize.Dispose(); //ls_dt_PartSize.Clear(); ls_dt_Particel.Dispose(); //ls_dt_Particel.Clear(); rmReport1.FindObject("MasterData2").Prop["Visible"] = true; rmReport1.FindObject("MasterData126").Prop["Visible"] = true; } else { DataTable dataTable = new DataTable(); rmReport1.AddDataSet(dataTable, "PartSize"); rmReport1.AddDataSet(dataTable, "Particel"); dataTable.Dispose(); dataTable.Clear(); rmReport1.FindObject("MasterData2").Prop["Visible"] = false; rmReport1.FindObject("MasterData126").Prop["Visible"] = false; } if (m_mbszclass.M_KLFXJG.b_cb_jzwfl_xsmk)//判断夹杂物分类图 { //DataTable ls_dt_picKL = list_dt.Where(aa => aa.TableName.Contains("PicKL")).ToList()[0];// 用于颗粒图chart //rmReport1.AddDataSet(ls_dt_picKL, "PicKL"); //ls_dt_picKL.Dispose(); ////ls_dt_picKL.Clear(); //rmReport1.FindObject("MasterData95").Prop["Visible"] = true; } else { //DataTable dataTable = new DataTable(); //rmReport1.AddDataSet(dataTable, "PicKL"); //dataTable.Dispose(); //dataTable.Clear(); //rmReport1.FindObject("MasterData95").Prop["Visible"] = false; } } if (m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk == false && m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk == false)//如果元素分析表和显示元素成分图都不显示 { //rmReport1.FindObject("MasterData3").Prop["Visible"] = false; //rmReport1.FindObject("MasterData42").Prop["Visible"] = false; //rmReport1.FindObject("MasterData91").Prop["Visible"] = false; //rmReport1.DeletePage(5); } else { if (m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk)//判断元素分析表是否显示 { DataTable ls_dt_elementname = list_dt.Where(aa => aa.TableName.Contains("ElementName")).ToList()[0]; DataTable ls_dt_element = list_dt.Where(aa => aa.TableName == "ElementValue").ToList()[0]; rmReport1.AddDataSet(ls_dt_elementname, "ElementName"); rmReport1.AddDataSet(ls_dt_element, "ElementValue"); DataTable ls_dt_ElementalSubstance_Name = list_dt.Where(aa => aa.TableName.Contains("ElementalSubstance_Name")).ToList()[0]; DataTable ls_dt_ElementalSubstance_Value = list_dt.Where(aa => aa.TableName == "ElementalSubstance_Value").ToList()[0]; rmReport1.AddDataSet(ls_dt_ElementalSubstance_Name, "ElementalSubstance_Name"); rmReport1.AddDataSet(ls_dt_ElementalSubstance_Value, "ElementalSubstance_Value"); DataTable ls_dt_ElementSubdivision_Name = list_dt.Where(aa => aa.TableName.Contains("ElementSubdivision_Name")).ToList()[0]; DataTable ls_dt_ElementSubdivision_Value = list_dt.Where(aa => aa.TableName == "ElementSubdivision_Value").ToList()[0]; rmReport1.AddDataSet(ls_dt_ElementSubdivision_Name, "ElementSubdivision_Name"); rmReport1.AddDataSet(ls_dt_ElementSubdivision_Value, "ElementSubdivision_Value"); ls_dt_elementname.Dispose(); //ls_dt_elementname.Clear(); ls_dt_element.Dispose(); //ls_dt_element.Clear(); //rmReport1.FindObject("MasterData3").Prop["Visible"] = true; //rmReport1.FindObject("MasterData42").Prop["Visible"] = true; } else { DataTable dataTable = new DataTable(); rmReport1.AddDataSet(dataTable, "ElementName"); rmReport1.AddDataSet(dataTable, "ElementValue"); dataTable.Dispose(); dataTable.Clear(); rmReport1.FindObject("MasterData3").Prop["Visible"] = false; rmReport1.FindObject("MasterData42").Prop["Visible"] = false; } if (m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk)//判断显示元素成分图 { DataTable ls_dt_picYS = list_dt.Where(aa => aa.TableName.Contains("PicYS")).ToList()[0];//用于元素图chart rmReport1.AddDataSet(ls_dt_picYS, "PicYS"); ls_dt_picYS.Dispose(); //ls_dt_picYS.Clear(); //rmReport1.FindObject("MasterData91").Prop["Visible"] = true; } else { DataTable dataTable = new DataTable(); rmReport1.AddDataSet(dataTable, "PicYS"); dataTable.Dispose(); dataTable.Clear(); //rmReport1.FindObject("MasterData91").Prop["Visible"] = false; } } if (m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk)//判断显示颗粒列表 { if (Convert.ToInt32(m_arg4) < 21) { DataTable ls_dt_largest = list_dt.Where(aa => aa.TableName.Contains("Largest20")).ToList()[0]; rmReport1.AddDataSet(ls_dt_largest, "Largest20"); ls_dt_largest.Dispose(); //ls_dt_largest.Clear(); } else { DataTable ls_dt_largest = list_dt.Where(aa => aa.TableName.Contains("Largest20")).ToList()[0]; rmReport1.AddDataSet(ls_dt_largest, "Largest20"); ls_dt_largest.Dispose(); //ls_dt_largest.Clear(); DataTable ls_dt_largest2 = list_dt.Where(aa => aa.TableName.Contains("Largest2")).ToList()[0]; rmReport1.AddDataSet(ls_dt_largest2, "Largest2"); ls_dt_largest2.Dispose(); //ls_dt_largest2.Clear(); } //FlushMemory(); #region 主副表 DataTable ls_dt_frame = list_dt.Where(aa => aa.TableName.Contains("FrameGraphSubTable")).ToList()[0].Copy();//副表 DataTable ls_dt_fielddt = list_dt.Where(aa => aa.TableName.Contains("field_dt")).ToList()[0].Copy();//帧图主表 DataSet ds = new DataSet("fieldimgds"); ds.Tables.Add(ls_dt_fielddt); ds.Tables.Add(ls_dt_frame); myRela1 = new DataRelation("Rela1", ls_dt_fielddt.Columns["FieldId"], ls_dt_frame.Columns["FieldId"],false); ds.Relations.Add(myRela1); rmReport1.AddDataSet(ls_dt_fielddt, "CustomersDS"); rmReport1.AddDetailDataSet(ls_dt_frame, "OrdersDS", "CustomersDS", myRela1); ls_dt_frame.Dispose(); //ls_dt_frame.Clear(); ls_dt_fielddt.Dispose(); //ls_dt_fielddt.Clear(); #endregion //FlushMemory(); rmReport1.FindObject("GroupHeader12").Prop["Visible"] = true; rmReport1.FindObject("MasterData49").Prop["Visible"] = true; if (m_mbszclass.M_KLLBXX.b_ck_kllb_ystx == true && m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx != true && m_mbszclass.M_KLLBXX.b_ck_kllb_npxx != true)//原图开,放大图关,能谱关 { rmReport1.FindObject("Memo44").Prop["Visible"] = true; rmReport1.FindObject("Picture46").Prop["Visible"] = true; rmReport1.FindObject("Picture69").Prop["Visible"] = false; rmReport1.FindObject("Picture70").Prop["Visible"] = false; //最原始的数据 rmReport1.FindObject("Memo44").Prop["Left"] = 0.5;//原图像框 rmReport1.FindObject("Picture46").Prop["Left"] = 0.5;//原图像 rmReport1.FindObject("Picture69").Prop["Left"] = 2.9;//放大图 rmReport1.FindObject("Picture70").Prop["Left"] = 5.3;//能谱 rmReport1.FindObject("Picture70").Prop["Width"] = 13;//能谱长度 } else if (m_mbszclass.M_KLLBXX.b_ck_kllb_ystx == true && m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx == true && m_mbszclass.M_KLLBXX.b_ck_kllb_npxx != true)//原图开,放大图开,能谱关 { rmReport1.FindObject("Memo44").Prop["Visible"] = true; rmReport1.FindObject("Picture46").Prop["Visible"] = true; rmReport1.FindObject("Picture69").Prop["Visible"] = true; rmReport1.FindObject("Picture70").Prop["Visible"] = false; rmReport1.FindObject("Memo44").Prop["Left"] = 0.5;//原图像框 rmReport1.FindObject("Picture46").Prop["Left"] = 0.5;//原图像 rmReport1.FindObject("Picture69").Prop["Left"] = 2.9;//放大图 rmReport1.FindObject("Picture70").Prop["Left"] = 5.3;//能谱 rmReport1.FindObject("Picture70").Prop["Width"] = 13;//能谱长度 } else if (m_mbszclass.M_KLLBXX.b_ck_kllb_ystx == true && m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx == true && m_mbszclass.M_KLLBXX.b_ck_kllb_npxx == true)//原图开,放大图开,能谱开 { rmReport1.FindObject("Memo44").Prop["Visible"] = true; rmReport1.FindObject("Picture46").Prop["Visible"] = true; rmReport1.FindObject("Picture69").Prop["Visible"] = true; rmReport1.FindObject("Picture70").Prop["Visible"] = true; rmReport1.FindObject("Memo44").Prop["Left"] = 0.5;//原图像框 rmReport1.FindObject("Picture46").Prop["Left"] = 0.5;//原图像 rmReport1.FindObject("Picture69").Prop["Left"] = 2.9;//放大图 rmReport1.FindObject("Picture70").Prop["Left"] = 5.3;//能谱 rmReport1.FindObject("Picture70").Prop["Width"] = 13;//能谱长度 } else if (m_mbszclass.M_KLLBXX.b_ck_kllb_ystx == true && m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx == false && m_mbszclass.M_KLLBXX.b_ck_kllb_npxx == true)//原图开,放大图关,能谱开 { rmReport1.FindObject("Memo44").Prop["Visible"] = true; rmReport1.FindObject("Picture46").Prop["Visible"] = true; rmReport1.FindObject("Picture69").Prop["Visible"] = false; rmReport1.FindObject("Picture70").Prop["Visible"] = true; rmReport1.FindObject("Memo44").Prop["Left"] = 0.5;//原图像框 rmReport1.FindObject("Picture46").Prop["Left"] = 0.5;//原图像 rmReport1.FindObject("Picture70").Prop["Left"] = 2.9; rmReport1.FindObject("Picture70").Prop["Width"] = 15.4; } else if (m_mbszclass.M_KLLBXX.b_ck_kllb_ystx != true && m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx == true && m_mbszclass.M_KLLBXX.b_ck_kllb_npxx == true)//原图关,放大图开,能谱开 { rmReport1.FindObject("Memo44").Prop["Visible"] = false; rmReport1.FindObject("Picture46").Prop["Visible"] = false; rmReport1.FindObject("Picture69").Prop["Visible"] = true; rmReport1.FindObject("Picture70").Prop["Visible"] = true; rmReport1.FindObject("Picture69").Prop["Left"] = 0.5; rmReport1.FindObject("Picture70").Prop["Left"] = 2.9; rmReport1.FindObject("Picture70").Prop["Width"] = 15.4; } else if (m_mbszclass.M_KLLBXX.b_ck_kllb_ystx != true && m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx != true && m_mbszclass.M_KLLBXX.b_ck_kllb_npxx == true)//原图关,放大图关,能谱开 { rmReport1.FindObject("Memo44").Prop["Visible"] = false; rmReport1.FindObject("Picture46").Prop["Visible"] = false; rmReport1.FindObject("Picture69").Prop["Visible"] = false; rmReport1.FindObject("Picture70").Prop["Visible"] = true; rmReport1.FindObject("Picture70").Prop["Left"] = 0.5; rmReport1.FindObject("Picture70").Prop["Width"] = 17.8; } else if (m_mbszclass.M_KLLBXX.b_ck_kllb_ystx != true && m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx != true && m_mbszclass.M_KLLBXX.b_ck_kllb_npxx != true) //原图关,放大图关,能谱关 { rmReport1.FindObject("Memo44").Prop["Visible"] = false; rmReport1.FindObject("Picture46").Prop["Visible"] = false; rmReport1.FindObject("Picture69").Prop["Visible"] = false; rmReport1.FindObject("Picture70").Prop["Visible"] = false; //最原始的数据 rmReport1.FindObject("Memo44").Prop["Left"] = 0.5;//原图像框 rmReport1.FindObject("Picture46").Prop["Left"] = 1.4;//原图像 rmReport1.FindObject("Picture69").Prop["Left"] = 2.9;//放大图 rmReport1.FindObject("Picture70").Prop["Left"] = 5.3;//能谱 rmReport1.FindObject("Picture70").Prop["Width"] = 13;//能谱长度 } else if (m_mbszclass.M_KLLBXX.b_ck_kllb_ystx != true && m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx == true && m_mbszclass.M_KLLBXX.b_ck_kllb_npxx != true)//原图关,放大图开,能谱关 { rmReport1.FindObject("Memo44").Prop["Visible"] = false; rmReport1.FindObject("Picture46").Prop["Visible"] = false; rmReport1.FindObject("Picture69").Prop["Visible"] = true; rmReport1.FindObject("Picture70").Prop["Visible"] = false; rmReport1.FindObject("Picture69").Prop["Left"] = 0.5;//放大图 } } else { //rmReport1.FindObject("GroupHeader12").Prop["Visible"] = false; //rmReport1.FindObject("MasterData49").Prop["Visible"] = false; //rmReport1.DeletePage(2); } #endregion rmReport1.ShowReport(); //修复reportmachine的bug,将路径重新定位到当前路径 Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); rmReport1.Dispose(); //回收内存 list_dt.Clear(); } private void ReportTemplatePrint_GBReport() { rmReport1.PreviewOptions.BtnDesignVisible = true; rmReport1.LoadFromFile("Resources\\ReportTemplate\\GB.rmf"); DataTable ls_dt_GB1_A = list_dt.Where(aa => aa.TableName.Contains("GB1_A")).ToList()[0]; DataTable ls_dt_GB1_B = list_dt.Where(aa => aa.TableName.Contains("GB1_B")).ToList()[0]; DataTable ls_dt_GB1_C = list_dt.Where(aa => aa.TableName.Contains("GB1_C")).ToList()[0]; DataTable ls_dt_GB1_D = list_dt.Where(aa => aa.TableName.Contains("GB1_D")).ToList()[0]; DataTable ls_dt_GB1_DS = list_dt.Where(aa => aa.TableName.Contains("GB1_DS")).ToList()[0]; DataTable ls_dt_GB2_A = list_dt.Where(aa => aa.TableName.Contains("GB2_A")).ToList()[0]; DataTable ls_dt_GB2_B = list_dt.Where(aa => aa.TableName.Contains("GB2_B")).ToList()[0]; DataTable ls_dt_GB2_C = list_dt.Where(aa => aa.TableName.Contains("GB2_C")).ToList()[0]; DataTable ls_dt_GB2_D = list_dt.Where(aa => aa.TableName.Contains("GB2_D")).ToList()[0]; DataTable ls_dt_GB2_D_sulfide = list_dt.Where(aa => aa.TableName.Contains("GB2_D_sulfide")).ToList()[0]; DataTable ls_dt_GB2_DS = list_dt.Where(aa => aa.TableName.Contains("GB2_DS")).ToList()[0]; DataTable ls_resultgrid = list_dt.Where(aa => aa.TableName.Contains("ResultGrid")).ToList()[0];//插入测量结果Grid表格 rmReport1.AddDataSet(ls_dt_GB1_A, "GB1_A"); rmReport1.AddDataSet(ls_dt_GB1_B, "GB1_B"); rmReport1.AddDataSet(ls_dt_GB1_C, "GB1_C"); rmReport1.AddDataSet(ls_dt_GB1_D, "GB1_D"); rmReport1.AddDataSet(ls_dt_GB1_DS, "GB1_DS"); rmReport1.AddDataSet(ls_dt_GB2_A, "GB2_A"); rmReport1.AddDataSet(ls_dt_GB2_B, "GB2_B"); rmReport1.AddDataSet(ls_dt_GB2_C, "GB2_C"); rmReport1.AddDataSet(ls_dt_GB2_D, "GB2_D"); rmReport1.AddDataSet(ls_dt_GB2_D_sulfide, "GB2_D_sulfide"); rmReport1.AddDataSet(ls_dt_GB2_DS, "GB2_DS"); rmReport1.AddDataSet(ls_resultgrid, "ResultGrid"); rmReport1.ShowReport(); //修复reportmachine的bug,将路径重新定位到当前路径 Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); rmReport1.Dispose(); //回收内存 list_dt.Clear(); } /// /// 调用预览查看报表,显示颗粒列表 /// private void ReportTemplatePrint_PartilceListReport() { DataTable ls_dt_largest = list_dt.Where(aa => aa.TableName.Contains("Largest3")).ToList()[0]; rmReport1.LoadFromFile("Resources\\ReportTemplate\\Largest.rmf"); rmReport1.AddDataSet(ls_dt_largest, "Largest3"); rmReport1.PreviewOptions.BtnDesignVisible = true; rmReport1.ShowReport(); //修复reportmachine的bug,将路径重新定位到当前路径 Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); rmReport1.Dispose(); } #endregion #region 读取XML模板配置文件 /// ///读取xml配置文件 /// private void LoadControlsToXml() { string path = string.Empty; OpenFileDialog Load = new OpenFileDialog(); Load.Filter = "PXML文件|*.xml"; Load.InitialDirectory = @System.Windows.Forms.Application.StartupPath + "\\Config\\ProData"; if (Load.ShowDialog() == DialogResult.OK) path = Load.FileName;//赋值目录 if (path != string.Empty) { //tb_mblj.Text = path; m_mbszclass.M_DZ.route = path; XmlConfigUtil xmlutil = new XmlConfigUtil(path); //首页 m_mbszclass.M_SY.str_tb_ZBT = xmlutil.Read("M_SY", "str_tb_ZBT"); m_mbszclass.M_SY.str_tb_FBT = xmlutil.Read("M_SY", "str_tb_FBT"); m_mbszclass.M_SY.str_tb_YPBH = xmlutil.Read("M_SY", "str_tb_YPBH"); m_mbszclass.M_SY.str_tb_CKBZ = xmlutil.Read("M_SY", "str_tb_CKBZ"); m_mbszclass.M_SY.b_ck_ypsm = Convert.ToBoolean(xmlutil.Read("M_SY", "b_ck_ypsm")); m_mbszclass.M_SY.b_ck_jggk = Convert.ToBoolean(xmlutil.Read("M_SY", "b_ck_jggk")); //页眉页脚 m_mbszclass.M_YMYJ.str_tb_ymwb = xmlutil.Read("M_YMYJ", "str_tb_ymwb"); m_mbszclass.M_YMYJ.str_tb_KHH = xmlutil.Read("M_YMYJ", "str_tb_KHH"); m_mbszclass.M_YMYJ.b_ck_ym = Convert.ToBoolean(xmlutil.Read("M_YMYJ", "b_ck_ym")); m_mbszclass.M_YMYJ.str_tb_yjwb = xmlutil.Read("M_YMYJ", "str_tb_yjwb"); MessageBox.Show(m_mbszclass.M_YMYJ.str_tb_ymwb+"!!"+m_mbszclass.M_YMYJ.str_tb_KHH+"!!"+m_mbszclass.M_YMYJ.str_tb_yjwb); //颗粒分析结果 m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk = Convert.ToBoolean(xmlutil.Read("M_KLFXJG", "b_ck_klcc_xsmk"));//是否显示模块 m_mbszclass.M_KLFXJG.index_cb_klcc_jsfs = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_klcc_jsfs"));//计算方式 m_mbszclass.M_KLFXJG.index_cb_klcc_ljb = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_klcc_ljb"));//粒级表 m_mbszclass.M_KLFXJG.index_cb_klcc_klfw = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_klcc_klfw"));//颗粒范围 m_mbszclass.M_KLFXJG.b_cb_jzwfl_xsmk = Convert.ToBoolean(xmlutil.Read("M_KLFXJG", "b_cb_jzwfl_xsmk"));//是否显示该模块 m_mbszclass.M_KLFXJG.index_cb_jzwfl_xstx = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_jzwfl_xstx"));//选择图像 m_mbszclass.M_KLFXJG.index_cb_jzwfl_jsfs = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_jzwfl_jsfs"));//计算方式 m_mbszclass.M_KLFXJG.index_cb_jzwfl_ljb = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_jzwfl_ljb"));//粒级表 m_mbszclass.M_KLFXJG.index_cb_jzwfl_klfw = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_jzwfl_klfw"));//颗粒范围 //元素分析结果 m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk = Convert.ToBoolean(xmlutil.Read("M_YSFXJG", "b_ck_ysfx_xsmk")); //是否显示模块 m_mbszclass.M_YSFXJG.index_cb_yxfx_jsfs = Convert.ToInt32(xmlutil.Read("M_YSFXJG", "index_cb_yxfx_jsfs")); //计算方式 m_mbszclass.M_YSFXJG.index_cb_ysfx_klfw = Convert.ToInt32(xmlutil.Read("M_YSFXJG", "index_cb_ysfx_klfw")); //颗粒范围 m_mbszclass.M_YSFXJG.str_tb_ysfx_xsys = xmlutil.Read("M_YSFXJG", "str_tb_ysfx_xsys"); //显示元素 m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Clear(); for (int i = 0; i < 100; i++) //取得所有元素列表 { string str = xmlutil.Read("M_YSFXJG", "list_str_tb_ysfx_xsys", "YS" + i.ToString()); if (str == null) { break; } else { m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Add(str); } } m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk = Convert.ToBoolean(xmlutil.Read("M_YSFXJG", "b_ck_yscf_xsmk")); //是否显示模块 m_mbszclass.M_YSFXJG.index_cb_yscf_xstx = Convert.ToInt32(xmlutil.Read("M_YSFXJG", "index_cb_yscf_xstx")); //显示图形 m_mbszclass.M_YSFXJG.index_cb_yscf_jsfs = Convert.ToInt32(xmlutil.Read("M_YSFXJG", "index_cb_yscf_jsfs")); //计算方式 m_mbszclass.M_YSFXJG.index_cb_yscf_klfw = Convert.ToInt32(xmlutil.Read("M_YSFXJG", "index_cb_yscf_klfw")); //颗粒范围 m_mbszclass.M_YSFXJG.str_tb_yscf_ysxx = xmlutil.Read("M_YSFXJG", "str_tb_yscf_ysxx"); //显示元素 m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx.Clear(); for (int i = 0; i < 100; i++) //取得所有元素列表 { string str = xmlutil.Read("M_YSFXJG", "list_str_tb_yscf_ysxx", "YS" + i.ToString()); if (str == null) { break; } else { m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx.Add(str); } } //三元相图 m_mbszclass.M_SYXT.b_ck_syxt_xsmk = Convert.ToBoolean(xmlutil.Read("M_SYXT", "b_ck_syxt_xsmk")); //是否显示模块 m_mbszclass.M_SYXT.index_cb_syxt_jsfs = Convert.ToInt32(xmlutil.Read("M_SYXT", "index_cb_syxt_jsfs")); //计算方式 m_mbszclass.M_SYXT.index_cb_syxt_klfw = Convert.ToInt32(xmlutil.Read("M_SYXT", "index_cb_syxt_klfw")); //颗粒范围 m_mbszclass.M_SYXT.str_cb_syxt_mhxssl = xmlutil.Read("M_SYXT", "str_cb_syxt_mhxssl"); //每行显示数量 m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Clear(); for (int i = 0; i < 100; i++) //取得所有模板列表 { string str = xmlutil.Read("M_SYXT", "list_lbv_syxt_mblb", "MB" + i.ToString()); if (str == null) { break; } else { m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Add(str); } } m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Clear(); for (int i = 0; i < 100; i++) //取得所有模板列表 索引 { string str = xmlutil.Read("M_SYXT", "list_lbv_syxt_mblb_index", "MBIndex" + i.ToString()); if (str == null) { break; } else { m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Add(Convert.ToInt32(str)); } } //颗粒列表信息 m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk = Convert.ToBoolean(xmlutil.Read("M_KLLBXX", "b_ck_kllb_xsmk")); //是否显示模块 m_mbszclass.M_KLLBXX.index_cb_kllb_jsfs = Convert.ToInt32(xmlutil.Read("M_KLLBXX", "index_cb_kllb_jsfs")); //计算方式 m_mbszclass.M_KLLBXX.index_cb_kllb_klfw = Convert.ToInt32(xmlutil.Read("M_KLLBXX", "index_cb_kllb_klfw")); //颗粒范围 m_mbszclass.M_KLLBXX.int_tb_kllb_ylsx = Convert.ToInt32(xmlutil.Read("M_KLLBXX", "int_tb_kllb_ylsx")); //数量上限 m_mbszclass.M_KLLBXX.str_tb_kllb_sxys = xmlutil.Read("M_KLLBXX", "str_tb_kllb_sxys"); //显示元素 m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys.Clear(); for (int i = 0; i < 100; i++) //取得所有元素列表 { string str = xmlutil.Read("M_KLLBXX", "list_str_tb_lllb_sxys", "YS" + i.ToString()); if (str == null) { break; } else { m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys.Add(str); } } m_mbszclass.M_KLLBXX.b_ck_kllb_ystx = Convert.ToBoolean(xmlutil.Read("M_KLLBXX", "b_ck_kllb_ystx")); //原始图像 m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx = Convert.ToBoolean(xmlutil.Read("M_KLLBXX", "b_ck_kllb_fdtx")); //放大图像 m_mbszclass.M_KLLBXX.b_ck_kllb_npxx = Convert.ToBoolean(xmlutil.Read("M_KLLBXX", "b_ck_kllb_npxx")); //能谱图像 } } /// ///从配置文件中读取报告模板信息 /// private void LoadRouteclass() { string strPath2 = ""; if (m_mbszclass.M_DZ.route == null) { //strPath2 = strPath; m_mbszclass.M_DZ.route = m_arg2; } else if (m_mbszclass.M_DZ.route == "") { //strPath2 = strPath; m_mbszclass.M_DZ.route = m_arg2; } else { strPath2 = m_mbszclass.M_DZ.route; } xmlutil2 = new XmlConfigUtil(strPath2); //首页 m_mbszclass.M_SY.str_tb_ZBT = xmlutil2.Read("M_SY", "str_tb_ZBT"); m_mbszclass.M_SY.str_tb_FBT = xmlutil2.Read("M_SY", "str_tb_FBT"); m_mbszclass.M_SY.str_tb_YPBH = xmlutil2.Read("M_SY", "str_tb_YPBH"); m_mbszclass.M_SY.str_tb_CKBZ = xmlutil2.Read("M_SY", "str_tb_CKBZ"); m_mbszclass.M_SY.b_ck_ypsm = Convert.ToBoolean(xmlutil2.Read("M_SY", "b_ck_ypsm")); m_mbszclass.M_SY.b_ck_jggk = Convert.ToBoolean(xmlutil2.Read("M_SY", "b_ck_jggk")); //页眉页脚 m_mbszclass.M_YMYJ.str_tb_ymwb = xmlutil2.Read("M_YMYJ", "str_tb_ymwb"); m_mbszclass.M_YMYJ.str_tb_KHH = xmlutil2.Read("M_YMYJ", "str_tb_KHH"); m_mbszclass.M_YMYJ.b_ck_ym = Convert.ToBoolean(xmlutil2.Read("M_YMYJ", "b_ck_ym")); m_mbszclass.M_YMYJ.str_tb_yjwb = xmlutil2.Read("M_YMYJ", "str_tb_yjwb"); //颗粒分析结果 m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk = Convert.ToBoolean(xmlutil2.Read("M_KLFXJG", "b_ck_klcc_xsmk"));//是否显示模块 m_mbszclass.M_KLFXJG.index_cb_klcc_jsfs = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_klcc_jsfs"));//计算方式 m_mbszclass.M_KLFXJG.index_cb_klcc_ljb = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_klcc_ljb"));//粒级表 m_mbszclass.M_KLFXJG.index_cb_klcc_klfw = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_klcc_klfw"));//颗粒范围 m_mbszclass.M_KLFXJG.b_cb_jzwfl_xsmk = Convert.ToBoolean(xmlutil2.Read("M_KLFXJG", "b_cb_jzwfl_xsmk"));//是否显示该模块 m_mbszclass.M_KLFXJG.index_cb_jzwfl_xstx = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_jzwfl_xstx"));//选择图像 m_mbszclass.M_KLFXJG.index_cb_jzwfl_jsfs = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_jzwfl_jsfs"));//计算方式 m_mbszclass.M_KLFXJG.index_cb_jzwfl_ljb = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_jzwfl_ljb"));//粒级表 m_mbszclass.M_KLFXJG.index_cb_jzwfl_klfw = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_jzwfl_klfw"));//颗粒范围 //元素分析结果 m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk = Convert.ToBoolean(xmlutil2.Read("M_YSFXJG", "b_ck_ysfx_xsmk")); //是否显示模块 m_mbszclass.M_YSFXJG.index_cb_yxfx_jsfs = Convert.ToInt32(xmlutil2.Read("M_YSFXJG", "index_cb_yxfx_jsfs")); //计算方式 m_mbszclass.M_YSFXJG.index_cb_ysfx_klfw = Convert.ToInt32(xmlutil2.Read("M_YSFXJG", "index_cb_ysfx_klfw")); //颗粒范围 m_mbszclass.M_YSFXJG.str_tb_ysfx_xsys = xmlutil2.Read("M_YSFXJG", "str_tb_ysfx_xsys"); //显示元素 m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Clear(); for (int i = 0; i < 100; i++) //取得所有元素列表 { string str = xmlutil2.Read("M_YSFXJG", "list_str_tb_ysfx_xsys", "YS" + i.ToString()); if (str == null) { break; } else { m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Add(str); } } m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk = Convert.ToBoolean(xmlutil2.Read("M_YSFXJG", "b_ck_yscf_xsmk")); //是否显示模块 m_mbszclass.M_YSFXJG.index_cb_yscf_xstx = Convert.ToInt32(xmlutil2.Read("M_YSFXJG", "index_cb_yscf_xstx")); //显示图形 m_mbszclass.M_YSFXJG.index_cb_yscf_jsfs = Convert.ToInt32(xmlutil2.Read("M_YSFXJG", "index_cb_yscf_jsfs")); //计算方式 m_mbszclass.M_YSFXJG.index_cb_yscf_klfw = Convert.ToInt32(xmlutil2.Read("M_YSFXJG", "index_cb_yscf_klfw")); //颗粒范围 m_mbszclass.M_YSFXJG.str_tb_yscf_ysxx = xmlutil2.Read("M_YSFXJG", "str_tb_yscf_ysxx"); //显示元素 m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx.Clear(); for (int i = 0; i < 100; i++) //取得所有元素列表 { string str = xmlutil2.Read("M_YSFXJG", "list_str_tb_yscf_ysxx", "YS" + i.ToString()); if (str == null) { break; } else { m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx.Add(str); } } //三元相图 m_mbszclass.M_SYXT.b_ck_syxt_xsmk = Convert.ToBoolean(xmlutil2.Read("M_SYXT", "b_ck_syxt_xsmk")); //是否显示模块 m_mbszclass.M_SYXT.index_cb_syxt_jsfs = Convert.ToInt32(xmlutil2.Read("M_SYXT", "index_cb_syxt_jsfs")); //计算方式 m_mbszclass.M_SYXT.index_cb_syxt_klfw = Convert.ToInt32(xmlutil2.Read("M_SYXT", "index_cb_syxt_klfw")); //颗粒范围 m_mbszclass.M_SYXT.str_cb_syxt_mhxssl = xmlutil2.Read("M_SYXT", "str_cb_syxt_mhxssl"); //每行显示数量 m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Clear(); for (int i = 0; i < 100; i++) //取得所有模板列表 { string str = xmlutil2.Read("M_SYXT", "list_lbv_syxt_mblb", "MB" + i.ToString()); if (str == null) { break; } else { m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Add(str); } } m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Clear(); for (int i = 0; i < 100; i++) //取得所有模板列表 索引 { string str = xmlutil2.Read("M_SYXT", "list_lbv_syxt_mblb_index", "MBIndex" + i.ToString()); if (str == null) { break; } else { m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Add(Convert.ToInt32(str)); } } //颗粒列表信息 m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk = Convert.ToBoolean(xmlutil2.Read("M_KLLBXX", "b_ck_kllb_xsmk")); //是否显示模块 m_mbszclass.M_KLLBXX.index_cb_kllb_jsfs = Convert.ToInt32(xmlutil2.Read("M_KLLBXX", "index_cb_kllb_jsfs")); //计算方式 m_mbszclass.M_KLLBXX.index_cb_kllb_klfw = Convert.ToInt32(xmlutil2.Read("M_KLLBXX", "index_cb_kllb_klfw")); //颗粒范围 m_mbszclass.M_KLLBXX.int_tb_kllb_ylsx = Convert.ToInt32(xmlutil2.Read("M_KLLBXX", "int_tb_kllb_ylsx")); //数量上限 m_mbszclass.M_KLLBXX.str_tb_kllb_sxys = xmlutil2.Read("M_KLLBXX", "str_tb_kllb_sxys"); //显示元素 m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys.Clear(); for (int i = 0; i < 100; i++) //取得所有元素列表 { string str = xmlutil2.Read("M_KLLBXX", "list_str_tb_lllb_sxys", "YS" + i.ToString()); if (str == null) { break; } else { m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys.Add(str); } } m_mbszclass.M_KLLBXX.b_ck_kllb_ystx = Convert.ToBoolean(xmlutil2.Read("M_KLLBXX", "b_ck_kllb_ystx")); //原始图像 m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx = Convert.ToBoolean(xmlutil2.Read("M_KLLBXX", "b_ck_kllb_fdtx")); //放大图像 m_mbszclass.M_KLLBXX.b_ck_kllb_npxx = Convert.ToBoolean(xmlutil2.Read("M_KLLBXX", "b_ck_kllb_npxx")); //能谱图像 } /// /// 从配置文件中读取报告模板路径 /// private void LoadMBSZClass() { //文件路径 m_mbszclass.M_DZ.route = xmlutil.Read("M_address", "Path"); if (m_mbszclass.M_DZ.route == "") { //tb_mblj.Text = strPath; m_mbszclass.M_DZ.route = m_arg2; } else if (File.Exists(m_mbszclass.M_DZ.route)) { //tb_mblj.Text = m_mbszclass.M_DZ.route; } else { //tb_mblj.Text = strPath; m_mbszclass.M_DZ.route = m_arg2; } } #endregion #region 读取DB数据库文件 /// /// 读取DB数据库文件,主报表部份 /// private void LoadReportTemplateDBFile() { string strpath = m_arg1;//db数据库路径 SqLiteHelper sh = new SqLiteHelper("data source='" + strpath + "'"); list_dt.Clear(); DataTable ls_ResultGrid = sh.ExecuteQuery("select * from ResultGrid"); ls_ResultGrid.TableName = "ResultGrid"; list_dt.Add(ls_ResultGrid); string strmix = m_arg5.Substring(0, m_arg5.IndexOf("-")); string strmax = m_arg5.Substring(m_arg5.IndexOf("-") + 1, m_arg5.Length - m_arg5.IndexOf("-") - 1); DataTable ls_Largest_frame2 = sh.ExecuteQuery("select * from Largest_frame where cast(fieldid as int) > " + strmix + " and cast(fieldid as int) < " + strmax + " "); ls_Largest_frame2.TableName = "Largest_frame"; list_dt.Add(ls_Largest_frame2); //DataTable ls_FrameGraphSubTable = sh.ExecuteQuery("select * from FrameGraphSubTable where cast(fieldid as int) > " + strmix + " and cast(fieldid as int) < " + strmax + " "); DataTable ls_FrameGraphSubTable = sh.ExecuteQuery("select * from FrameGraphSubTable "); ls_FrameGraphSubTable.TableName = "FrameGraphSubTable"; list_dt.Add(ls_FrameGraphSubTable); DataTable ls_Largest20 = sh.ExecuteQuery("select * from Largest20"); ls_Largest20.TableName = "Largest20"; list_dt.Add(ls_Largest20); DataTable ls_AreaRatio = sh.ExecuteQuery("select * from AreaRatio"); ls_AreaRatio.TableName = "AreaRatio"; list_dt.Add(ls_AreaRatio); //DataTable ls_Largest2new = sh.ExecuteQuery("select * from Largest2new"); //ls_Largest2new.TableName = "Largest2new"; //list_dt.Add(ls_Largest2new); //DataTable ls_field_dt = sh.ExecuteQuery("select * from field_dt where cast(fieldid as int) > " + strmix + " and cast(fieldid as int) < " + strmax + " "); DataTable ls_field_dt = sh.ExecuteQuery("select * from field_dt "); ls_field_dt.TableName = "field_dt"; list_dt.Add(ls_field_dt); DataTable ls_ElementName = sh.ExecuteQuery("select * from ElementName"); ls_ElementName.TableName = "ElementName"; list_dt.Add(ls_ElementName); DataTable ls_ElementValue = sh.ExecuteQuery("select * from ElementValue"); ls_ElementValue.TableName = "ElementValue"; list_dt.Add(ls_ElementValue); DataTable ls_PartSize = sh.ExecuteQuery("select * from PartSize"); ls_PartSize.TableName = "PartSize"; list_dt.Add(ls_PartSize); DataTable ls_Particel = sh.ExecuteQuery("select * from Particel"); ls_Particel.TableName = "Particel"; list_dt.Add(ls_Particel); DataTable ls_Particel_subdivision = sh.ExecuteQuery("select * from Particel_subdivision"); ls_Particel_subdivision.TableName = "Particel_subdivision"; list_dt.Add(ls_Particel_subdivision); //DataTable ls_PicKL = sh.ExecuteQuery("select * from PicKL"); //ls_PicKL.TableName = "PicKL"; //list_dt.Add(ls_PicKL); DataTable ls_PicYS = sh.ExecuteQuery("select * from PicYS"); ls_PicYS.TableName = "PicYS"; list_dt.Add(ls_PicYS); DataTable ls_PicInclusionAreaRatio = sh.ExecuteQuery("select * from PicInclusionAreaRatio"); ls_PicInclusionAreaRatio.TableName = "PicInclusionAreaRatio"; list_dt.Add(ls_PicInclusionAreaRatio); DataTable ls_PicInclusionAreaClassRatio = sh.ExecuteQuery("select * from Pic_InclusionareaClassRatio"); ls_PicInclusionAreaClassRatio.TableName = "Pic_InclusionareaClassRatio"; list_dt.Add(ls_PicInclusionAreaClassRatio); DataTable ls_PicSYXT2T = sh.ExecuteQuery("select * from PicSYXT2T"); ls_PicSYXT2T.TableName = "PicSYXT2T"; list_dt.Add(ls_PicSYXT2T); DataTable ls_PicSYXT3T = sh.ExecuteQuery("select * from PicSYXT3T"); ls_PicSYXT3T.TableName = "PicSYXT3T"; list_dt.Add(ls_PicSYXT3T); DataTable ls_ElementalSubstance_Name = sh.ExecuteQuery("select * from ElementalSubstance_Name"); ls_ElementalSubstance_Name.TableName = "ElementalSubstance_Name"; list_dt.Add(ls_ElementalSubstance_Name); DataTable ls_ElementalSubstance_Value = sh.ExecuteQuery("select * from ElementalSubstance_Value"); ls_ElementalSubstance_Value.TableName = "ElementalSubstance_Value"; list_dt.Add(ls_ElementalSubstance_Value); DataTable ls_ElementSubdivision_Name = sh.ExecuteQuery("select * from ElementSubdivision_Name"); ls_ElementSubdivision_Name.TableName = "ElementSubdivision_Name"; list_dt.Add(ls_ElementSubdivision_Name); DataTable ls_ElementSubdivision_Value = sh.ExecuteQuery("select * from ElementSubdivision_Value"); ls_ElementSubdivision_Value.TableName = "ElementSubdivision_Value"; list_dt.Add(ls_ElementSubdivision_Value); } /// /// 读取DB数据库文件,颗粒列表部份 /// private void LoadReportTemplateDBFile_ParticleList() { string strpath = m_arg1;//db数据库路径 SqLiteHelper sh = new SqLiteHelper("data source='" + strpath + "'"); list_dt.Clear(); string strmix = m_arg4.Substring(0, m_arg4.IndexOf("-")); string strmax = m_arg4.Substring(m_arg4.IndexOf("-") + 1, m_arg4.Length - m_arg4.IndexOf("-") - 1); DataTable ls_Largest3 = sh.ExecuteQuery("select * from largest3 where cast(pid as int) > " + strmix + " and cast(pid as int) < " + strmax + " "); ls_Largest3.TableName = "Largest3"; list_dt.Add(ls_Largest3); } /// /// 读取DB数据库文件,国标部分 /// private void LoadReportGBDBFile() { string strpath = m_arg1;//db数据库路径 SqLiteHelper sh = new SqLiteHelper("data source='" + strpath + "'"); list_dt.Clear(); DataTable ls_ResultGrid = sh.ExecuteQuery("select * from ResultGrid"); ls_ResultGrid.TableName = "ResultGrid"; list_dt.Add(ls_ResultGrid); DataTable ls_GB1_A = sh.ExecuteQuery("select * from GB1_A"); ls_GB1_A.TableName = "GB1_A"; list_dt.Add(ls_GB1_A); DataTable ls_GB1_B = sh.ExecuteQuery("select * from GB1_B"); ls_GB1_B.TableName = "GB1_B"; list_dt.Add(ls_GB1_B); DataTable ls_GB1_C = sh.ExecuteQuery("select * from GB1_C"); ls_GB1_C.TableName = "GB1_C"; list_dt.Add(ls_GB1_C); DataTable ls_GB1_D = sh.ExecuteQuery("select * from GB1_D"); ls_GB1_D.TableName = "GB1_D"; list_dt.Add(ls_GB1_D); DataTable ls_GB1_DS = sh.ExecuteQuery("select * from GB1_DS"); ls_GB1_DS.TableName = "GB1_DS"; list_dt.Add(ls_GB1_DS); DataTable ls_GB2_A = sh.ExecuteQuery("select * from GB2_A"); ls_GB2_A.TableName = "GB2_A"; list_dt.Add(ls_GB2_A); DataTable ls_GB2_B = sh.ExecuteQuery("select * from GB2_B"); ls_GB2_B.TableName = "GB2_B"; list_dt.Add(ls_GB2_B); DataTable ls_GB2_C = sh.ExecuteQuery("select * from GB2_C"); ls_GB2_C.TableName = "GB2_C"; list_dt.Add(ls_GB2_C); DataTable ls_GB2_D = sh.ExecuteQuery("select * from GB2_D"); ls_GB2_D.TableName = "GB2_D"; list_dt.Add(ls_GB2_D); DataTable ls_GB2_D_sulfide = sh.ExecuteQuery("select * from GB2_D_sulfide"); ls_GB2_D_sulfide.TableName = "GB2_D_sulfide"; list_dt.Add(ls_GB2_D_sulfide); DataTable ls_GB2_DS = sh.ExecuteQuery("select * from GB2_DS"); ls_GB2_DS.TableName = "GB2_DS"; list_dt.Add(ls_GB2_DS); } #endregion #region 回收内存 /// /// 回收内存 /// public void FlushMemory() { //回收内存 MemoryManagement mm = new MemoryManagement(); mm.FlushMemory(); } public class MemoryManagement { [System.Runtime.InteropServices.DllImport("kernel32.dll")] public static extern bool SetProcessWorkingSetSize(IntPtr proc, int min, int max); public void FlushMemory() { GC.Collect(); GC.WaitForPendingFinalizers(); if (Environment.OSVersion.Platform == PlatformID.Win32NT) { SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1); } } } [System.Runtime.InteropServices.DllImport("coredll.dll")] [return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)] public static extern bool DeleteObject(IntPtr hgdiobj); private void timer1_Tick(object sender, EventArgs e) { FlushMemory(); } #endregion } #region 模板设置类 /// /// 模板设置类 /// public class MBSZClass { //#region 文件路径 public DZ M_DZ { get; set; } //#endregion #region 属性 /// /// 首页 /// public SY M_SY { get; set; } /// /// 页眉页脚 /// public YMYJ M_YMYJ { get; set; } /// /// 颗粒分析结果 /// public KLFXJG M_KLFXJG { get; set; } /// /// 元素分析结果 /// public YSFXJG M_YSFXJG { get; set; } /// /// 三元相图 /// public SYXT M_SYXT { get; set; } /// /// 颗粒列表信息 /// public KLLBXX M_KLLBXX { get; set; } #endregion #region 构造函数 public MBSZClass() { M_SY = new SY(); M_YMYJ = new YMYJ(); M_KLFXJG = new KLFXJG(); M_YSFXJG = new YSFXJG(); M_YSFXJG.list_str_tb_yscf_ysxx = new List(); M_YSFXJG.list_str_tb_ysfx_xsys = new List(); M_SYXT = new SYXT(); M_SYXT.list_lbv_syxt_mblb = new List(); M_SYXT.list_lbv_syxt_mblb_index = new List(); M_KLLBXX = new KLLBXX(); M_KLLBXX.list_str_tb_lllb_sxys = new List(); M_DZ = new DZ(); } #endregion public class DZ { public string route { get; set; } } #region 首页部份 public class SY { /// /// 主标题 /// public string str_tb_ZBT { get; set; } /// /// 副标题 /// public string str_tb_FBT { get; set; } /// /// 样品编号 /// public string str_tb_YPBH { get; set; } /// /// 参考标准 /// public string str_tb_CKBZ { get; set; } /// /// 是否显示样品说明 /// public bool b_ck_ypsm { get; set; } /// /// 是否显示结果概况 /// public bool b_ck_jggk { get; set; } } #endregion #region 页眉页脚部份 public class YMYJ { /// /// 页眉文本 /// public string str_tb_ymwb { get; set; } /// /// 客户号 /// public string str_tb_KHH { get; set; } /// /// 是否显示页码 /// public bool b_ck_ym { get; set; } /// /// 页脚文本 /// public string str_tb_yjwb { get; set; } } #endregion #region 颗粒分析结果部份 public class KLFXJG { /// /// 是否显示颗粒尺寸分析结果表 /// public bool b_ck_klcc_xsmk { get; set; } /// ///颗粒尺寸分析结果表 计算方式文本 /// public string str_cb_klcc_jsfs { get; set; } /// ///颗粒尺寸分析结果表 计算方式索引 /// public int index_cb_klcc_jsfs { get; set; } /// ///颗粒尺寸分析结果表 粒级表文本 /// public string str_cb_klcc_ljb { get; set; } /// ///颗粒尺寸分析结果表 粒级表索引 /// public int index_cb_klcc_ljb { get; set; } /// ///颗粒尺寸分析结果表 颗粒选择范围文本 /// public string str_cb_klcc_klfw { get; set; } /// ///颗粒尺寸分析结果表 颗粒选择范围索引 /// public int index_cb_klcc_klfw { get; set; } /// /// 夹杂物分类图 是否显示该模块 /// public bool b_cb_jzwfl_xsmk { get; set; } /// ///夹杂物分类图 显示图形选择文本 /// public string str_cb_jzwfl_xstx { get; set; } /// ///夹杂物分类图 显示图形 选择索引 /// public int index_cb_jzwfl_xstx { get; set; } /// ///夹杂物分类图 计算方式 选择文本 /// public string str_cb_jzwfl_jsfs { get; set; } /// ///夹杂物分类图 计算方式 选择索引 /// public int index_cb_jzwfl_jsfs { get; set; } /// ///夹杂物分类图 粒级表 选择文本 /// public string str_cb_jzwfl_ljb { get; set; } /// ///夹杂物分类图 粒级表 选择索引 /// public int index_cb_jzwfl_ljb { get; set; } /// ///夹杂物分类图 颗粒范围 选择文本 /// public string str_cb_jzwfl_klfw { get; set; } /// ///夹杂物分类图 颗粒范围 选择索引 /// public int index_cb_jzwfl_klfw { get; set; } } #endregion #region 元素分析结果部份 public class YSFXJG { /// /// 元素分析表 是否显示该模块 /// public bool b_ck_ysfx_xsmk { get; set; } /// /// 元素分析表 计算方式 选择文本 /// public string str_cb_yxfx_jsfs { get; set; } /// /// 元素分析表 计算方式 选择索引 /// public int index_cb_yxfx_jsfs { get; set; } /// /// 元素分析表 颗粒范围 选择文本 /// public string str_cb_ysfx_klfw { get; set; } /// /// 元素分析表 颗粒范围 选择索引 /// public int index_cb_ysfx_klfw { get; set; } /// /// 元素分析表 显示元素显示文本 /// public string str_tb_ysfx_xsys { get; set; } /// /// 元素分析表 显示元素拆分元素列表 /// public List list_str_tb_ysfx_xsys { get; set; } /// /// 元素成份图 是否显示该模块 /// public bool b_ck_yscf_xsmk { get; set; } /// /// 元素成份图 显示图形 文本 /// public string str_cb_yscf_xstx { get; set; } /// /// 元素成份图 显示图形 索引 /// public int index_cb_yscf_xstx { get; set; } /// /// 元素成份图 计算方式 文本 /// public string str_cb_yscf_jsfs { get; set; } /// /// 元素成份图 计算方式 索引 /// public int index_cb_yscf_jsfs { get; set; } /// /// 元素成份图 颗粒范围 文本 /// public string str_cb_yscf_klfw { get; set; } /// /// 元素成份图 颗粒范围 索引 /// public int index_cb_yscf_klfw { get; set; } /// /// 元素成份图 元素信息 /// public string str_tb_yscf_ysxx { get; set; } /// /// 元素成份图 元素信息列表拆分字符列表 /// public List list_str_tb_yscf_ysxx { get; set; } } #endregion #region 三元相图部份 public class SYXT { /// /// 三元相图 是否显示该模块 /// public bool b_ck_syxt_xsmk { get; set; } /// /// 计算方式 文本 /// public string str_cb_syxt_jsfs { get; set; } /// /// 计算方式 索引 /// public int index_cb_syxt_jsfs { get; set; } /// /// 颗粒范围 文本 /// public string str_cb_syxt_klfw { get; set; } /// /// 颗粒范围 索引 /// public int index_cb_syxt_klfw { get; set; } /// /// 粒级表信息 文本 /// public string str_cb_syxt_ljb { get; set; } /// /// 粒级表信息 索引 /// public int index_cb_syxt_ljb { get; set; } /// /// 每行显示数量 文本 /// public string str_cb_syxt_mhxssl { get; set; } /// /// 每行显示数量 索引 /// public int index_cb_syxt_mhxssl { get; set; } /// /// 三元相图模板集合列表 /// public List list_lbv_syxt_mblb { get; set; } /// /// 三元相图模板索引集合列表 /// public List list_lbv_syxt_mblb_index { get; set; } } #endregion #region 颗粒列表信息部份 public class KLLBXX { /// /// 颗粒列表 是否显示该模块 /// public bool b_ck_kllb_xsmk { get; set; } /// /// 颗粒列表 计算方式 文本 /// public string str_cb_kllb_jsfs { get; set; } /// /// 颗粒列表 计算方式 索引 /// public int index_cb_kllb_jsfs { get; set; } /// /// 颗粒列表 颗粒范围 文本 /// public string str_cb_kllb_klfw { get; set; } /// /// 颗粒列表 颗粒范围 索引 /// public int index_cb_kllb_klfw { get; set; } /// /// 颗粒列表 数量上限 /// public int int_tb_kllb_ylsx { get; set; } /// /// 颗粒列表 显示元素 /// public string str_tb_kllb_sxys { get; set; } /// /// 颗粒列表 显示元素拆分元素列表 /// public List list_str_tb_lllb_sxys { get; set; } /// /// 颗粒列表 是否显示原始图像 /// public bool b_ck_kllb_ystx { get; set; } /// /// 颗粒列表 是否显示放大图像 /// public bool b_ck_kllb_fdtx { get; set; } /// /// 颗粒列表 是否显示能谱信息 /// public bool b_ck_kllb_npxx { get; set; } } #endregion } #endregion #region 保存ini结构类 /// /// 内容部份包含结构类 /// public class TemplateContent { private string mkm = ""; //模块名 private int ix = 0; //位置x private int iy = 0; //位置y private string sjlx = ""; //数据类型 private string ljb = ""; //粒级表 private string ccjsfs = ""; //尺寸计算方式 private string syxtmb = ""; //三元相图模板 /// /// 模块名 /// public string MKM { get { return mkm; } set { mkm = value; } } /// /// 坐标x /// public int IX { get { return ix; } set { ix = value; } } /// /// 坐标y /// public int IY { get { return iy; } set { iy = value; } } /// /// 数据类型,全部颗粒,选择颗粒 /// public string SJLX { get { return sjlx; } set { sjlx = value; } } /// /// 所使用粒级表的名称 /// public string LJB { get { return ljb; } set { ljb = value; } } /// /// 尺寸计算方式,直径,面积,费雷特直径,等效圆直径,最长直径,最短直径 /// public string CCJSFS { get { return ccjsfs; } set { ccjsfs = value; } } /// /// 三元相图模板 /// public string SYXTMB { get { return syxtmb; } set { syxtmb = value; } } } /// /// 整个模板结构包含类 /// public class TemplateInfo { //页眉部份 private string logopath = ""; //logo路径 private string ym_xsmc = ""; //报告名称 //页脚部份 private string yj_xsmc = ""; //公司名称 //内容部份 public List mouble_s = new List();//内容类列表,包含多个 /// /// LOGO的图像路径 /// public string LOGOPath { get { return logopath; } set { logopath = value; } } /// /// 报告名称 /// public string YM_XSMC { get { return ym_xsmc; } set { ym_xsmc = value; } } /// /// 报告名称字体 /// public string YJ_XSMC { get { return yj_xsmc; } set { yj_xsmc = value; } } /// /// 模板内容页列表 /// public List MOUBLE_S { get { return mouble_s; } set { mouble_s = value; } } } #endregion }