OTSIncAReportTemplate.cs 68 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608
  1. using OTSSysMgrTools;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Windows.Forms;
  8. namespace OTSIncAReportTemplate
  9. {
  10. public partial class OTSIncAReportTemplate : Form
  11. {
  12. #region 全局变量
  13. List<DataTable> list_dt;
  14. MBSZClass m_mbszclass = null;
  15. public XmlConfigUtil xmlutil;
  16. public XmlConfigUtil xmlutil2;
  17. //全局变量,与报告项目同步,共传4个参数
  18. //参数1:是需要打开db数据库的路径
  19. //参数2:是打开报表模板xml文件的路径
  20. //参数3:是要执行查看报表的类型,输出主报表,还是输出颗粒列表
  21. //参数4:打开主报表时是是指定夹杂物的数量,打开颗粒列表时,是颗粒列表显示的范围如,0-50,50-100
  22. //参数5:是要执行查看报表的类型,输出主报表时,指定读取的标记帧图图像范围,如0-50,50-100,输出颗粒列表时无用
  23. string m_arg1 = "";
  24. string m_arg2 = "";
  25. string m_arg3 = "";
  26. string m_arg4 = "";
  27. string m_arg5 = "";
  28. #endregion
  29. #region 构造函数及窗体加载
  30. public OTSIncAReportTemplate()
  31. {
  32. InitializeComponent();
  33. }
  34. public OTSIncAReportTemplate(string[] args)
  35. {
  36. InitializeComponent();
  37. //if (args.Length == 0)
  38. //{
  39. // MessageBox.Show("请使用报告程序打开模板程序!");
  40. // return;
  41. //}
  42. //if (args.Length != 5)
  43. //{
  44. // string str = "";
  45. // for (int i = 0; i < args.Length; i++)
  46. // {
  47. // str = str + "参数" + (i + 1).ToString() + ":" + args[i].ToString() + Environment.NewLine;
  48. // }
  49. // MessageBox.Show("传入的参数数量不正确,应为5个参数:" + Environment.NewLine + str);
  50. // return;
  51. //}
  52. //方便测试代码分岐
  53. bool bDebug = false;
  54. if (bDebug == false)
  55. {
  56. m_arg1 = args[0].Replace("^", " ");
  57. m_arg2 = args[1].Replace("^", " ");
  58. m_arg3 = args[2].Replace("^", " ");
  59. m_arg4 = args[3].Replace("^", " ");
  60. m_arg5 = args[4].Replace("^", " ");
  61. }
  62. else
  63. {
  64. ////测试
  65. //m_arg1 = "E:\\ResultFile\\东钢\\11.24\\002\\Sample1\\ReportTemplateDBParticleList.db";
  66. //m_arg2 = "./Config/ProData/ReportTemplateConfig.xml";
  67. //m_arg3 = "ParticleListReport";
  68. //m_arg4 = "33-66";
  69. //m_arg5 = "0-100";
  70. //m_arg1 = "E:\\ResultFile\\keda20201209\\Sample1\\ReportTemplateDBParticleList.db";
  71. //m_arg2 = "./Config/ProData/ReportTemplateConfig.xml";
  72. //m_arg3 = "ParticleListReport";
  73. //m_arg4 = "0-983";
  74. //m_arg5 = "";
  75. m_arg1 = "C:\\Users\\admin\\Desktop\\OTS测量结果\\北京测试\\20211110\\1110上\\3#-2\\Sample1\\ReportGBDB.db";
  76. m_arg2 = "./Config/ProData/ReportTemplateConfig.xml";
  77. m_arg3 = "GBReport";
  78. m_arg4 = "100";
  79. m_arg5 = "0-100";
  80. }
  81. //初始化xml类
  82. xmlutil = new XmlConfigUtil(m_arg2);
  83. m_mbszclass = new MBSZClass();
  84. list_dt = new List<DataTable>();
  85. }
  86. protected override void SetVisibleCore(bool value)
  87. {
  88. base.SetVisibleCore(value);
  89. }
  90. private void Form1_Load(object sender, EventArgs e)
  91. {
  92. //隐藏窗体
  93. this.WindowState = FormWindowState.Minimized;
  94. //this.ShowInTaskbar = false;
  95. //SetVisibleCore(false);
  96. if (m_arg1 != "")
  97. {
  98. rmReport1 = new RMReportEngine.RMReport();
  99. rmReport1.ModifyPrepared = false;
  100. rmReport1.Init(this, RM.Interop.ReportMachine.TxRMReportType.rmrtReport);
  101. //1300购买的注册码
  102. rmReport1.SetUserInfo("15040732794", "UEsDBBQAAAAIAPZ9ulCdRMtANAAAADUAAAAFAAAAZmlsZTET4mZgYDA0NTAxMDc2Mrc0EVIA8dPMU5LMDBONLC0NzCyTzZJTDROTzc0TDZIskhINLFIBUEsBAhQAFAAAAAgA9n26UJ1Ey0A0AAAANQAAAAUAAAAAAAAAAAAAAAAAAAAAAGZpbGUxUEsFBgAAAAABAAEAMwAAAFcAAAAAAA == ");
  103. //读取xml
  104. //LoadControlsToXml();
  105. LoadMBSZClass();
  106. LoadRouteclass();
  107. //加载显示report
  108. if (m_arg3 == "MainReport")
  109. {
  110. //读取db
  111. LoadReportTemplateDBFile();
  112. ReportTemplatePrint_MainReport();
  113. }
  114. else if (m_arg3 == "ParticleListReport")
  115. {
  116. //读取db
  117. LoadReportTemplateDBFile_ParticleList();
  118. ReportTemplatePrint_PartilceListReport();
  119. }
  120. else if( m_arg3 == "GBReport")
  121. {
  122. LoadReportGBDBFile();
  123. ReportTemplatePrint_GBReport();
  124. }
  125. }
  126. //关闭查看报告,则退出进程
  127. this.Close();
  128. Application.Exit();
  129. }
  130. #endregion
  131. #region 显示报表方法
  132. /// <summary>
  133. /// 调用预览查看报表,显示主报表
  134. /// </summary>
  135. private void ReportTemplatePrint_MainReport()
  136. {
  137. DataRelation myRela1;
  138. DataTable ls_resultgrid = list_dt.Where(aa => aa.TableName.Contains("ResultGrid")).ToList()[0];//插入测量结果Grid表格
  139. rmReport1.PreviewOptions.BtnDesignVisible = true;
  140. #region 选择报告模板
  141. 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)
  142. {
  143. rmReport1.LoadFromFile("Resources\\ReportTemplate\\group1.rmf");
  144. }
  145. else
  146. 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)
  147. {
  148. rmReport1.LoadFromFile("Resources\\ReportTemplate\\groupCancelElement.rmf");
  149. }
  150. else
  151. 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)
  152. {
  153. rmReport1.LoadFromFile("Resources\\ReportTemplate\\groupCancelBlank.rmf");
  154. }
  155. else
  156. {
  157. rmReport1.LoadFromFile("Resources\\ReportTemplate\\groupCancelGrain.rmf");
  158. }
  159. #endregion
  160. rmReport1.AddVariable("ZBT", m_mbszclass.M_SY.str_tb_ZBT, true);
  161. rmReport1.AddVariable("FBT", m_mbszclass.M_SY.str_tb_FBT, true);
  162. rmReport1.AddVariable("YPBH", m_mbszclass.M_SY.str_tb_YPBH, true);
  163. rmReport1.AddVariable("KHH", m_mbszclass.M_YMYJ.str_tb_KHH, true);
  164. rmReport1.AddVariable("CKBZ", m_mbszclass.M_SY.str_tb_CKBZ, true);
  165. rmReport1.AddVariable("RM_YM", m_mbszclass.M_YMYJ.str_tb_ymwb, true);
  166. rmReport1.AddVariable("RM_YJ", m_mbszclass.M_YMYJ.str_tb_yjwb, true);
  167. #region 判断是否显示
  168. if (m_mbszclass.M_SYXT.b_ck_syxt_xsmk)//判断三元相图是否显示
  169. {
  170. rmReport1.FindObject("GroupHeader81").Prop["Visible"] = true;
  171. if (m_mbszclass.M_SYXT.str_cb_syxt_mhxssl == "2")
  172. {
  173. DataTable ls_dt_picSYXT = list_dt.Where(aa => aa.TableName.Contains("PicSYXT2T")).ToList()[0];//一排两个三元相图
  174. rmReport1.FindObject("MasterData10").Prop["Visible"] = false;
  175. rmReport1.FindObject("MasterData96").Prop["Visible"] = true;
  176. rmReport1.AddDataSet(ls_dt_picSYXT, "PicSYXT");//三元相图
  177. ls_dt_picSYXT.Dispose();
  178. }
  179. else if (m_mbszclass.M_SYXT.str_cb_syxt_mhxssl == "3")
  180. {
  181. DataTable ls_dt_picSYXT3T = list_dt.Where(aa => aa.TableName.Contains("PicSYXT3T")).ToList()[0];//一排三个三元相图
  182. rmReport1.FindObject("MasterData96").Prop["Visible"] = false;
  183. rmReport1.FindObject("MasterData10").Prop["Visible"] = true;
  184. rmReport1.AddDataSet(ls_dt_picSYXT3T, "PicSYXT3T");
  185. ls_dt_picSYXT3T.Dispose();
  186. //ls_dt_picSYXT3T.Clear();
  187. }
  188. }
  189. else
  190. {
  191. DataTable dataTable = new DataTable();
  192. rmReport1.AddDataSet(dataTable, "PicSYXT2T");//三元相图
  193. rmReport1.AddDataSet(dataTable, "PicSYXT3T");
  194. dataTable.Dispose();
  195. dataTable.Clear();
  196. rmReport1.FindObject("GroupHeader81").Prop["Visible"] = false;
  197. rmReport1.FindObject("MasterData96").Prop["Visible"] = false;
  198. rmReport1.FindObject("MasterData10").Prop["Visible"] = false;
  199. rmReport1.DeletePage(3);
  200. }
  201. if (m_mbszclass.M_SY.b_ck_ypsm)//判断样品说明是否显示
  202. {
  203. rmReport1.AddDataSet(ls_resultgrid, "ResultGrid");
  204. ls_resultgrid.Dispose();
  205. rmReport1.FindObject("MasterData1").Prop["Visible"] = true;
  206. }
  207. else
  208. {
  209. rmReport1.FindObject("MasterData1").Prop["Visible"] = false;
  210. }
  211. if (m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk == false && m_mbszclass.M_KLFXJG.b_cb_jzwfl_xsmk == false)//如果颗粒尺寸分析结果和夹杂物分类图都不显示
  212. {
  213. DataTable dataTable = new DataTable();
  214. rmReport1.AddDataSet(dataTable, "PartSize");
  215. rmReport1.AddDataSet(dataTable, "Particel");
  216. rmReport1.AddDataSet(dataTable, "PicKL");
  217. dataTable.Dispose();
  218. dataTable.Clear();
  219. rmReport1.FindObject("MasterData2").Prop["Visible"] = false;
  220. rmReport1.FindObject("MasterData126").Prop["Visible"] = false;
  221. rmReport1.FindObject("MasterData95").Prop["Visible"] = false;
  222. rmReport1.DeletePage(1);
  223. }
  224. else
  225. {
  226. if (m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk)//判断颗粒尺寸分析结果
  227. {
  228. DataTable ls_dt_PartSize = list_dt.Where(aa => aa.TableName.Contains("PartSize")).ToList()[0];//插入 颗粒尺寸表
  229. DataTable ls_dt_Particel = list_dt.Where(aa => aa.TableName.Contains("Particel")).ToList()[0];
  230. rmReport1.AddDataSet(ls_dt_PartSize, "PartSize");
  231. rmReport1.AddDataSet(ls_dt_Particel, "Particel");
  232. List<string> vs = new List<string>() { "DMAX", "DMIN", "Area", "FERET" };
  233. string str = vs[m_mbszclass.M_KLFXJG.index_cb_klcc_jsfs];
  234. rmReport1.AddVariable("klccfxjg_jsfx", str, true);
  235. ls_dt_PartSize.Dispose();
  236. //ls_dt_PartSize.Clear();
  237. ls_dt_Particel.Dispose();
  238. //ls_dt_Particel.Clear();
  239. rmReport1.FindObject("MasterData2").Prop["Visible"] = true;
  240. rmReport1.FindObject("MasterData126").Prop["Visible"] = true;
  241. }
  242. else
  243. {
  244. DataTable dataTable = new DataTable();
  245. rmReport1.AddDataSet(dataTable, "PartSize");
  246. rmReport1.AddDataSet(dataTable, "Particel");
  247. dataTable.Dispose();
  248. dataTable.Clear();
  249. rmReport1.FindObject("MasterData2").Prop["Visible"] = false;
  250. rmReport1.FindObject("MasterData126").Prop["Visible"] = false;
  251. }
  252. if (m_mbszclass.M_KLFXJG.b_cb_jzwfl_xsmk)//判断夹杂物分类图
  253. {
  254. DataTable ls_dt_picKL = list_dt.Where(aa => aa.TableName.Contains("PicKL")).ToList()[0];// 用于颗粒图chart
  255. rmReport1.AddDataSet(ls_dt_picKL, "PicKL");
  256. ls_dt_picKL.Dispose();
  257. //ls_dt_picKL.Clear();
  258. rmReport1.FindObject("MasterData95").Prop["Visible"] = true;
  259. }
  260. else
  261. {
  262. DataTable dataTable = new DataTable();
  263. rmReport1.AddDataSet(dataTable, "PicKL");
  264. dataTable.Dispose();
  265. dataTable.Clear();
  266. rmReport1.FindObject("MasterData95").Prop["Visible"] = false;
  267. }
  268. }
  269. if (m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk == false && m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk == false)//如果元素分析表和显示元素成分图都不显示
  270. {
  271. //rmReport1.FindObject("MasterData3").Prop["Visible"] = false;
  272. //rmReport1.FindObject("MasterData42").Prop["Visible"] = false;
  273. //rmReport1.FindObject("MasterData91").Prop["Visible"] = false;
  274. //rmReport1.DeletePage(5);
  275. }
  276. else
  277. {
  278. if (m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk)//判断元素分析表是否显示
  279. {
  280. DataTable ls_dt_elementname = list_dt.Where(aa => aa.TableName.Contains("ElementName")).ToList()[0];
  281. DataTable ls_dt_element = list_dt.Where(aa => aa.TableName == "ElementValue").ToList()[0];
  282. rmReport1.AddDataSet(ls_dt_elementname, "ElementName");
  283. rmReport1.AddDataSet(ls_dt_element, "ElementValue");
  284. ls_dt_elementname.Dispose();
  285. //ls_dt_elementname.Clear();
  286. ls_dt_element.Dispose();
  287. //ls_dt_element.Clear();
  288. rmReport1.FindObject("MasterData3").Prop["Visible"] = true;
  289. rmReport1.FindObject("MasterData42").Prop["Visible"] = true;
  290. }
  291. else
  292. {
  293. DataTable dataTable = new DataTable();
  294. rmReport1.AddDataSet(dataTable, "ElementName");
  295. rmReport1.AddDataSet(dataTable, "ElementValue");
  296. dataTable.Dispose();
  297. dataTable.Clear();
  298. rmReport1.FindObject("MasterData3").Prop["Visible"] = false;
  299. rmReport1.FindObject("MasterData42").Prop["Visible"] = false;
  300. }
  301. if (m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk)//判断显示元素成分图
  302. {
  303. DataTable ls_dt_picYS = list_dt.Where(aa => aa.TableName.Contains("PicYS")).ToList()[0];//用于元素图chart
  304. rmReport1.AddDataSet(ls_dt_picYS, "PicYS");
  305. ls_dt_picYS.Dispose();
  306. //ls_dt_picYS.Clear();
  307. rmReport1.FindObject("MasterData91").Prop["Visible"] = true;
  308. }
  309. else
  310. {
  311. DataTable dataTable = new DataTable();
  312. rmReport1.AddDataSet(dataTable, "PicYS");
  313. dataTable.Dispose();
  314. dataTable.Clear();
  315. rmReport1.FindObject("MasterData91").Prop["Visible"] = false;
  316. }
  317. }
  318. if (m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk)//判断显示颗粒列表
  319. {
  320. if (Convert.ToInt32(m_arg4) < 21)
  321. {
  322. DataTable ls_dt_largest = list_dt.Where(aa => aa.TableName.Contains("Largest20")).ToList()[0];
  323. rmReport1.AddDataSet(ls_dt_largest, "Largest20");
  324. ls_dt_largest.Dispose();
  325. //ls_dt_largest.Clear();
  326. }
  327. else
  328. {
  329. DataTable ls_dt_largest = list_dt.Where(aa => aa.TableName.Contains("Largest20")).ToList()[0];
  330. rmReport1.AddDataSet(ls_dt_largest, "Largest20");
  331. ls_dt_largest.Dispose();
  332. //ls_dt_largest.Clear();
  333. DataTable ls_dt_largest2 = list_dt.Where(aa => aa.TableName.Contains("Largest2")).ToList()[0];
  334. rmReport1.AddDataSet(ls_dt_largest2, "Largest2");
  335. ls_dt_largest2.Dispose();
  336. //ls_dt_largest2.Clear();
  337. }
  338. //FlushMemory();
  339. #region 主副表
  340. DataTable ls_dt_frame = list_dt.Where(aa => aa.TableName.Contains("Largest_frame")).ToList()[0].Copy();//副表
  341. DataTable ls_dt_fielddt = list_dt.Where(aa => aa.TableName.Contains("field_dt")).ToList()[0].Copy();//帧图主表
  342. DataSet ds = new DataSet("fieldimgds");
  343. ds.Tables.Add(ls_dt_fielddt);
  344. ds.Tables.Add(ls_dt_frame);
  345. myRela1 = new DataRelation("Rela1", ls_dt_fielddt.Columns["FieldId"], ls_dt_frame.Columns["FieldId"],false);
  346. ds.Relations.Add(myRela1);
  347. rmReport1.AddDataSet(ls_dt_fielddt, "CustomersDS");
  348. rmReport1.AddDetailDataSet(ls_dt_frame, "OrdersDS", "CustomersDS", myRela1);
  349. ls_dt_frame.Dispose();
  350. //ls_dt_frame.Clear();
  351. ls_dt_fielddt.Dispose();
  352. //ls_dt_fielddt.Clear();
  353. #endregion
  354. //FlushMemory();
  355. rmReport1.FindObject("GroupHeader12").Prop["Visible"] = true;
  356. rmReport1.FindObject("MasterData49").Prop["Visible"] = true;
  357. 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)//原图开,放大图关,能谱关
  358. {
  359. rmReport1.FindObject("Memo44").Prop["Visible"] = true;
  360. rmReport1.FindObject("Picture46").Prop["Visible"] = true;
  361. rmReport1.FindObject("Picture69").Prop["Visible"] = false;
  362. rmReport1.FindObject("Picture70").Prop["Visible"] = false;
  363. //最原始的数据
  364. rmReport1.FindObject("Memo44").Prop["Left"] = 0.5;//原图像框
  365. rmReport1.FindObject("Picture46").Prop["Left"] = 0.5;//原图像
  366. rmReport1.FindObject("Picture69").Prop["Left"] = 2.9;//放大图
  367. rmReport1.FindObject("Picture70").Prop["Left"] = 5.3;//能谱
  368. rmReport1.FindObject("Picture70").Prop["Width"] = 13;//能谱长度
  369. }
  370. 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)//原图开,放大图开,能谱关
  371. {
  372. rmReport1.FindObject("Memo44").Prop["Visible"] = true;
  373. rmReport1.FindObject("Picture46").Prop["Visible"] = true;
  374. rmReport1.FindObject("Picture69").Prop["Visible"] = true;
  375. rmReport1.FindObject("Picture70").Prop["Visible"] = false;
  376. rmReport1.FindObject("Memo44").Prop["Left"] = 0.5;//原图像框
  377. rmReport1.FindObject("Picture46").Prop["Left"] = 0.5;//原图像
  378. rmReport1.FindObject("Picture69").Prop["Left"] = 2.9;//放大图
  379. rmReport1.FindObject("Picture70").Prop["Left"] = 5.3;//能谱
  380. rmReport1.FindObject("Picture70").Prop["Width"] = 13;//能谱长度
  381. }
  382. 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)//原图开,放大图开,能谱开
  383. {
  384. rmReport1.FindObject("Memo44").Prop["Visible"] = true;
  385. rmReport1.FindObject("Picture46").Prop["Visible"] = true;
  386. rmReport1.FindObject("Picture69").Prop["Visible"] = true;
  387. rmReport1.FindObject("Picture70").Prop["Visible"] = true;
  388. rmReport1.FindObject("Memo44").Prop["Left"] = 0.5;//原图像框
  389. rmReport1.FindObject("Picture46").Prop["Left"] = 0.5;//原图像
  390. rmReport1.FindObject("Picture69").Prop["Left"] = 2.9;//放大图
  391. rmReport1.FindObject("Picture70").Prop["Left"] = 5.3;//能谱
  392. rmReport1.FindObject("Picture70").Prop["Width"] = 13;//能谱长度
  393. }
  394. 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)//原图开,放大图关,能谱开
  395. {
  396. rmReport1.FindObject("Memo44").Prop["Visible"] = true;
  397. rmReport1.FindObject("Picture46").Prop["Visible"] = true;
  398. rmReport1.FindObject("Picture69").Prop["Visible"] = false;
  399. rmReport1.FindObject("Picture70").Prop["Visible"] = true;
  400. rmReport1.FindObject("Memo44").Prop["Left"] = 0.5;//原图像框
  401. rmReport1.FindObject("Picture46").Prop["Left"] = 0.5;//原图像
  402. rmReport1.FindObject("Picture70").Prop["Left"] = 2.9;
  403. rmReport1.FindObject("Picture70").Prop["Width"] = 15.4;
  404. }
  405. 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)//原图关,放大图开,能谱开
  406. {
  407. rmReport1.FindObject("Memo44").Prop["Visible"] = false;
  408. rmReport1.FindObject("Picture46").Prop["Visible"] = false;
  409. rmReport1.FindObject("Picture69").Prop["Visible"] = true;
  410. rmReport1.FindObject("Picture70").Prop["Visible"] = true;
  411. rmReport1.FindObject("Picture69").Prop["Left"] = 0.5;
  412. rmReport1.FindObject("Picture70").Prop["Left"] = 2.9;
  413. rmReport1.FindObject("Picture70").Prop["Width"] = 15.4;
  414. }
  415. 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)//原图关,放大图关,能谱开
  416. {
  417. rmReport1.FindObject("Memo44").Prop["Visible"] = false;
  418. rmReport1.FindObject("Picture46").Prop["Visible"] = false;
  419. rmReport1.FindObject("Picture69").Prop["Visible"] = false;
  420. rmReport1.FindObject("Picture70").Prop["Visible"] = true;
  421. rmReport1.FindObject("Picture70").Prop["Left"] = 0.5;
  422. rmReport1.FindObject("Picture70").Prop["Width"] = 17.8;
  423. }
  424. 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) //原图关,放大图关,能谱关
  425. {
  426. rmReport1.FindObject("Memo44").Prop["Visible"] = false;
  427. rmReport1.FindObject("Picture46").Prop["Visible"] = false;
  428. rmReport1.FindObject("Picture69").Prop["Visible"] = false;
  429. rmReport1.FindObject("Picture70").Prop["Visible"] = false;
  430. //最原始的数据
  431. rmReport1.FindObject("Memo44").Prop["Left"] = 0.5;//原图像框
  432. rmReport1.FindObject("Picture46").Prop["Left"] = 1.4;//原图像
  433. rmReport1.FindObject("Picture69").Prop["Left"] = 2.9;//放大图
  434. rmReport1.FindObject("Picture70").Prop["Left"] = 5.3;//能谱
  435. rmReport1.FindObject("Picture70").Prop["Width"] = 13;//能谱长度
  436. }
  437. 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)//原图关,放大图开,能谱关
  438. {
  439. rmReport1.FindObject("Memo44").Prop["Visible"] = false;
  440. rmReport1.FindObject("Picture46").Prop["Visible"] = false;
  441. rmReport1.FindObject("Picture69").Prop["Visible"] = true;
  442. rmReport1.FindObject("Picture70").Prop["Visible"] = false;
  443. rmReport1.FindObject("Picture69").Prop["Left"] = 0.5;//放大图
  444. }
  445. }
  446. else
  447. {
  448. //rmReport1.FindObject("GroupHeader12").Prop["Visible"] = false;
  449. //rmReport1.FindObject("MasterData49").Prop["Visible"] = false;
  450. //rmReport1.DeletePage(2);
  451. }
  452. #endregion
  453. rmReport1.ShowReport();
  454. //修复reportmachine的bug,将路径重新定位到当前路径
  455. Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
  456. rmReport1.Dispose();
  457. //回收内存
  458. list_dt.Clear();
  459. }
  460. private void ReportTemplatePrint_GBReport()
  461. {
  462. rmReport1.PreviewOptions.BtnDesignVisible = true;
  463. rmReport1.LoadFromFile("Resources\\ReportTemplate\\GB.rmf");
  464. DataTable ls_dt_GB1_A = list_dt.Where(aa => aa.TableName.Contains("GB1_A")).ToList()[0];
  465. DataTable ls_dt_GB1_B = list_dt.Where(aa => aa.TableName.Contains("GB1_B")).ToList()[0];
  466. DataTable ls_dt_GB1_C = list_dt.Where(aa => aa.TableName.Contains("GB1_C")).ToList()[0];
  467. DataTable ls_dt_GB1_D = list_dt.Where(aa => aa.TableName.Contains("GB1_D")).ToList()[0];
  468. DataTable ls_dt_GB1_DS = list_dt.Where(aa => aa.TableName.Contains("GB1_DS")).ToList()[0];
  469. DataTable ls_dt_GB2_A = list_dt.Where(aa => aa.TableName.Contains("GB2_A")).ToList()[0];
  470. DataTable ls_dt_GB2_B = list_dt.Where(aa => aa.TableName.Contains("GB2_B")).ToList()[0];
  471. DataTable ls_dt_GB2_C = list_dt.Where(aa => aa.TableName.Contains("GB2_C")).ToList()[0];
  472. DataTable ls_dt_GB2_D = list_dt.Where(aa => aa.TableName.Contains("GB2_D")).ToList()[0];
  473. DataTable ls_dt_GB2_D_sulfide = list_dt.Where(aa => aa.TableName.Contains("GB2_D_sulfide")).ToList()[0];
  474. DataTable ls_dt_GB2_DS = list_dt.Where(aa => aa.TableName.Contains("GB2_DS")).ToList()[0];
  475. DataTable ls_resultgrid = list_dt.Where(aa => aa.TableName.Contains("ResultGrid")).ToList()[0];//插入测量结果Grid表格
  476. rmReport1.AddDataSet(ls_dt_GB1_A, "GB1_A");
  477. rmReport1.AddDataSet(ls_dt_GB1_B, "GB1_B");
  478. rmReport1.AddDataSet(ls_dt_GB1_C, "GB1_C");
  479. rmReport1.AddDataSet(ls_dt_GB1_D, "GB1_D");
  480. rmReport1.AddDataSet(ls_dt_GB1_DS, "GB1_DS");
  481. rmReport1.AddDataSet(ls_dt_GB2_A, "GB2_A");
  482. rmReport1.AddDataSet(ls_dt_GB2_B, "GB2_B");
  483. rmReport1.AddDataSet(ls_dt_GB2_C, "GB2_C");
  484. rmReport1.AddDataSet(ls_dt_GB2_D, "GB2_D");
  485. rmReport1.AddDataSet(ls_dt_GB2_D_sulfide, "GB2_D_sulfide");
  486. rmReport1.AddDataSet(ls_dt_GB2_DS, "GB2_DS");
  487. rmReport1.AddDataSet(ls_resultgrid, "ResultGrid");
  488. rmReport1.ShowReport();
  489. //修复reportmachine的bug,将路径重新定位到当前路径
  490. Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
  491. rmReport1.Dispose();
  492. //回收内存
  493. list_dt.Clear();
  494. }
  495. /// <summary>
  496. /// 调用预览查看报表,显示颗粒列表
  497. /// </summary>
  498. private void ReportTemplatePrint_PartilceListReport()
  499. {
  500. DataTable ls_dt_largest = list_dt.Where(aa => aa.TableName.Contains("Largest3")).ToList()[0];
  501. rmReport1.LoadFromFile("Resources\\ReportTemplate\\Largest.rmf");
  502. rmReport1.AddDataSet(ls_dt_largest, "Largest3");
  503. rmReport1.PreviewOptions.BtnDesignVisible = true;
  504. rmReport1.ShowReport();
  505. //修复reportmachine的bug,将路径重新定位到当前路径
  506. Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
  507. rmReport1.Dispose();
  508. }
  509. #endregion
  510. #region 读取XML模板配置文件
  511. ///<summary>
  512. ///读取xml配置文件
  513. /// </summary>
  514. private void LoadControlsToXml()
  515. {
  516. string path = string.Empty;
  517. OpenFileDialog Load = new OpenFileDialog();
  518. Load.Filter = "PXML文件|*.xml";
  519. Load.InitialDirectory = @System.Windows.Forms.Application.StartupPath + "\\Config\\ProData";
  520. if (Load.ShowDialog() == DialogResult.OK)
  521. path = Load.FileName;//赋值目录
  522. if (path != string.Empty)
  523. {
  524. //tb_mblj.Text = path;
  525. m_mbszclass.M_DZ.route = path;
  526. XmlConfigUtil xmlutil = new XmlConfigUtil(path);
  527. //首页
  528. m_mbszclass.M_SY.str_tb_ZBT = xmlutil.Read("M_SY", "str_tb_ZBT");
  529. m_mbszclass.M_SY.str_tb_FBT = xmlutil.Read("M_SY", "str_tb_FBT");
  530. m_mbszclass.M_SY.str_tb_YPBH = xmlutil.Read("M_SY", "str_tb_YPBH");
  531. m_mbszclass.M_SY.str_tb_CKBZ = xmlutil.Read("M_SY", "str_tb_CKBZ");
  532. m_mbszclass.M_SY.b_ck_ypsm = Convert.ToBoolean(xmlutil.Read("M_SY", "b_ck_ypsm"));
  533. m_mbszclass.M_SY.b_ck_jggk = Convert.ToBoolean(xmlutil.Read("M_SY", "b_ck_jggk"));
  534. //页眉页脚
  535. m_mbszclass.M_YMYJ.str_tb_ymwb = xmlutil.Read("M_YMYJ", "str_tb_ymwb");
  536. m_mbszclass.M_YMYJ.str_tb_KHH = xmlutil.Read("M_YMYJ", "str_tb_KHH");
  537. m_mbszclass.M_YMYJ.b_ck_ym = Convert.ToBoolean(xmlutil.Read("M_YMYJ", "b_ck_ym"));
  538. m_mbszclass.M_YMYJ.str_tb_yjwb = xmlutil.Read("M_YMYJ", "str_tb_yjwb");
  539. MessageBox.Show(m_mbszclass.M_YMYJ.str_tb_ymwb+"!!"+m_mbszclass.M_YMYJ.str_tb_KHH+"!!"+m_mbszclass.M_YMYJ.str_tb_yjwb);
  540. //颗粒分析结果
  541. m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk = Convert.ToBoolean(xmlutil.Read("M_KLFXJG", "b_ck_klcc_xsmk"));//是否显示模块
  542. m_mbszclass.M_KLFXJG.index_cb_klcc_jsfs = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_klcc_jsfs"));//计算方式
  543. m_mbszclass.M_KLFXJG.index_cb_klcc_ljb = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_klcc_ljb"));//粒级表
  544. m_mbszclass.M_KLFXJG.index_cb_klcc_klfw = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_klcc_klfw"));//颗粒范围
  545. m_mbszclass.M_KLFXJG.b_cb_jzwfl_xsmk = Convert.ToBoolean(xmlutil.Read("M_KLFXJG", "b_cb_jzwfl_xsmk"));//是否显示该模块
  546. m_mbszclass.M_KLFXJG.index_cb_jzwfl_xstx = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_jzwfl_xstx"));//选择图像
  547. m_mbszclass.M_KLFXJG.index_cb_jzwfl_jsfs = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_jzwfl_jsfs"));//计算方式
  548. m_mbszclass.M_KLFXJG.index_cb_jzwfl_ljb = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_jzwfl_ljb"));//粒级表
  549. m_mbszclass.M_KLFXJG.index_cb_jzwfl_klfw = Convert.ToInt32(xmlutil.Read("M_KLFXJG", "index_cb_jzwfl_klfw"));//颗粒范围
  550. //元素分析结果
  551. m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk = Convert.ToBoolean(xmlutil.Read("M_YSFXJG", "b_ck_ysfx_xsmk")); //是否显示模块
  552. m_mbszclass.M_YSFXJG.index_cb_yxfx_jsfs = Convert.ToInt32(xmlutil.Read("M_YSFXJG", "index_cb_yxfx_jsfs")); //计算方式
  553. m_mbszclass.M_YSFXJG.index_cb_ysfx_klfw = Convert.ToInt32(xmlutil.Read("M_YSFXJG", "index_cb_ysfx_klfw")); //颗粒范围
  554. m_mbszclass.M_YSFXJG.str_tb_ysfx_xsys = xmlutil.Read("M_YSFXJG", "str_tb_ysfx_xsys"); //显示元素
  555. m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Clear();
  556. for (int i = 0; i < 100; i++) //取得所有元素列表
  557. {
  558. string str = xmlutil.Read("M_YSFXJG", "list_str_tb_ysfx_xsys", "YS" + i.ToString());
  559. if (str == null)
  560. {
  561. break;
  562. }
  563. else
  564. {
  565. m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Add(str);
  566. }
  567. }
  568. m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk = Convert.ToBoolean(xmlutil.Read("M_YSFXJG", "b_ck_yscf_xsmk")); //是否显示模块
  569. m_mbszclass.M_YSFXJG.index_cb_yscf_xstx = Convert.ToInt32(xmlutil.Read("M_YSFXJG", "index_cb_yscf_xstx")); //显示图形
  570. m_mbszclass.M_YSFXJG.index_cb_yscf_jsfs = Convert.ToInt32(xmlutil.Read("M_YSFXJG", "index_cb_yscf_jsfs")); //计算方式
  571. m_mbszclass.M_YSFXJG.index_cb_yscf_klfw = Convert.ToInt32(xmlutil.Read("M_YSFXJG", "index_cb_yscf_klfw")); //颗粒范围
  572. m_mbszclass.M_YSFXJG.str_tb_yscf_ysxx = xmlutil.Read("M_YSFXJG", "str_tb_yscf_ysxx"); //显示元素
  573. m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx.Clear();
  574. for (int i = 0; i < 100; i++) //取得所有元素列表
  575. {
  576. string str = xmlutil.Read("M_YSFXJG", "list_str_tb_yscf_ysxx", "YS" + i.ToString());
  577. if (str == null)
  578. {
  579. break;
  580. }
  581. else
  582. {
  583. m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx.Add(str);
  584. }
  585. }
  586. //三元相图
  587. m_mbszclass.M_SYXT.b_ck_syxt_xsmk = Convert.ToBoolean(xmlutil.Read("M_SYXT", "b_ck_syxt_xsmk")); //是否显示模块
  588. m_mbszclass.M_SYXT.index_cb_syxt_jsfs = Convert.ToInt32(xmlutil.Read("M_SYXT", "index_cb_syxt_jsfs")); //计算方式
  589. m_mbszclass.M_SYXT.index_cb_syxt_klfw = Convert.ToInt32(xmlutil.Read("M_SYXT", "index_cb_syxt_klfw")); //颗粒范围
  590. m_mbszclass.M_SYXT.str_cb_syxt_mhxssl = xmlutil.Read("M_SYXT", "str_cb_syxt_mhxssl"); //每行显示数量
  591. m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Clear();
  592. for (int i = 0; i < 100; i++) //取得所有模板列表
  593. {
  594. string str = xmlutil.Read("M_SYXT", "list_lbv_syxt_mblb", "MB" + i.ToString());
  595. if (str == null)
  596. {
  597. break;
  598. }
  599. else
  600. {
  601. m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Add(str);
  602. }
  603. }
  604. m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Clear();
  605. for (int i = 0; i < 100; i++) //取得所有模板列表 索引
  606. {
  607. string str = xmlutil.Read("M_SYXT", "list_lbv_syxt_mblb_index", "MBIndex" + i.ToString());
  608. if (str == null)
  609. {
  610. break;
  611. }
  612. else
  613. {
  614. m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Add(Convert.ToInt32(str));
  615. }
  616. }
  617. //颗粒列表信息
  618. m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk = Convert.ToBoolean(xmlutil.Read("M_KLLBXX", "b_ck_kllb_xsmk")); //是否显示模块
  619. m_mbszclass.M_KLLBXX.index_cb_kllb_jsfs = Convert.ToInt32(xmlutil.Read("M_KLLBXX", "index_cb_kllb_jsfs")); //计算方式
  620. m_mbszclass.M_KLLBXX.index_cb_kllb_klfw = Convert.ToInt32(xmlutil.Read("M_KLLBXX", "index_cb_kllb_klfw")); //颗粒范围
  621. m_mbszclass.M_KLLBXX.int_tb_kllb_ylsx = Convert.ToInt32(xmlutil.Read("M_KLLBXX", "int_tb_kllb_ylsx")); //数量上限
  622. m_mbszclass.M_KLLBXX.str_tb_kllb_sxys = xmlutil.Read("M_KLLBXX", "str_tb_kllb_sxys"); //显示元素
  623. m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys.Clear();
  624. for (int i = 0; i < 100; i++) //取得所有元素列表
  625. {
  626. string str = xmlutil.Read("M_KLLBXX", "list_str_tb_lllb_sxys", "YS" + i.ToString());
  627. if (str == null)
  628. {
  629. break;
  630. }
  631. else
  632. {
  633. m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys.Add(str);
  634. }
  635. }
  636. m_mbszclass.M_KLLBXX.b_ck_kllb_ystx = Convert.ToBoolean(xmlutil.Read("M_KLLBXX", "b_ck_kllb_ystx")); //原始图像
  637. m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx = Convert.ToBoolean(xmlutil.Read("M_KLLBXX", "b_ck_kllb_fdtx")); //放大图像
  638. m_mbszclass.M_KLLBXX.b_ck_kllb_npxx = Convert.ToBoolean(xmlutil.Read("M_KLLBXX", "b_ck_kllb_npxx")); //能谱图像
  639. }
  640. }
  641. ///<summary>
  642. ///从配置文件中读取报告模板信息
  643. /// </summary>
  644. private void LoadRouteclass()
  645. {
  646. string strPath2 = "";
  647. if (m_mbszclass.M_DZ.route == null)
  648. {
  649. //strPath2 = strPath;
  650. m_mbszclass.M_DZ.route = m_arg2;
  651. }
  652. else
  653. if (m_mbszclass.M_DZ.route == "")
  654. {
  655. //strPath2 = strPath;
  656. m_mbszclass.M_DZ.route = m_arg2;
  657. }
  658. else
  659. {
  660. strPath2 = m_mbszclass.M_DZ.route;
  661. }
  662. xmlutil2 = new XmlConfigUtil(strPath2);
  663. //首页
  664. m_mbszclass.M_SY.str_tb_ZBT = xmlutil2.Read("M_SY", "str_tb_ZBT");
  665. m_mbszclass.M_SY.str_tb_FBT = xmlutil2.Read("M_SY", "str_tb_FBT");
  666. m_mbszclass.M_SY.str_tb_YPBH = xmlutil2.Read("M_SY", "str_tb_YPBH");
  667. m_mbszclass.M_SY.str_tb_CKBZ = xmlutil2.Read("M_SY", "str_tb_CKBZ");
  668. m_mbszclass.M_SY.b_ck_ypsm = Convert.ToBoolean(xmlutil2.Read("M_SY", "b_ck_ypsm"));
  669. m_mbszclass.M_SY.b_ck_jggk = Convert.ToBoolean(xmlutil2.Read("M_SY", "b_ck_jggk"));
  670. //页眉页脚
  671. m_mbszclass.M_YMYJ.str_tb_ymwb = xmlutil2.Read("M_YMYJ", "str_tb_ymwb");
  672. m_mbszclass.M_YMYJ.str_tb_KHH = xmlutil2.Read("M_YMYJ", "str_tb_KHH");
  673. m_mbszclass.M_YMYJ.b_ck_ym = Convert.ToBoolean(xmlutil2.Read("M_YMYJ", "b_ck_ym"));
  674. m_mbszclass.M_YMYJ.str_tb_yjwb = xmlutil2.Read("M_YMYJ", "str_tb_yjwb");
  675. //颗粒分析结果
  676. m_mbszclass.M_KLFXJG.b_ck_klcc_xsmk = Convert.ToBoolean(xmlutil2.Read("M_KLFXJG", "b_ck_klcc_xsmk"));//是否显示模块
  677. m_mbszclass.M_KLFXJG.index_cb_klcc_jsfs = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_klcc_jsfs"));//计算方式
  678. m_mbszclass.M_KLFXJG.index_cb_klcc_ljb = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_klcc_ljb"));//粒级表
  679. m_mbszclass.M_KLFXJG.index_cb_klcc_klfw = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_klcc_klfw"));//颗粒范围
  680. m_mbszclass.M_KLFXJG.b_cb_jzwfl_xsmk = Convert.ToBoolean(xmlutil2.Read("M_KLFXJG", "b_cb_jzwfl_xsmk"));//是否显示该模块
  681. m_mbszclass.M_KLFXJG.index_cb_jzwfl_xstx = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_jzwfl_xstx"));//选择图像
  682. m_mbszclass.M_KLFXJG.index_cb_jzwfl_jsfs = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_jzwfl_jsfs"));//计算方式
  683. m_mbszclass.M_KLFXJG.index_cb_jzwfl_ljb = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_jzwfl_ljb"));//粒级表
  684. m_mbszclass.M_KLFXJG.index_cb_jzwfl_klfw = Convert.ToInt32(xmlutil2.Read("M_KLFXJG", "index_cb_jzwfl_klfw"));//颗粒范围
  685. //元素分析结果
  686. m_mbszclass.M_YSFXJG.b_ck_ysfx_xsmk = Convert.ToBoolean(xmlutil2.Read("M_YSFXJG", "b_ck_ysfx_xsmk")); //是否显示模块
  687. m_mbszclass.M_YSFXJG.index_cb_yxfx_jsfs = Convert.ToInt32(xmlutil2.Read("M_YSFXJG", "index_cb_yxfx_jsfs")); //计算方式
  688. m_mbszclass.M_YSFXJG.index_cb_ysfx_klfw = Convert.ToInt32(xmlutil2.Read("M_YSFXJG", "index_cb_ysfx_klfw")); //颗粒范围
  689. m_mbszclass.M_YSFXJG.str_tb_ysfx_xsys = xmlutil2.Read("M_YSFXJG", "str_tb_ysfx_xsys"); //显示元素
  690. m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Clear();
  691. for (int i = 0; i < 100; i++) //取得所有元素列表
  692. {
  693. string str = xmlutil2.Read("M_YSFXJG", "list_str_tb_ysfx_xsys", "YS" + i.ToString());
  694. if (str == null)
  695. {
  696. break;
  697. }
  698. else
  699. {
  700. m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Add(str);
  701. }
  702. }
  703. m_mbszclass.M_YSFXJG.b_ck_yscf_xsmk = Convert.ToBoolean(xmlutil2.Read("M_YSFXJG", "b_ck_yscf_xsmk")); //是否显示模块
  704. m_mbszclass.M_YSFXJG.index_cb_yscf_xstx = Convert.ToInt32(xmlutil2.Read("M_YSFXJG", "index_cb_yscf_xstx")); //显示图形
  705. m_mbszclass.M_YSFXJG.index_cb_yscf_jsfs = Convert.ToInt32(xmlutil2.Read("M_YSFXJG", "index_cb_yscf_jsfs")); //计算方式
  706. m_mbszclass.M_YSFXJG.index_cb_yscf_klfw = Convert.ToInt32(xmlutil2.Read("M_YSFXJG", "index_cb_yscf_klfw")); //颗粒范围
  707. m_mbszclass.M_YSFXJG.str_tb_yscf_ysxx = xmlutil2.Read("M_YSFXJG", "str_tb_yscf_ysxx"); //显示元素
  708. m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx.Clear();
  709. for (int i = 0; i < 100; i++) //取得所有元素列表
  710. {
  711. string str = xmlutil2.Read("M_YSFXJG", "list_str_tb_yscf_ysxx", "YS" + i.ToString());
  712. if (str == null)
  713. {
  714. break;
  715. }
  716. else
  717. {
  718. m_mbszclass.M_YSFXJG.list_str_tb_yscf_ysxx.Add(str);
  719. }
  720. }
  721. //三元相图
  722. m_mbszclass.M_SYXT.b_ck_syxt_xsmk = Convert.ToBoolean(xmlutil2.Read("M_SYXT", "b_ck_syxt_xsmk")); //是否显示模块
  723. m_mbszclass.M_SYXT.index_cb_syxt_jsfs = Convert.ToInt32(xmlutil2.Read("M_SYXT", "index_cb_syxt_jsfs")); //计算方式
  724. m_mbszclass.M_SYXT.index_cb_syxt_klfw = Convert.ToInt32(xmlutil2.Read("M_SYXT", "index_cb_syxt_klfw")); //颗粒范围
  725. m_mbszclass.M_SYXT.str_cb_syxt_mhxssl = xmlutil2.Read("M_SYXT", "str_cb_syxt_mhxssl"); //每行显示数量
  726. m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Clear();
  727. for (int i = 0; i < 100; i++) //取得所有模板列表
  728. {
  729. string str = xmlutil2.Read("M_SYXT", "list_lbv_syxt_mblb", "MB" + i.ToString());
  730. if (str == null)
  731. {
  732. break;
  733. }
  734. else
  735. {
  736. m_mbszclass.M_SYXT.list_lbv_syxt_mblb.Add(str);
  737. }
  738. }
  739. m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Clear();
  740. for (int i = 0; i < 100; i++) //取得所有模板列表 索引
  741. {
  742. string str = xmlutil2.Read("M_SYXT", "list_lbv_syxt_mblb_index", "MBIndex" + i.ToString());
  743. if (str == null)
  744. {
  745. break;
  746. }
  747. else
  748. {
  749. m_mbszclass.M_SYXT.list_lbv_syxt_mblb_index.Add(Convert.ToInt32(str));
  750. }
  751. }
  752. //颗粒列表信息
  753. m_mbszclass.M_KLLBXX.b_ck_kllb_xsmk = Convert.ToBoolean(xmlutil2.Read("M_KLLBXX", "b_ck_kllb_xsmk")); //是否显示模块
  754. m_mbszclass.M_KLLBXX.index_cb_kllb_jsfs = Convert.ToInt32(xmlutil2.Read("M_KLLBXX", "index_cb_kllb_jsfs")); //计算方式
  755. m_mbszclass.M_KLLBXX.index_cb_kllb_klfw = Convert.ToInt32(xmlutil2.Read("M_KLLBXX", "index_cb_kllb_klfw")); //颗粒范围
  756. m_mbszclass.M_KLLBXX.int_tb_kllb_ylsx = Convert.ToInt32(xmlutil2.Read("M_KLLBXX", "int_tb_kllb_ylsx")); //数量上限
  757. m_mbszclass.M_KLLBXX.str_tb_kllb_sxys = xmlutil2.Read("M_KLLBXX", "str_tb_kllb_sxys"); //显示元素
  758. m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys.Clear();
  759. for (int i = 0; i < 100; i++) //取得所有元素列表
  760. {
  761. string str = xmlutil2.Read("M_KLLBXX", "list_str_tb_lllb_sxys", "YS" + i.ToString());
  762. if (str == null)
  763. {
  764. break;
  765. }
  766. else
  767. {
  768. m_mbszclass.M_KLLBXX.list_str_tb_lllb_sxys.Add(str);
  769. }
  770. }
  771. m_mbszclass.M_KLLBXX.b_ck_kllb_ystx = Convert.ToBoolean(xmlutil2.Read("M_KLLBXX", "b_ck_kllb_ystx")); //原始图像
  772. m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx = Convert.ToBoolean(xmlutil2.Read("M_KLLBXX", "b_ck_kllb_fdtx")); //放大图像
  773. m_mbszclass.M_KLLBXX.b_ck_kllb_npxx = Convert.ToBoolean(xmlutil2.Read("M_KLLBXX", "b_ck_kllb_npxx")); //能谱图像
  774. }
  775. /// <summary>
  776. /// 从配置文件中读取报告模板路径
  777. /// </summary>
  778. private void LoadMBSZClass()
  779. {
  780. //文件路径
  781. m_mbszclass.M_DZ.route = xmlutil.Read("M_address", "Path");
  782. if (m_mbszclass.M_DZ.route == "")
  783. {
  784. //tb_mblj.Text = strPath;
  785. m_mbszclass.M_DZ.route = m_arg2;
  786. }
  787. else
  788. if (File.Exists(m_mbszclass.M_DZ.route))
  789. {
  790. //tb_mblj.Text = m_mbszclass.M_DZ.route;
  791. }
  792. else
  793. {
  794. //tb_mblj.Text = strPath;
  795. m_mbszclass.M_DZ.route = m_arg2;
  796. }
  797. }
  798. #endregion
  799. #region 读取DB数据库文件
  800. /// <summary>
  801. /// 读取DB数据库文件,主报表部份
  802. /// </summary>
  803. private void LoadReportTemplateDBFile()
  804. {
  805. string strpath = m_arg1;//db数据库路径
  806. SqLiteHelper sh = new SqLiteHelper("data source='" + strpath + "'");
  807. list_dt.Clear();
  808. DataTable ls_ResultGrid = sh.ExecuteQuery("select * from ResultGrid");
  809. ls_ResultGrid.TableName = "ResultGrid";
  810. list_dt.Add(ls_ResultGrid);
  811. string strmix = m_arg5.Substring(0, m_arg5.IndexOf("-"));
  812. string strmax = m_arg5.Substring(m_arg5.IndexOf("-") + 1, m_arg5.Length - m_arg5.IndexOf("-") - 1);
  813. DataTable ls_Largest_frame = sh.ExecuteQuery("select * from Largest_frame where cast(fieldid as int) > " + strmix + " and cast(fieldid as int) < " + strmax + " ");
  814. ls_Largest_frame.TableName = "Largest_frame";
  815. list_dt.Add(ls_Largest_frame);
  816. DataTable ls_Largest20 = sh.ExecuteQuery("select * from Largest20");
  817. ls_Largest20.TableName = "Largest20";
  818. list_dt.Add(ls_Largest20);
  819. //DataTable ls_Largest2new = sh.ExecuteQuery("select * from Largest2new");
  820. //ls_Largest2new.TableName = "Largest2new";
  821. //list_dt.Add(ls_Largest2new);
  822. DataTable ls_field_dt = sh.ExecuteQuery("select * from field_dt where cast(fieldid as int) > " + strmix + " and cast(fieldid as int) < " + strmax + " ");
  823. ls_field_dt.TableName = "field_dt";
  824. list_dt.Add(ls_field_dt);
  825. DataTable ls_ElementName = sh.ExecuteQuery("select * from ElementName");
  826. ls_ElementName.TableName = "ElementName";
  827. list_dt.Add(ls_ElementName);
  828. DataTable ls_ElementValue = sh.ExecuteQuery("select * from ElementValue");
  829. ls_ElementValue.TableName = "ElementValue";
  830. list_dt.Add(ls_ElementValue);
  831. DataTable ls_PartSize = sh.ExecuteQuery("select * from PartSize");
  832. ls_PartSize.TableName = "PartSize";
  833. list_dt.Add(ls_PartSize);
  834. DataTable ls_Particel = sh.ExecuteQuery("select * from Particel");
  835. ls_Particel.TableName = "Particel";
  836. list_dt.Add(ls_Particel);
  837. DataTable ls_PicKL = sh.ExecuteQuery("select * from PicKL");
  838. ls_PicKL.TableName = "PicKL";
  839. list_dt.Add(ls_PicKL);
  840. DataTable ls_PicYS = sh.ExecuteQuery("select * from PicYS");
  841. ls_PicYS.TableName = "PicYS";
  842. list_dt.Add(ls_PicYS);
  843. DataTable ls_PicSYXT2T = sh.ExecuteQuery("select * from PicSYXT2T");
  844. ls_PicSYXT2T.TableName = "PicSYXT2T";
  845. list_dt.Add(ls_PicSYXT2T);
  846. DataTable ls_PicSYXT3T = sh.ExecuteQuery("select * from PicSYXT3T");
  847. ls_PicSYXT3T.TableName = "PicSYXT3T";
  848. list_dt.Add(ls_PicSYXT3T);
  849. }
  850. /// <summary>
  851. /// 读取DB数据库文件,颗粒列表部份
  852. /// </summary>
  853. private void LoadReportTemplateDBFile_ParticleList()
  854. {
  855. string strpath = m_arg1;//db数据库路径
  856. SqLiteHelper sh = new SqLiteHelper("data source='" + strpath + "'");
  857. list_dt.Clear();
  858. string strmix = m_arg4.Substring(0, m_arg4.IndexOf("-"));
  859. string strmax = m_arg4.Substring(m_arg4.IndexOf("-") + 1, m_arg4.Length - m_arg4.IndexOf("-") - 1);
  860. DataTable ls_Largest3 = sh.ExecuteQuery("select * from largest3 where cast(pid as int) > " + strmix + " and cast(pid as int) < " + strmax + " ");
  861. ls_Largest3.TableName = "Largest3";
  862. list_dt.Add(ls_Largest3);
  863. }
  864. /// <summary>
  865. /// 读取DB数据库文件,国标部分
  866. /// </summary>
  867. private void LoadReportGBDBFile()
  868. {
  869. string strpath = m_arg1;//db数据库路径
  870. SqLiteHelper sh = new SqLiteHelper("data source='" + strpath + "'");
  871. list_dt.Clear();
  872. DataTable ls_ResultGrid = sh.ExecuteQuery("select * from ResultGrid");
  873. ls_ResultGrid.TableName = "ResultGrid";
  874. list_dt.Add(ls_ResultGrid);
  875. DataTable ls_GB1_A = sh.ExecuteQuery("select * from GB1_A");
  876. ls_GB1_A.TableName = "GB1_A";
  877. list_dt.Add(ls_GB1_A);
  878. DataTable ls_GB1_B = sh.ExecuteQuery("select * from GB1_B");
  879. ls_GB1_B.TableName = "GB1_B";
  880. list_dt.Add(ls_GB1_B);
  881. DataTable ls_GB1_C = sh.ExecuteQuery("select * from GB1_C");
  882. ls_GB1_C.TableName = "GB1_C";
  883. list_dt.Add(ls_GB1_C);
  884. DataTable ls_GB1_D = sh.ExecuteQuery("select * from GB1_D");
  885. ls_GB1_D.TableName = "GB1_D";
  886. list_dt.Add(ls_GB1_D);
  887. DataTable ls_GB1_DS = sh.ExecuteQuery("select * from GB1_DS");
  888. ls_GB1_DS.TableName = "GB1_DS";
  889. list_dt.Add(ls_GB1_DS);
  890. DataTable ls_GB2_A = sh.ExecuteQuery("select * from GB2_A");
  891. ls_GB2_A.TableName = "GB2_A";
  892. list_dt.Add(ls_GB2_A);
  893. DataTable ls_GB2_B = sh.ExecuteQuery("select * from GB2_B");
  894. ls_GB2_B.TableName = "GB2_B";
  895. list_dt.Add(ls_GB2_B);
  896. DataTable ls_GB2_C = sh.ExecuteQuery("select * from GB2_C");
  897. ls_GB2_C.TableName = "GB2_C";
  898. list_dt.Add(ls_GB2_C);
  899. DataTable ls_GB2_D = sh.ExecuteQuery("select * from GB2_D");
  900. ls_GB2_D.TableName = "GB2_D";
  901. list_dt.Add(ls_GB2_D);
  902. DataTable ls_GB2_D_sulfide = sh.ExecuteQuery("select * from GB2_D_sulfide");
  903. ls_GB2_D_sulfide.TableName = "GB2_D_sulfide";
  904. list_dt.Add(ls_GB2_D_sulfide);
  905. DataTable ls_GB2_DS = sh.ExecuteQuery("select * from GB2_DS");
  906. ls_GB2_DS.TableName = "GB2_DS";
  907. list_dt.Add(ls_GB2_DS);
  908. }
  909. #endregion
  910. #region 回收内存
  911. /// <summary>
  912. /// 回收内存
  913. /// </summary>
  914. public void FlushMemory()
  915. {
  916. //回收内存
  917. MemoryManagement mm = new MemoryManagement();
  918. mm.FlushMemory();
  919. }
  920. public class MemoryManagement
  921. {
  922. [System.Runtime.InteropServices.DllImport("kernel32.dll")]
  923. public static extern bool SetProcessWorkingSetSize(IntPtr proc, int min, int max);
  924. public void FlushMemory()
  925. {
  926. GC.Collect();
  927. GC.WaitForPendingFinalizers();
  928. if (Environment.OSVersion.Platform == PlatformID.Win32NT)
  929. { SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1); }
  930. }
  931. }
  932. [System.Runtime.InteropServices.DllImport("coredll.dll")]
  933. [return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]
  934. public static extern bool DeleteObject(IntPtr hgdiobj);
  935. private void timer1_Tick(object sender, EventArgs e)
  936. {
  937. FlushMemory();
  938. }
  939. #endregion
  940. }
  941. #region 模板设置类
  942. /// <summary>
  943. /// 模板设置类
  944. /// </summary>
  945. public class MBSZClass
  946. {
  947. //#region 文件路径
  948. public DZ M_DZ { get; set; }
  949. //#endregion
  950. #region 属性
  951. /// <summary>
  952. /// 首页
  953. /// </summary>
  954. public SY M_SY { get; set; }
  955. /// <summary>
  956. /// 页眉页脚
  957. /// </summary>
  958. public YMYJ M_YMYJ { get; set; }
  959. /// <summary>
  960. /// 颗粒分析结果
  961. /// </summary>
  962. public KLFXJG M_KLFXJG { get; set; }
  963. /// <summary>
  964. /// 元素分析结果
  965. /// </summary>
  966. public YSFXJG M_YSFXJG { get; set; }
  967. /// <summary>
  968. /// 三元相图
  969. /// </summary>
  970. public SYXT M_SYXT { get; set; }
  971. /// <summary>
  972. /// 颗粒列表信息
  973. /// </summary>
  974. public KLLBXX M_KLLBXX { get; set; }
  975. #endregion
  976. #region 构造函数
  977. public MBSZClass()
  978. {
  979. M_SY = new SY();
  980. M_YMYJ = new YMYJ();
  981. M_KLFXJG = new KLFXJG();
  982. M_YSFXJG = new YSFXJG();
  983. M_YSFXJG.list_str_tb_yscf_ysxx = new List<string>();
  984. M_YSFXJG.list_str_tb_ysfx_xsys = new List<string>();
  985. M_SYXT = new SYXT();
  986. M_SYXT.list_lbv_syxt_mblb = new List<string>();
  987. M_SYXT.list_lbv_syxt_mblb_index = new List<int>();
  988. M_KLLBXX = new KLLBXX();
  989. M_KLLBXX.list_str_tb_lllb_sxys = new List<string>();
  990. M_DZ = new DZ();
  991. }
  992. #endregion
  993. public class DZ
  994. {
  995. public string route { get; set; }
  996. }
  997. #region 首页部份
  998. public class SY
  999. {
  1000. /// <summary>
  1001. /// 主标题
  1002. /// </summary>
  1003. public string str_tb_ZBT { get; set; }
  1004. /// <summary>
  1005. /// 副标题
  1006. /// </summary>
  1007. public string str_tb_FBT { get; set; }
  1008. /// <summary>
  1009. /// 样品编号
  1010. /// </summary>
  1011. public string str_tb_YPBH { get; set; }
  1012. /// <summary>
  1013. /// 参考标准
  1014. /// </summary>
  1015. public string str_tb_CKBZ { get; set; }
  1016. /// <summary>
  1017. /// 是否显示样品说明
  1018. /// </summary>
  1019. public bool b_ck_ypsm { get; set; }
  1020. /// <summary>
  1021. /// 是否显示结果概况
  1022. /// </summary>
  1023. public bool b_ck_jggk { get; set; }
  1024. }
  1025. #endregion
  1026. #region 页眉页脚部份
  1027. public class YMYJ
  1028. {
  1029. /// <summary>
  1030. /// 页眉文本
  1031. /// </summary>
  1032. public string str_tb_ymwb { get; set; }
  1033. /// <summary>
  1034. /// 客户号
  1035. /// </summary>
  1036. public string str_tb_KHH { get; set; }
  1037. /// <summary>
  1038. /// 是否显示页码
  1039. /// </summary>
  1040. public bool b_ck_ym { get; set; }
  1041. /// <summary>
  1042. /// 页脚文本
  1043. /// </summary>
  1044. public string str_tb_yjwb { get; set; }
  1045. }
  1046. #endregion
  1047. #region 颗粒分析结果部份
  1048. public class KLFXJG
  1049. {
  1050. /// <summary>
  1051. /// 是否显示颗粒尺寸分析结果表
  1052. /// </summary>
  1053. public bool b_ck_klcc_xsmk { get; set; }
  1054. /// <summary>
  1055. ///颗粒尺寸分析结果表 计算方式文本
  1056. /// </summary>
  1057. public string str_cb_klcc_jsfs { get; set; }
  1058. /// <summary>
  1059. ///颗粒尺寸分析结果表 计算方式索引
  1060. /// </summary>
  1061. public int index_cb_klcc_jsfs { get; set; }
  1062. /// <summary>
  1063. ///颗粒尺寸分析结果表 粒级表文本
  1064. /// </summary>
  1065. public string str_cb_klcc_ljb { get; set; }
  1066. /// <summary>
  1067. ///颗粒尺寸分析结果表 粒级表索引
  1068. /// </summary>
  1069. public int index_cb_klcc_ljb { get; set; }
  1070. /// <summary>
  1071. ///颗粒尺寸分析结果表 颗粒选择范围文本
  1072. /// </summary>
  1073. public string str_cb_klcc_klfw { get; set; }
  1074. /// <summary>
  1075. ///颗粒尺寸分析结果表 颗粒选择范围索引
  1076. /// </summary>
  1077. public int index_cb_klcc_klfw { get; set; }
  1078. /// <summary>
  1079. /// 夹杂物分类图 是否显示该模块
  1080. /// </summary>
  1081. public bool b_cb_jzwfl_xsmk { get; set; }
  1082. /// <summary>
  1083. ///夹杂物分类图 显示图形选择文本
  1084. /// </summary>
  1085. public string str_cb_jzwfl_xstx { get; set; }
  1086. /// <summary>
  1087. ///夹杂物分类图 显示图形 选择索引
  1088. /// </summary>
  1089. public int index_cb_jzwfl_xstx { get; set; }
  1090. /// <summary>
  1091. ///夹杂物分类图 计算方式 选择文本
  1092. /// </summary>
  1093. public string str_cb_jzwfl_jsfs { get; set; }
  1094. /// <summary>
  1095. ///夹杂物分类图 计算方式 选择索引
  1096. /// </summary>
  1097. public int index_cb_jzwfl_jsfs { get; set; }
  1098. /// <summary>
  1099. ///夹杂物分类图 粒级表 选择文本
  1100. /// </summary>
  1101. public string str_cb_jzwfl_ljb { get; set; }
  1102. /// <summary>
  1103. ///夹杂物分类图 粒级表 选择索引
  1104. /// </summary>
  1105. public int index_cb_jzwfl_ljb { get; set; }
  1106. /// <summary>
  1107. ///夹杂物分类图 颗粒范围 选择文本
  1108. /// </summary>
  1109. public string str_cb_jzwfl_klfw { get; set; }
  1110. /// <summary>
  1111. ///夹杂物分类图 颗粒范围 选择索引
  1112. /// </summary>
  1113. public int index_cb_jzwfl_klfw { get; set; }
  1114. }
  1115. #endregion
  1116. #region 元素分析结果部份
  1117. public class YSFXJG
  1118. {
  1119. /// <summary>
  1120. /// 元素分析表 是否显示该模块
  1121. /// </summary>
  1122. public bool b_ck_ysfx_xsmk { get; set; }
  1123. /// <summary>
  1124. /// 元素分析表 计算方式 选择文本
  1125. /// </summary>
  1126. public string str_cb_yxfx_jsfs { get; set; }
  1127. /// <summary>
  1128. /// 元素分析表 计算方式 选择索引
  1129. /// </summary>
  1130. public int index_cb_yxfx_jsfs { get; set; }
  1131. /// <summary>
  1132. /// 元素分析表 颗粒范围 选择文本
  1133. /// </summary>
  1134. public string str_cb_ysfx_klfw { get; set; }
  1135. /// <summary>
  1136. /// 元素分析表 颗粒范围 选择索引
  1137. /// </summary>
  1138. public int index_cb_ysfx_klfw { get; set; }
  1139. /// <summary>
  1140. /// 元素分析表 显示元素显示文本
  1141. /// </summary>
  1142. public string str_tb_ysfx_xsys { get; set; }
  1143. /// <summary>
  1144. /// 元素分析表 显示元素拆分元素列表
  1145. /// </summary>
  1146. public List<string> list_str_tb_ysfx_xsys { get; set; }
  1147. /// <summary>
  1148. /// 元素成份图 是否显示该模块
  1149. /// </summary>
  1150. public bool b_ck_yscf_xsmk { get; set; }
  1151. /// <summary>
  1152. /// 元素成份图 显示图形 文本
  1153. /// </summary>
  1154. public string str_cb_yscf_xstx { get; set; }
  1155. /// <summary>
  1156. /// 元素成份图 显示图形 索引
  1157. /// </summary>
  1158. public int index_cb_yscf_xstx { get; set; }
  1159. /// <summary>
  1160. /// 元素成份图 计算方式 文本
  1161. /// </summary>
  1162. public string str_cb_yscf_jsfs { get; set; }
  1163. /// <summary>
  1164. /// 元素成份图 计算方式 索引
  1165. /// </summary>
  1166. public int index_cb_yscf_jsfs { get; set; }
  1167. /// <summary>
  1168. /// 元素成份图 颗粒范围 文本
  1169. /// </summary>
  1170. public string str_cb_yscf_klfw { get; set; }
  1171. /// <summary>
  1172. /// 元素成份图 颗粒范围 索引
  1173. /// </summary>
  1174. public int index_cb_yscf_klfw { get; set; }
  1175. /// <summary>
  1176. /// 元素成份图 元素信息
  1177. /// </summary>
  1178. public string str_tb_yscf_ysxx { get; set; }
  1179. /// <summary>
  1180. /// 元素成份图 元素信息列表拆分字符列表
  1181. /// </summary>
  1182. public List<string> list_str_tb_yscf_ysxx { get; set; }
  1183. }
  1184. #endregion
  1185. #region 三元相图部份
  1186. public class SYXT
  1187. {
  1188. /// <summary>
  1189. /// 三元相图 是否显示该模块
  1190. /// </summary>
  1191. public bool b_ck_syxt_xsmk { get; set; }
  1192. /// <summary>
  1193. /// 计算方式 文本
  1194. /// </summary>
  1195. public string str_cb_syxt_jsfs { get; set; }
  1196. /// <summary>
  1197. /// 计算方式 索引
  1198. /// </summary>
  1199. public int index_cb_syxt_jsfs { get; set; }
  1200. /// <summary>
  1201. /// 颗粒范围 文本
  1202. /// </summary>
  1203. public string str_cb_syxt_klfw { get; set; }
  1204. /// <summary>
  1205. /// 颗粒范围 索引
  1206. /// </summary>
  1207. public int index_cb_syxt_klfw { get; set; }
  1208. /// <summary>
  1209. /// 粒级表信息 文本
  1210. /// </summary>
  1211. public string str_cb_syxt_ljb { get; set; }
  1212. /// <summary>
  1213. /// 粒级表信息 索引
  1214. /// </summary>
  1215. public int index_cb_syxt_ljb { get; set; }
  1216. /// <summary>
  1217. /// 每行显示数量 文本
  1218. /// </summary>
  1219. public string str_cb_syxt_mhxssl { get; set; }
  1220. /// <summary>
  1221. /// 每行显示数量 索引
  1222. /// </summary>
  1223. public int index_cb_syxt_mhxssl { get; set; }
  1224. /// <summary>
  1225. /// 三元相图模板集合列表
  1226. /// </summary>
  1227. public List<string> list_lbv_syxt_mblb { get; set; }
  1228. /// <summary>
  1229. /// 三元相图模板索引集合列表
  1230. /// </summary>
  1231. public List<int> list_lbv_syxt_mblb_index { get; set; }
  1232. }
  1233. #endregion
  1234. #region 颗粒列表信息部份
  1235. public class KLLBXX
  1236. {
  1237. /// <summary>
  1238. /// 颗粒列表 是否显示该模块
  1239. /// </summary>
  1240. public bool b_ck_kllb_xsmk { get; set; }
  1241. /// <summary>
  1242. /// 颗粒列表 计算方式 文本
  1243. /// </summary>
  1244. public string str_cb_kllb_jsfs { get; set; }
  1245. /// <summary>
  1246. /// 颗粒列表 计算方式 索引
  1247. /// </summary>
  1248. public int index_cb_kllb_jsfs { get; set; }
  1249. /// <summary>
  1250. /// 颗粒列表 颗粒范围 文本
  1251. /// </summary>
  1252. public string str_cb_kllb_klfw { get; set; }
  1253. /// <summary>
  1254. /// 颗粒列表 颗粒范围 索引
  1255. /// </summary>
  1256. public int index_cb_kllb_klfw { get; set; }
  1257. /// <summary>
  1258. /// 颗粒列表 数量上限
  1259. /// </summary>
  1260. public int int_tb_kllb_ylsx { get; set; }
  1261. /// <summary>
  1262. /// 颗粒列表 显示元素
  1263. /// </summary>
  1264. public string str_tb_kllb_sxys { get; set; }
  1265. /// <summary>
  1266. /// 颗粒列表 显示元素拆分元素列表
  1267. /// </summary>
  1268. public List<string> list_str_tb_lllb_sxys { get; set; }
  1269. /// <summary>
  1270. /// 颗粒列表 是否显示原始图像
  1271. /// </summary>
  1272. public bool b_ck_kllb_ystx { get; set; }
  1273. /// <summary>
  1274. /// 颗粒列表 是否显示放大图像
  1275. /// </summary>
  1276. public bool b_ck_kllb_fdtx { get; set; }
  1277. /// <summary>
  1278. /// 颗粒列表 是否显示能谱信息
  1279. /// </summary>
  1280. public bool b_ck_kllb_npxx { get; set; }
  1281. }
  1282. #endregion
  1283. }
  1284. #endregion
  1285. #region 保存ini结构类
  1286. /// <summary>
  1287. /// 内容部份包含结构类
  1288. /// </summary>
  1289. public class TemplateContent
  1290. {
  1291. private string mkm = ""; //模块名
  1292. private int ix = 0; //位置x
  1293. private int iy = 0; //位置y
  1294. private string sjlx = ""; //数据类型
  1295. private string ljb = ""; //粒级表
  1296. private string ccjsfs = ""; //尺寸计算方式
  1297. private string syxtmb = ""; //三元相图模板
  1298. /// <summary>
  1299. /// 模块名
  1300. /// </summary>
  1301. public string MKM
  1302. {
  1303. get { return mkm; }
  1304. set { mkm = value; }
  1305. }
  1306. /// <summary>
  1307. /// 坐标x
  1308. /// </summary>
  1309. public int IX
  1310. {
  1311. get { return ix; }
  1312. set { ix = value; }
  1313. }
  1314. /// <summary>
  1315. /// 坐标y
  1316. /// </summary>
  1317. public int IY
  1318. {
  1319. get { return iy; }
  1320. set { iy = value; }
  1321. }
  1322. /// <summary>
  1323. /// 数据类型,全部颗粒,选择颗粒
  1324. /// </summary>
  1325. public string SJLX
  1326. {
  1327. get { return sjlx; }
  1328. set { sjlx = value; }
  1329. }
  1330. /// <summary>
  1331. /// 所使用粒级表的名称
  1332. /// </summary>
  1333. public string LJB
  1334. {
  1335. get { return ljb; }
  1336. set { ljb = value; }
  1337. }
  1338. /// <summary>
  1339. /// 尺寸计算方式,直径,面积,费雷特直径,等效圆直径,最长直径,最短直径
  1340. /// </summary>
  1341. public string CCJSFS
  1342. {
  1343. get { return ccjsfs; }
  1344. set { ccjsfs = value; }
  1345. }
  1346. /// <summary>
  1347. /// 三元相图模板
  1348. /// </summary>
  1349. public string SYXTMB
  1350. {
  1351. get { return syxtmb; }
  1352. set { syxtmb = value; }
  1353. }
  1354. }
  1355. /// <summary>
  1356. /// 整个模板结构包含类
  1357. /// </summary>
  1358. public class TemplateInfo
  1359. {
  1360. //页眉部份
  1361. private string logopath = ""; //logo路径
  1362. private string ym_xsmc = ""; //报告名称
  1363. //页脚部份
  1364. private string yj_xsmc = ""; //公司名称
  1365. //内容部份
  1366. public List<TemplateContent> mouble_s = new List<TemplateContent>();//内容类列表,包含多个
  1367. /// <summary>
  1368. /// LOGO的图像路径
  1369. /// </summary>
  1370. public string LOGOPath
  1371. {
  1372. get { return logopath; }
  1373. set { logopath = value; }
  1374. }
  1375. /// <summary>
  1376. /// 报告名称
  1377. /// </summary>
  1378. public string YM_XSMC
  1379. {
  1380. get { return ym_xsmc; }
  1381. set { ym_xsmc = value; }
  1382. }
  1383. /// <summary>
  1384. /// 报告名称字体
  1385. /// </summary>
  1386. public string YJ_XSMC
  1387. {
  1388. get { return yj_xsmc; }
  1389. set { yj_xsmc = value; }
  1390. }
  1391. /// <summary>
  1392. /// 模板内容页列表
  1393. /// </summary>
  1394. public List<TemplateContent> MOUBLE_S
  1395. {
  1396. get { return mouble_s; }
  1397. set { mouble_s = value; }
  1398. }
  1399. }
  1400. #endregion
  1401. }