frmReportApp.cs 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132
  1. using CefSharp;
  2. using CefSharp.WinForms;
  3. using OTS.WinFormsUI.Docking;
  4. using OTSIncAReportApp.DataOperation.Model;
  5. using OTSIncAReportApp.OTSDataMgrFunction;
  6. using OTSIncAReportApp.OTSRibbon;
  7. using OTSIncAReportApp.OTSSampleReportInfo;
  8. using OTSIncAReportApp.SysMgrTools;
  9. using OTSIncAReportGraph;
  10. using OTSIncAReprotCharts;
  11. using System;
  12. using System.Collections;
  13. using System.Collections.Generic;
  14. using System.Data;
  15. using System.Diagnostics;
  16. using System.Drawing;
  17. using System.IO;
  18. using System.Runtime.InteropServices;
  19. using System.Windows.Forms;
  20. namespace OTSIncAReportApp
  21. {
  22. public struct PostLogMsg
  23. {
  24. public int logLevel;//1 trace 2 debug 3info 4 warn 5 error 6 fatal
  25. [MarshalAs(UnmanagedType.ByValArray, SizeConst = (int)200)]
  26. public char[] logMessage;
  27. };
  28. /// <summary>
  29. /// 报告主窗体类
  30. /// </summary>
  31. public partial class frmReportApp : Form
  32. {
  33. #region 共享窗体对象--------------------------------------------------------------------------------------
  34. public frmMeasureRstMgr m_RstWindow = null; //测量结果,树控件窗体,属性Grid窗体
  35. public frmReportConditionChoose m_conditionChoose = null; //属性Grid窗体
  36. public frmSampleImage m_SImageWindow = null; //BSE窗体
  37. public frmCharts m_ChartsWindow = null; //图表窗体
  38. public frmTables m_TablesWindow = null; //报表窗体
  39. public frmReportSysConfig m_ReportSysConfigForm; //配置参数窗体
  40. #endregion //-----------------------------------------------------------------------------------------------
  41. #region 报告类结构相关------------------------------------------------------------------------------------
  42. NLog.Logger log;
  43. private PostLogMsg m_LogMsg;
  44. public const int MsgID = 0x0464;
  45. public const int LogMsgID = 0x0465;
  46. public OutputNlog m_OutputNlog; //日志类对象
  47. public ResultDataMgr m_rstDataMgr = null; //DataMgrFun 对象, 此类是和调用C++ DataMGR交互数据
  48. public OTSRibbonFun m_RibbonFun = null; //报告菜单相关操作类
  49. public string m_OTSReportMgrParamFile = ResultDataMgr.m_ReportMgrParamFile; //报告对应使用的参数文件名
  50. //测量结果ID
  51. //当前工作结果
  52. public static Dictionary<Guid, DisplayParticle> selectedParticles = new Dictionary<Guid, DisplayParticle>(); //所有选择颗粒
  53. public static RectangleF selectedRegion = new RectangleF();
  54. public string MoreSource = "";
  55. Hashtable table; //国际化表
  56. string[] m_str_resultfilepaths;
  57. #endregion //-----------------------------------------------------------------------------------------------
  58. #region EChart相关变量------------------------------------------------------------------------------------
  59. //定义浏览器
  60. public CefSharp.WinForms.ChromiumWebBrowser browser;
  61. public CefSharp.WinForms.ChromiumWebBrowser browsermore;//多测量结果对比时使用
  62. public bool more = false;
  63. public bool trans = false;
  64. //定义浏览器
  65. public CefSharp.WinForms.ChromiumWebBrowser browser_trio;
  66. public CefSharp.WinForms.ChromiumWebBrowser browser_triomore;//多测量结果对比时使用
  67. public class JsEvent
  68. {
  69. public string MessageText { set; get; }
  70. public void ShowTest()
  71. {
  72. MessageBox.Show(MessageText);
  73. }
  74. }
  75. public JsEvent js = new JsEvent();
  76. public string m_reportname;
  77. public string data;
  78. public string type;
  79. public bool timerKG;
  80. #endregion //------------------------------------------------------------------------------------------------
  81. #region 各功能模块窗体 -----------------------------------------------------------------------------------
  82. /// <summary>
  83. /// 颗粒分布图
  84. /// </summary>
  85. public OTSIncAReportGraph.Controls.Control_DrawDistrbutionImageAndBSE im_Control_DrawDistrbutionImageAndBSE = null;
  86. /// <summary>
  87. /// 颗粒排序图
  88. /// </summary>
  89. public OTSIncAReportGraph.Controls.Control_DrawDistrbutionSortImage im_Control_DrawDistrbutionSortImage = null;
  90. /// <summary>
  91. /// 颗粒列表_分页
  92. /// </summary>
  93. public OTSIncAReportGrids.ParticlesGridDevidePage im_ParticlesGridDevidePage = null;
  94. /// <summary>
  95. /// 颗粒成份分布表
  96. /// </summary>
  97. public OTSIncAReportGrids.CompositionDistributionGrid im_CompositionDistributionGrid = null;
  98. /// <summary>
  99. /// 平均元素含量表
  100. /// </summary>
  101. public OTSIncAReportGrids.ElementCompositionAvgGrid im_ElementCompositionAvgGrid = null;
  102. /// <summary>
  103. /// 颗粒尺寸表
  104. /// </summary>
  105. public OTSIncAReportGrids.ParticlesSizeGrid im_ParticlesSizeGrid = null;
  106. /// <summary>
  107. /// 测量结果概况
  108. /// </summary>
  109. public OTSIncAReportGrids.ResultGrid im_ResultGrid = null;
  110. /// <summary>
  111. /// 颗粒成份图EChart
  112. /// </summary>
  113. public Control_ECharts.EChart_ParticlesComposition im_EChart_ParticlesComposition = null;
  114. /// <summary>
  115. /// 三元相图EChart
  116. /// </summary>
  117. public Control_ECharts.EChart_Trianglediagram im_EChart_Trianglediagram = null;
  118. /// <summary>
  119. /// 国标信息表方法一
  120. /// </summary>
  121. public OTSIncAReportGB.ChineseStandardABCDDS im_ChineseStandardABCDDS = null;
  122. /// <summary>
  123. /// 国标信息表方法二
  124. /// </summary>
  125. public OTSIncAReportGB.NationalStandardMethodTwo im_NationalStandardMethodTwo = null;
  126. /// <summary>
  127. /// 美标
  128. /// </summary>
  129. public OTSIncAReportGB.ASTMStandardABCDDS im_ASTMStandardABCDDS = null;
  130. /// <summary>
  131. /// 德标
  132. /// </summary>
  133. public OTSIncAReportGB.DINStandardABCDDS im_DINStandardABCDDS = null;
  134. public List<Particle> GetSelectedParticles()
  135. {
  136. List<Particle> parts = new List<Particle>();
  137. foreach (var p in selectedParticles.Values)
  138. {
  139. parts.Add(p.objParticleData);
  140. }
  141. return parts;
  142. }
  143. protected void DeleteSelectedParticles()
  144. {
  145. foreach (var p in selectedParticles.Values)
  146. {
  147. var dp = (p as DisplayParticle);
  148. dp.IsSelect = false;
  149. }
  150. }
  151. public void SetSelectedParticles(List<Particle> value)
  152. {
  153. foreach (var p in im_Control_DrawDistrbutionImageAndBSE.m_list_allDPart)
  154. {
  155. var dp = (p as DisplayParticle);
  156. foreach (var p2 in value)
  157. {
  158. if (dp.objParticleData.FieldId == p2.FieldId)
  159. {
  160. if (dp.objParticleData.ParticleId == p2.ParticleId)
  161. {
  162. dp.IsSelect = true;
  163. }
  164. }
  165. }
  166. }
  167. }
  168. #endregion //--------------------------------------------------------------------------------------------
  169. #region 窗体初始化及构造函数
  170. /// <summary>
  171. /// 窗体构造函数
  172. /// </summary>
  173. public frmReportApp()
  174. {
  175. m_OutputNlog = new OutputNlog();
  176. m_OutputNlog.Visible = true;
  177. log = NLog.LogManager.GetCurrentClassLogger();
  178. InitializeComponent();
  179. //初始化Ribbon类,操作Ribbon按钮的可用或者不可用
  180. m_RibbonFun = new OTSRibbonFun(this);
  181. //和DataMgr进行数据交互类
  182. m_rstDataMgr = new ResultDataMgr(this);
  183. //配置文件管理窗体
  184. m_ReportSysConfigForm = new frmReportSysConfig(this);
  185. //属性窗口
  186. m_conditionChoose = new frmReportConditionChoose(this);
  187. //树窗口
  188. m_RstWindow = new frmMeasureRstMgr(this);
  189. //分布图,排列图窗体
  190. m_SImageWindow = new frmSampleImage(this);
  191. //chart图表窗体
  192. m_ChartsWindow = new frmCharts(this);
  193. //grid表格窗体
  194. m_TablesWindow = new frmTables(this);
  195. SetTag();
  196. #region 国际化语言
  197. Language lan = new Language(this);
  198. table = lan.GetNameTable(this.Name);
  199. #endregion
  200. }
  201. /// <summary>
  202. /// 为生成后没有Name的控件添加标签,为了国际化语言设置时可以找到这个控件
  203. /// </summary>
  204. protected void SetTag()
  205. {
  206. ribbonPanel3.Tag = "ribbonPanel3";
  207. ribbonPanel2.Tag = "ribbonPanel2";
  208. rbSelTool.Tag = "rbSelTool";
  209. rbChoiceTools.Tag = "rbChoiceTools";
  210. ribbonTab1.Tag = "ribbonTab1";
  211. rbMenu.Tag = "rbMenu";
  212. dpbOpen.Tag = "dpbOpen";
  213. dpbExport.Tag = "dpbExport";
  214. ribbonOrbOptionButton1.Tag = "ribbonOrbOptionButton1";
  215. }
  216. /// <summary>
  217. /// 窗体构造函数,可接收多个测量结果文件
  218. /// </summary>
  219. public frmReportApp(string[] str_resultfilepaths)
  220. {
  221. m_OutputNlog = new OutputNlog();
  222. m_OutputNlog.Visible = true;
  223. log = NLog.LogManager.GetCurrentClassLogger();
  224. m_str_resultfilepaths = str_resultfilepaths;
  225. InitializeComponent();
  226. //初始化Ribbon类,操作Ribbon按钮的可用或者不可用
  227. m_RibbonFun = new OTSRibbonFun(this);
  228. //和DataMgr进行数据交互类
  229. m_rstDataMgr = new ResultDataMgr(this);//必须放在new frmReportSysConfig(this)前
  230. //配置文件管理窗体
  231. m_ReportSysConfigForm = new frmReportSysConfig(this);
  232. //属性窗口
  233. m_conditionChoose = new frmReportConditionChoose(this);
  234. //树窗口
  235. m_RstWindow = new frmMeasureRstMgr(this);
  236. //属性窗口
  237. //m_conditionChoose = new frmReportConditionChoose(this);
  238. //分布图,排列图窗体
  239. m_SImageWindow = new frmSampleImage(this);
  240. //chart图表窗体
  241. m_ChartsWindow = new frmCharts(this);
  242. //grid表格窗体
  243. m_TablesWindow = new frmTables(this);
  244. SetTag();
  245. #region 国际化语言
  246. Language lan = new Language(this);
  247. table = lan.GetNameTable(this.Name);
  248. #endregion
  249. }
  250. /// <summary>
  251. /// 报告主窗体加载事件
  252. /// </summary>
  253. /// <param name="sender"></param>
  254. /// <param name="e"></param>
  255. private void OTSReportApp_Load(object sender, EventArgs e)
  256. {
  257. //m_OutputNlog = new OutputNlog();
  258. log = NLog.LogManager.GetCurrentClassLogger();
  259. //------------- initialize the HMI of the main form.
  260. if (Cef.IsInitialized == false)
  261. {
  262. var settings = new CefSettings();
  263. settings.Locale = "zh-CN";
  264. settings.CefCommandLineArgs.Add("disable-gpu", "1");
  265. Cef.Initialize(settings);
  266. }
  267. //加载配置文件
  268. m_rstDataMgr.m_RptConfigFile.LoadDataFromFile();
  269. //设置菜单按钮,都为true状态
  270. m_RibbonFun.SetAllRibbonButnStatu(false);
  271. //创建,树窗口,属性grid窗口,分布图,grid,chart窗体等。
  272. CreateNewWorkspaceWindow();
  273. //激活测量结果窗体
  274. this.m_RstWindow.Activate();
  275. //激活分布图窗体
  276. this.m_SImageWindow.Activate();
  277. //----------------end the initialization
  278. if (m_str_resultfilepaths != null)
  279. {
  280. //构造函数直接接收传入的测量结果文件,并加载
  281. for (int i = 0; i < m_str_resultfilepaths.Length; i++)
  282. {
  283. this.m_RstWindow.AddSampleResult(m_str_resultfilepaths[i].Replace("^", " "));
  284. }
  285. }
  286. }
  287. #endregion
  288. #region Ribbon菜单按钮及菜单相关按按钮事件
  289. /// <summary>
  290. /// 新建按钮事件
  291. /// </summary>
  292. /// <param name="sender"></param>
  293. /// <param name="e"></param>
  294. private void ribTitleNewFile_Click(object sender, EventArgs e)
  295. {
  296. InitReportProState();
  297. }
  298. /// <summary>
  299. /// 初始伦报告加载
  300. /// </summary>
  301. public void InitReportProState()
  302. {
  303. //清除树窗体
  304. m_RstWindow.treeView1.Nodes.Clear();
  305. //清除属性Grid
  306. m_conditionChoose.m_ConditionGrid = new OTSSourceGrid(m_conditionChoose);
  307. m_rstDataMgr.ResultFilesList.Clear();
  308. //清除各模块报表文件
  309. m_ChartsWindow.Controls.Clear();
  310. m_TablesWindow.Controls.Clear();
  311. m_SImageWindow.Controls.Clear();
  312. //再重新初始化下拉菜单和ribbon菜单中的按钮状态
  313. m_RibbonFun.SetAllRibbonButnStatu(false);
  314. im_Control_DrawDistrbutionImageAndBSE = null;
  315. im_Control_DrawDistrbutionSortImage = null;
  316. im_ParticlesGridDevidePage = null;
  317. im_CompositionDistributionGrid = null;
  318. im_ElementCompositionAvgGrid = null;
  319. im_ParticlesSizeGrid = null;
  320. im_ResultGrid = null;
  321. }
  322. /// <summary>
  323. /// 程序管理按钮点击事件
  324. /// </summary>
  325. /// <param name="sender"></param>
  326. /// <param name="e"></param>
  327. private void RibbonOrbOptionButton1_Click(object sender, EventArgs e)
  328. {
  329. //程序管理
  330. m_ReportSysConfigForm.ShowDialog();
  331. }
  332. /// <summary>
  333. /// 打开报告项目文件按钮事件
  334. /// </summary>
  335. /// <param name="sender"></param>
  336. /// <param name="e"></param>
  337. private void rbOpen_Click(object sender, EventArgs e)
  338. {
  339. string path = "";
  340. OpenFileDialog fileDialog = new OpenFileDialog();
  341. fileDialog.Filter = "text File|*.rst";
  342. fileDialog.RestoreDirectory = true;
  343. if (fileDialog.ShowDialog() == DialogResult.OK)
  344. {
  345. path = System.IO.Path.GetFullPath(fileDialog.FileName);
  346. log.Info("begin to load the result!");
  347. this.m_RstWindow.AddSampleResult(path);
  348. }
  349. }
  350. /// <summary>
  351. /// 模板导出按钮事件
  352. /// </summary>
  353. /// <param name="sender"></param>
  354. /// <param name="e"></param>
  355. private void rbOut_Click(object sender, EventArgs e)
  356. {
  357. OTSReport_Export oe = new OTSReport_Export(this);
  358. oe.ShowDialog();
  359. }
  360. /// <summary>
  361. /// 全图匹配按钮事件
  362. /// </summary>
  363. /// <param name="sender"></param>
  364. /// <param name="e"></param>
  365. private void rbAllImage_Click(object sender, EventArgs e)
  366. {
  367. int tabIndex = (int)(m_conditionChoose.tabIndex);
  368. switch (tabIndex)
  369. {
  370. case (int)DisplayPicutureType.AnalyzeImg:
  371. //int idx = m_DataMgrFun.GetPropIndexByPropItemName(SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  372. //int imgDisType = SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(SourceGridData.ConditionItemList[idx].itemVal.ToString());
  373. int imgDisType=m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  374. if (imgDisType == 0)
  375. {
  376. if (im_Control_DrawDistrbutionImageAndBSE != null)
  377. {
  378. //分布图
  379. im_Control_DrawDistrbutionImageAndBSE.FullGraphMatch();
  380. im_Control_DrawDistrbutionImageAndBSE.Invalidate();
  381. }
  382. }
  383. else
  384. {
  385. if (im_Control_DrawDistrbutionSortImage != null)
  386. {
  387. //排列图
  388. }
  389. }
  390. break;
  391. case (int)DisplayPicutureType.AnalyzeDataTable:
  392. break;
  393. case (int)DisplayPicutureType.AnalyzeDataChart:
  394. break;
  395. default:
  396. break;
  397. }
  398. }
  399. /// <summary>
  400. /// 宽度匹配按钮事件
  401. /// </summary>
  402. /// <param name="sender"></param>
  403. /// <param name="e"></param>
  404. private void rbWidthImage_Click(object sender, EventArgs e)
  405. {
  406. int tabIndex = (int)(m_conditionChoose.tabIndex);
  407. switch (tabIndex)
  408. {
  409. case (int)DisplayPicutureType.AnalyzeImg:
  410. //int idx = m_DataMgrFun.GetPropIndexByPropItemName(SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  411. //int imgDisType = SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(SourceGridData.ConditionItemList[idx].itemVal.ToString());
  412. int imgDisType = m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  413. if (imgDisType == 0)
  414. {
  415. if (im_Control_DrawDistrbutionImageAndBSE != null)
  416. {
  417. //分布图
  418. im_Control_DrawDistrbutionImageAndBSE.WidthMatch();
  419. im_Control_DrawDistrbutionImageAndBSE.Invalidate();
  420. }
  421. }
  422. else
  423. {
  424. if (im_Control_DrawDistrbutionSortImage != null)
  425. {
  426. //排列图
  427. }
  428. }
  429. break;
  430. case (int)DisplayPicutureType.AnalyzeDataTable:
  431. break;
  432. case (int)DisplayPicutureType.AnalyzeDataChart:
  433. break;
  434. default:
  435. break;
  436. }
  437. }
  438. /// <summary>
  439. /// 帧图边框按钮事件
  440. /// </summary>
  441. /// <param name="sender"></param>
  442. /// <param name="e"></param>
  443. private void rbFrame_Click(object sender, EventArgs e)
  444. {
  445. int tabIndex = (int)(m_conditionChoose.tabIndex);
  446. switch (tabIndex)
  447. {
  448. case (int)DisplayPicutureType.AnalyzeImg:
  449. //int idx = m_DataMgrFun.GetPropIndexByPropItemName(SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  450. //int imgDisType = SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(SourceGridData.ConditionItemList[idx].itemVal.ToString());
  451. int imgDisType = m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  452. if (imgDisType == 0)
  453. {
  454. if (im_Control_DrawDistrbutionImageAndBSE != null)
  455. {
  456. //分布图
  457. im_Control_DrawDistrbutionImageAndBSE.ShowGridLine();
  458. im_Control_DrawDistrbutionImageAndBSE.Invalidate();
  459. }
  460. }
  461. else
  462. {
  463. if (im_Control_DrawDistrbutionSortImage != null)
  464. {
  465. }
  466. }
  467. break;
  468. case (int)DisplayPicutureType.AnalyzeDataTable:
  469. break;
  470. case (int)DisplayPicutureType.AnalyzeDataChart:
  471. break;
  472. default:
  473. break;
  474. }
  475. }
  476. /// <summary>
  477. /// 标尺按钮事件
  478. /// </summary>
  479. /// <param name="sender"></param>
  480. /// <param name="e"></param>
  481. private void rbStaff_Click(object sender, EventArgs e)
  482. {
  483. int tabIndex = (int)(m_conditionChoose.tabIndex);
  484. switch (tabIndex)
  485. {
  486. case (int)DisplayPicutureType.AnalyzeImg:
  487. //int idx = m_DataMgrFun.GetPropIndexByPropItemName(SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  488. //int imgDisType = SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(SourceGridData.ConditionItemList[idx].itemVal.ToString());
  489. int imgDisType = m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  490. if (imgDisType == 0)
  491. {
  492. if (im_Control_DrawDistrbutionImageAndBSE != null)
  493. {
  494. //分布图
  495. im_Control_DrawDistrbutionImageAndBSE.ShowRulerControl();
  496. im_Control_DrawDistrbutionImageAndBSE.Invalidate();
  497. }
  498. }
  499. else
  500. {
  501. if (im_Control_DrawDistrbutionSortImage != null)
  502. {
  503. im_Control_DrawDistrbutionSortImage.ShowRulerControl();
  504. im_Control_DrawDistrbutionSortImage.Invalidate();
  505. }
  506. }
  507. break;
  508. case (int)DisplayPicutureType.AnalyzeDataTable:
  509. break;
  510. case (int)DisplayPicutureType.AnalyzeDataChart:
  511. break;
  512. default:
  513. break;
  514. }
  515. }
  516. /// <summary>
  517. /// 恢复按钮事件
  518. /// </summary>
  519. /// <param name="sender"></param>
  520. /// <param name="e"></param>
  521. private void rbRenew_Click(object sender, EventArgs e)
  522. {
  523. int tabIndex = (int)m_conditionChoose.tabIndex;
  524. //int idx = m_DataMgrFun.GetPropIndexByPropItemName(SourceGridData.ConditionItemList, OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  525. //int DisType = SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(SourceGridData.ConditionItemList[idx].itemVal.ToString());
  526. int DisType = m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  527. switch (tabIndex)
  528. {
  529. case (int)DisplayPicutureType.AnalyzeImg:
  530. if (DisType == (int)IMAGE_DISPLAY_TYPE.DISTRIBUTION)
  531. {
  532. if (im_Control_DrawDistrbutionImageAndBSE != null)
  533. {
  534. //分布图
  535. im_Control_DrawDistrbutionImageAndBSE.ShowRulerControl(false);
  536. im_Control_DrawDistrbutionImageAndBSE.ShowGridLine(false);
  537. im_Control_DrawDistrbutionImageAndBSE.Invalidate();
  538. m_SImageWindow.Controls.Clear();
  539. im_Control_DrawDistrbutionImageAndBSE = new OTSIncAReportGraph.Controls.Control_DrawDistrbutionImageAndBSE(this);
  540. im_Control_DrawDistrbutionImageAndBSE.Dock = DockStyle.Fill;
  541. m_SImageWindow.Controls.Add(im_Control_DrawDistrbutionImageAndBSE);
  542. m_SImageWindow.Activate();
  543. im_Control_DrawDistrbutionImageAndBSE.ShowSourceName = "";
  544. im_Control_DrawDistrbutionImageAndBSE.DrawDistrbutionImageAndBSE_ByQuery(m_conditionChoose.m_SourceGridData);
  545. im_Control_DrawDistrbutionImageAndBSE.SetSelectParticle(GetSelectedParticles());
  546. //并删除排列图
  547. im_Control_DrawDistrbutionSortImage = null;
  548. }
  549. }
  550. if (DisType == (int)IMAGE_DISPLAY_TYPE.IMAGE_GRID)
  551. {
  552. if (im_Control_DrawDistrbutionSortImage != null)
  553. {
  554. //排序图
  555. im_Control_DrawDistrbutionSortImage.ShowRulerControl(false);
  556. im_Control_DrawDistrbutionSortImage.Invalidate();
  557. m_SImageWindow.Controls.Clear();
  558. im_Control_DrawDistrbutionSortImage = new OTSIncAReportGraph.Controls.Control_DrawDistrbutionSortImage(this);
  559. im_Control_DrawDistrbutionSortImage.Dock = DockStyle.Fill;
  560. m_SImageWindow.Controls.Add(im_Control_DrawDistrbutionSortImage);
  561. m_SImageWindow.Activate();
  562. im_Control_DrawDistrbutionSortImage.ShowSourceName = "";
  563. im_Control_DrawDistrbutionSortImage.GetDistrbutionSortimage_ByQuery(m_conditionChoose.m_CurrentConditions);
  564. im_Control_DrawDistrbutionSortImage.SetSelectParticle(GetSelectedParticles());
  565. }
  566. }
  567. break;
  568. case (int)DisplayPicutureType.AnalyzeDataTable:
  569. break;
  570. case (int)DisplayPicutureType.AnalyzeDataChart:
  571. break;
  572. default:
  573. break;
  574. }
  575. }
  576. /// <summary>
  577. /// 反选操作按钮事件
  578. /// </summary>
  579. /// <param name="sender"></param>
  580. /// <param name="e"></param>
  581. private void rbReverseSelection_Click(object sender, EventArgs e)
  582. {
  583. int tabIndex = (int)(m_conditionChoose.tabIndex);
  584. switch (tabIndex)
  585. {
  586. case (int)DisplayPicutureType.AnalyzeImg:
  587. //int idx = m_DataMgrFun.GetPropIndexByPropItemName(SourceGridData.ConditionItemList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  588. //int imgDisType = SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(SourceGridData.ConditionItemList[idx].itemVal.ToString());
  589. int imgDisType = m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  590. if (imgDisType == 0)
  591. {
  592. if (im_Control_DrawDistrbutionImageAndBSE != null)
  593. {
  594. //分布图
  595. im_Control_DrawDistrbutionImageAndBSE.ReverseSelection();
  596. }
  597. }
  598. else
  599. {
  600. if (im_Control_DrawDistrbutionSortImage != null)
  601. {
  602. im_Control_DrawDistrbutionSortImage.ReverSeSelection();
  603. }
  604. }
  605. break;
  606. case (int)DisplayPicutureType.AnalyzeDataTable:
  607. break;
  608. case (int)DisplayPicutureType.AnalyzeDataChart:
  609. break;
  610. default:
  611. break;
  612. }
  613. }
  614. /// <summary>
  615. /// 圆形工具按钮事件
  616. /// </summary>
  617. /// <param name="sender"></param>
  618. /// <param name="e"></param>
  619. private void rbCircular_Click(object sender, EventArgs e)
  620. {
  621. int tabIndex = (int)(m_conditionChoose.tabIndex);
  622. switch (tabIndex)
  623. {
  624. case (int)DisplayPicutureType.AnalyzeImg:
  625. //int idx = m_DataMgrFun.GetPropIndexByPropItemName(SourceGridData.ConditionItemList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  626. //int imgDisType = SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(SourceGridData.ConditionItemList[idx].itemVal.ToString());
  627. IMAGE_DISPLAY_TYPE imgDisType = (IMAGE_DISPLAY_TYPE)m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  628. if (imgDisType == IMAGE_DISPLAY_TYPE.DISTRIBUTION)
  629. {
  630. if (im_Control_DrawDistrbutionImageAndBSE != null)
  631. {
  632. //分布图
  633. im_Control_DrawDistrbutionImageAndBSE.MultiSelect_Ellipse();
  634. }
  635. }
  636. else
  637. {
  638. if (im_Control_DrawDistrbutionSortImage != null)
  639. {
  640. im_Control_DrawDistrbutionSortImage.MultiSelect_Ellipse();
  641. }
  642. }
  643. break;
  644. case (int)DisplayPicutureType.AnalyzeDataTable:
  645. break;
  646. case (int)DisplayPicutureType.AnalyzeDataChart:
  647. break;
  648. default:
  649. break;
  650. }
  651. }
  652. /// <summary>
  653. /// 矩形工具按钮事件
  654. /// </summary>
  655. /// <param name="sender"></param>
  656. /// <param name="e"></param>
  657. private void rbRectangle_Click(object sender, EventArgs e)
  658. {
  659. int tabIndex = (int)(m_conditionChoose.tabIndex);
  660. switch (tabIndex)
  661. {
  662. case (int)DisplayPicutureType.AnalyzeImg:
  663. //int idx = m_DataMgrFun.GetPropIndexByPropItemName(SourceGridData.ConditionItemList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  664. //int imgDisType = SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(SourceGridData.ConditionItemList[idx].itemVal.ToString());
  665. int imgDisType = m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  666. if (imgDisType == 0)
  667. {
  668. if (im_Control_DrawDistrbutionImageAndBSE != null)
  669. {
  670. //分布图
  671. im_Control_DrawDistrbutionImageAndBSE.MultiSelect_Rectangle();
  672. }
  673. }
  674. else
  675. {
  676. if (im_Control_DrawDistrbutionSortImage != null)
  677. {
  678. im_Control_DrawDistrbutionSortImage.MultiSelect_Rectangle();
  679. }
  680. }
  681. break;
  682. case (int)DisplayPicutureType.AnalyzeDataTable:
  683. break;
  684. case (int)DisplayPicutureType.AnalyzeDataChart:
  685. break;
  686. default:
  687. break;
  688. }
  689. }
  690. /// <summary>
  691. /// 取消多边形选择工具按钮事件
  692. /// </summary>
  693. /// <param name="sender"></param>
  694. /// <param name="e"></param>
  695. private void rbCancel_Click(object sender, EventArgs e)
  696. {
  697. int tabIndex = (int)(m_conditionChoose.tabIndex);
  698. DeleteSelectedParticles();
  699. switch (tabIndex)
  700. {
  701. case (int)DisplayPicutureType.AnalyzeImg:
  702. //int idx = m_DataMgrFun.GetPropIndexByPropItemName(SourceGridData.ConditionItemList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  703. //int imgDisType = SourceGridData.ConditionItemList[idx].comboDownList.IndexOf(SourceGridData.ConditionItemList[idx].itemVal.ToString());
  704. int imgDisType = m_conditionChoose.m_SourceGridData.GetComboDownListIndexByItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  705. if (imgDisType == 0)// oper_module == "颗粒分布图"
  706. {
  707. if (im_Control_DrawDistrbutionImageAndBSE != null)
  708. {
  709. //分布图
  710. im_Control_DrawDistrbutionImageAndBSE.DeselectAllParticle();
  711. selectedParticles.Clear();
  712. }
  713. }
  714. else
  715. {
  716. if (im_Control_DrawDistrbutionSortImage != null)
  717. {
  718. im_Control_DrawDistrbutionSortImage.DeselectAllParticle();
  719. selectedParticles.Clear();
  720. }
  721. }
  722. break;
  723. case (int)DisplayPicutureType.AnalyzeDataTable:
  724. break;
  725. case (int)DisplayPicutureType.AnalyzeDataChart:
  726. break;
  727. default:
  728. break;
  729. }
  730. }
  731. #endregion
  732. #region 自定义封装相关方法
  733. /// <summary>
  734. /// 新建一个工作区域
  735. /// </summary>
  736. public void CreateNewWorkspaceWindow()
  737. {
  738. //Show BSE图窗口
  739. CreateSampleWindow();
  740. //创建测量数据窗口
  741. CreateCTablesWindow();
  742. //创建图表窗口
  743. CreateChartsWindow();
  744. m_OutputNlog.Show(DockWindowPanel, OTS.WinFormsUI.Docking.DockState.DockRight);
  745. m_OutputNlog.Visible = true;
  746. m_RstWindow.Show(DockWindowPanel, OTS.WinFormsUI.Docking.DockState.DockLeft);
  747. m_conditionChoose.Show(DockWindowPanel);
  748. DockWindowPanel.DockLeftPortion = 300;
  749. DockWindowPanel.DockRightPortion = 351;
  750. }
  751. /// <summary>
  752. /// 创建新的窗体
  753. /// </summary>
  754. /// <param name="WorkWindow"></param>
  755. /// <param name="iType"></param>
  756. /// <returns></returns>
  757. private OTS.WinFormsUI.Docking.DockContent CreateNewDocument(OTS.WinFormsUI.Docking.DockContent WorkWindow, DisplayPicutureType iType)
  758. {
  759. string text = "";
  760. if (iType == DisplayPicutureType.AnalyzeImg)
  761. {
  762. text = table["analysisdiagram"].ToString(); ;
  763. }
  764. else if (iType == DisplayPicutureType.AnalyzeDataTable)
  765. {
  766. text = table["analysisdatasheet"].ToString();
  767. }
  768. else if (iType == DisplayPicutureType.AnalyzeDataChart)
  769. {
  770. text = table["analysisdatachart"].ToString();
  771. }
  772. WorkWindow.Text = text;
  773. return WorkWindow;
  774. }
  775. /// <summary>
  776. /// 创建样品BSE图窗口
  777. /// </summary>
  778. public void CreateSampleWindow()
  779. {
  780. if (null == m_SImageWindow)
  781. {
  782. m_SImageWindow = new frmSampleImage(this);
  783. }
  784. m_SImageWindow = (frmSampleImage)CreateNewDocument(m_SImageWindow, DisplayPicutureType.AnalyzeImg);
  785. if (DockWindowPanel.DocumentStyle == DocumentStyle.SystemMdi)
  786. {
  787. m_SImageWindow.MdiParent = this;
  788. m_SImageWindow.Show();
  789. }
  790. else
  791. {
  792. m_SImageWindow.Show(DockWindowPanel);
  793. }
  794. }
  795. /// <summary>
  796. /// 创建Grid表格窗体
  797. /// </summary>
  798. private void CreateCTablesWindow()
  799. {
  800. if (null == m_TablesWindow)
  801. {
  802. m_TablesWindow = new frmTables(this);
  803. }
  804. m_TablesWindow = (frmTables)CreateNewDocument(m_TablesWindow, DisplayPicutureType.AnalyzeDataTable);
  805. if (DockWindowPanel.DocumentStyle == DocumentStyle.SystemMdi)
  806. {
  807. m_TablesWindow.MdiParent = this;
  808. m_TablesWindow.Show();
  809. }
  810. else
  811. {
  812. m_TablesWindow.Show(DockWindowPanel);
  813. }
  814. }
  815. /// <summary>
  816. /// 创建chart图表窗体
  817. /// </summary>
  818. private void CreateChartsWindow()
  819. {
  820. if (null == m_ChartsWindow)
  821. {
  822. m_ChartsWindow = new frmCharts(this);
  823. }
  824. m_ChartsWindow = (frmCharts)CreateNewDocument(m_ChartsWindow, DisplayPicutureType.AnalyzeDataChart);
  825. if (DockWindowPanel.DocumentStyle == DocumentStyle.SystemMdi)
  826. {
  827. m_ChartsWindow.MdiParent = this;
  828. m_ChartsWindow.Show();
  829. }
  830. else
  831. {
  832. m_ChartsWindow.Show(DockWindowPanel);
  833. }
  834. }
  835. /// <summary>
  836. /// 新建样品时提示保存样品信息Messagebox
  837. /// </summary>
  838. /// <returns></returns>
  839. public int ShowSaveInfoMsgBox()
  840. {
  841. //是否保存修改信息,保存样品信息提示
  842. int iRev = (int)MessageBox.Show("Save modification information", "Tips", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
  843. if (iRev == (int)DialogResult.Yes)
  844. {
  845. return (int)MessageBoxRev.DIALOG_YES;
  846. }
  847. else if (iRev == (int)DialogResult.No)
  848. {
  849. return (int)MessageBoxRev.DIALOG_NO;
  850. }
  851. else
  852. {
  853. return (int)MessageBoxRev.DIALOG_CANCEL;
  854. }
  855. }
  856. #endregion
  857. #region 系统菜单相关功能
  858. private void ribbonOrbMenuItem4_Click(object sender, EventArgs e)
  859. {
  860. MemoryManagementClass.FlushMemory();
  861. //系统菜单,输出
  862. OTSReport_Export oe = new OTSReport_Export(this);
  863. oe.ShowDialog();
  864. oe.Dispose();
  865. oe = null;
  866. MemoryManagementClass.FlushMemory();
  867. }
  868. private void frmReportApp_FormClosed(object sender, FormClosedEventArgs e)
  869. {
  870. //string strDBpathGB =m_DataMgrFun. resultFilesList[0].FilePath + "\\" + "ReportGBDB.db";
  871. //File.Delete(strDBpathGB);
  872. Process.GetCurrentProcess().Kill();
  873. this.Hide();//打开EChar图后,回收浏览器资源暂卡,为达到操作流畅性,先隐藏窗体再回收资源
  874. this.Invoke(new Action(() =>
  875. {
  876. if (Cef.IsInitialized)
  877. Cef.Shutdown();
  878. }));
  879. }
  880. #endregion
  881. private void dpbOpen_Click(object sender, EventArgs e)
  882. {
  883. OpenProFile();
  884. }
  885. /// <summary>
  886. /// 打开报告项目工程文件,封装方法
  887. /// </summary>
  888. /// <returns></returns>
  889. private bool OpenProFile()
  890. {
  891. OpenFileDialog openFileDialog = new OpenFileDialog();
  892. openFileDialog.Filter = "Measure Project Files((*.prj)|*.prj";
  893. openFileDialog.ValidateNames = true;
  894. openFileDialog.CheckPathExists = true;
  895. openFileDialog.CheckFileExists = true;
  896. openFileDialog.Multiselect = false;
  897. if (openFileDialog.ShowDialog() == DialogResult.OK)
  898. {
  899. string strFilePath = System.IO.Path.GetDirectoryName(openFileDialog.FileName);
  900. System.IO.DirectoryInfo folder = new System.IO.DirectoryInfo(strFilePath);
  901. foreach (System.IO.DirectoryInfo directory in folder.GetDirectories())
  902. {
  903. foreach (System.IO.FileInfo file in directory.GetFiles("*.rst"))
  904. {
  905. this.m_RstWindow.AddSampleResult(file.FullName);
  906. }
  907. }
  908. return true;
  909. }
  910. else return false;
  911. }
  912. private void frmReportApp_FormClosing(object sender, FormClosingEventArgs e)
  913. {
  914. ServiceInterface.SemController sem = new ServiceInterface.SemController();
  915. sem.DisConnect();
  916. }
  917. private void ribbonOrbMenuItem_Extremum_Click(object sender, EventArgs e)
  918. {
  919. try
  920. {
  921. System.Diagnostics.Process p = System.Diagnostics.Process.Start(".\\OTSExtremum.exe");
  922. p.WaitForExit();
  923. }
  924. catch (Exception ex)
  925. {
  926. log.Error("OTSPartA_STDEditor:" + ex.ToString());
  927. }
  928. }
  929. private void rbHelp_Click(object sender, EventArgs e)
  930. {
  931. Help help = new Help();
  932. help.ShowDialog();
  933. }
  934. protected override void DefWndProc(ref Message m)
  935. {
  936. switch (m.Msg)
  937. {
  938. case LogMsgID:
  939. m_LogMsg = new PostLogMsg();
  940. m_LogMsg = (PostLogMsg)Marshal.PtrToStructure(m.LParam, typeof(PostLogMsg));
  941. var log = NLog.LogManager.GetCurrentClassLogger();
  942. string s = GetString(m_LogMsg.logMessage);
  943. switch (m_LogMsg.logLevel)
  944. {
  945. case 1:
  946. log.Trace(s);
  947. break;
  948. case 2:
  949. log.Debug(s);
  950. break;
  951. case 3:
  952. log.Info(s);
  953. break;
  954. case 4:
  955. log.Warn(s);
  956. break;
  957. case 5:
  958. log.Error(s);
  959. break;
  960. case 6:
  961. log.Fatal(s);
  962. break;
  963. }
  964. break;
  965. default:
  966. base.DefWndProc(ref m);
  967. break;
  968. }
  969. }
  970. private string GetString(char[] csStr)
  971. {
  972. int ilen = csStr.Length;
  973. string csName = new string(csStr); //MSTMsg.STMSampleStu.cSName
  974. csName.IndexOf('\0');
  975. csName = csName.Substring(0, csName.IndexOf('\0'));
  976. return csName;
  977. }
  978. }
  979. }