OTSIncAReportTemplate.cs 63 KB

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