using OTSIncAReportApp.OTSSampleReportInfo; using OTSIncAReportApp.SysMgrTools; using OTSIncAReportGB; using OTSIncAReportGrids; using SourceGrid; using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Windows.Forms; namespace OTSIncAReportApp.OTSDataMgrFunction { /// /// 属性Grid相关操作封装类 /// public class SampleGrid { #region 变量定义 /// /// 主框架窗体 /// private frmMeasureRstProp m_RstProp = null; /// /// 当grid被click时,确定点击的行 /// public int m_ClickRow = 0; /// /// 当grid被click时,确定点击的列 /// public int m_ClickColumn = 0; /// /// 当改变ProperyWindow窗口大小时,窗口响应Resize(object sender, EventArgs e),返回改变后的尺寸,利用改变后的窗口尺寸重回Grid的行宽和列宽 /// public int m_PropWindow_X = 0; /// /// 当改变ProperyWindow窗口大小时,窗口响应Resize(object sender, EventArgs e),返回改变后的尺寸,利用改变后的窗口尺寸重回Grid的行宽和列宽 /// public int m_PropWindow_Y = 0; /// /// 临时用于计算用的grid行号 总行数 /// public static int m_Const_Grid_Row = 42; //总行数 /// /// 临时用于计算用的grid行号 总列数 /// public static int m_Const_Grid_Column = 3; //总列数 /// /// 测量结果相关类 /// OTSSampleMeaInfo m_WSampleInfo = new OTSSampleMeaInfo(); /// /// 当选择了Grid的某个row ,修改Row的值,引发的事件 /// ChangeGridCellValEvent m_ChangeCellValEvent = null; /// /// 选择COMBOBOX值引发的事件 /// ItemValueChange2 m_ValChangeEvent2 = null; /// /// 定义分栏表头样式 /// public SourceGrid.Cells.Views.Cell m_Col_HeaderMode = null; /// /// 定义大表头grid表头样式 /// SourceGrid.Cells.Views.Cell m_CellTitleModel = null; /// /// 定义分栏标题格样式 /// SourceGrid.Cells.Views.Cell m_Col_NameMode = null; /// /// 定义分栏内容格样式 /// SourceGrid.Cells.Views.Cell m_Col_ValMode = null; /// /// 只读样式cell设置 /// SourceGrid.Cells.Views.Cell M_Col_readonly = null; /// /// 通用参数组的标题名 /// public String m_Display_Mode_Name = "参数"; /// /// 通用参数组的GRID行数 /// public int m_Display_Mode_Row = 0; Language lan = new Language(); Hashtable table; //窗体索引 private int tabIndex = 0; #endregion #region 构造函数及初始化函数 public SampleGrid(frmMeasureRstProp Propwindow) { m_RstProp = Propwindow; m_RstProp.PropGrid.Rows.Clear(); m_RstProp.PropGrid.Redim(m_Const_Grid_Row, m_Const_Grid_Column); table = lan.GetNameTable("SampleGrid"); string str = table["str1"].ToString(); m_Display_Mode_Name = str; } /// /// 初始化Grid修改值事件 /// void InitChangeValEvent() { m_ChangeCellValEvent = new ChangeGridCellValEvent(this); m_ValChangeEvent2 = new ItemValueChange2(this); } #endregion #region 初始化属性Grid相关方法 /// /// 初始化属性Grid相关样式 /// public void InitGrid() { //初始化Grid修改值事件 InitChangeValEvent(); //定义大表头grid表头样式 { m_CellTitleModel = new SourceGrid.Cells.Views.Cell(); m_CellTitleModel.BackColor = Color.LightGray; m_CellTitleModel.ForeColor = Color.Black; m_CellTitleModel.TextAlignment = DevAge.Drawing.ContentAlignment.MiddleLeft; } //定义分栏表头样式 { m_Col_HeaderMode = new SourceGrid.Cells.Views.Cell(); m_Col_HeaderMode.BackColor = Color.LightGray; //背景色 m_Col_HeaderMode.ForeColor = Color.Black; //字体颜色 m_Col_HeaderMode.TextAlignment = DevAge.Drawing.ContentAlignment.MiddleCenter; } //定义分栏标题格样式 { m_Col_NameMode = new SourceGrid.Cells.Views.Cell(); m_Col_NameMode.TextAlignment = DevAge.Drawing.ContentAlignment.MiddleLeft; } //定义分栏内容格样式 { m_Col_ValMode = new SourceGrid.Cells.Views.Cell(); m_Col_ValMode.TextAlignment = DevAge.Drawing.ContentAlignment.MiddleLeft; } //只读样式cell设置 { M_Col_readonly = new SourceGrid.Cells.Views.Cell(); M_Col_readonly.ForeColor = Color.Gray; } } /// /// 初始化属性Grid相关表头 /// public void InitGridTitlet() { int firstColumnWidth = 15; //第一列的宽度 int SecondColumnWidth = 150; //设备各单元格宽度--------------------------------------------- m_RstProp.PropGrid.Columns.SetWidth(0, firstColumnWidth); //设置第一列宽度 m_RstProp.PropGrid.Columns.AutoSizeColumn(2); //固定进度条 //ProperyWindows的窗口宽度包括是第二列和第三列的长度总和 m_RstProp.PropGrid.Columns.SetWidth(1, 150); //第二列宽度 m_RstProp.PropGrid.Columns.SetWidth(2, (m_PropWindow_X - firstColumnWidth - SecondColumnWidth - 18)); //第三列宽度 } /// /// 初始化组的标题栏 iRow:GroupTitle的行号, sGroupName: GroupTitle的名字 /// /// /// public void InitGroupTitle(int iRow, String sGroupName) { if (null == m_RstProp.PropGrid[iRow, 0]) { m_RstProp.PropGrid[iRow, 0] = new SourceGrid.Cells.Link("-");//第一行,上面用来折叠的"-",一会点击后变成"+" m_RstProp.PropGrid[iRow, 0].View = m_CellTitleModel; //设置表头的样式 //设置表头"-"按钮,点击后的事件 } if (null == m_RstProp.PropGrid[iRow, 1]) { m_RstProp.PropGrid[iRow, 1] = new SourceGrid.Cells.Cell(sGroupName); // 设置GroupTitle的名字 m_RstProp.PropGrid[iRow, 1].View = m_CellTitleModel; m_RstProp.PropGrid[iRow, 1].ColumnSpan = 2; //设置第二列与第三列合并,表头效果完成。 2:从当前列开始合并2列 } } #endregion #region 属性Grid显示相关方法 public void ShowGeneralGrid(OTSSampleMeaInfo SampleInfo) { if (SampleInfo.SampleDataList.Count() == 0) return; int nGridRow = 0; string str = table["str2"].ToString(); this.InitGroupTitle(nGridRow, str); nGridRow++; int Display_Mode_Row = 1;//确定跨行样式的跨行数变量 // 设置样品Grid数据 for (int i = 0; i < SampleInfo.SampleDataList.Count; i++) { Display_Mode_Row++; //显示样品的属性值 SampleData SData = SampleInfo.SampleDataList[i]; this.SetGridCellVal(nGridRow, SData); nGridRow++; } //控制左边的竖形条框栏的显示 //第二行,第一列,为了效果美化,向下跨行,共跨m_Grid_TotleRow - 1行 if (Display_Mode_Row > 1) //有通用参数组的Grid值显示 { //获取Grid组Title所在的行号 int iCurRow = Display_Mode_Row; //第二行的时候,需要定义左边的条框栏 if (m_RstProp.tabIndex == DisplayPicutureType.AnalyzeImg) { if (null == m_RstProp.PropGrid[1 + 1, 0]) { m_RstProp.PropGrid[1, 0] = new SourceGrid.Cells.Cell(""); m_RstProp.PropGrid[1, 0].View = m_Col_HeaderMode; } else { m_RstProp.PropGrid[iCurRow + 1, 0].Value = ""; } if (iCurRow == 0) { m_RstProp.PropGrid[iCurRow + 1, 0].RowSpan = iCurRow + Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数 } else { m_RstProp.PropGrid[1, 0].RowSpan = Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数 } } if (m_RstProp.tabIndex == DisplayPicutureType.AnalyzeDataTable) { //第二行的时候,需要定义左边的条框栏 if (null == m_RstProp.PropGrid[1 + 1, 0]) { m_RstProp.PropGrid[1, 0] = new SourceGrid.Cells.Cell(""); m_RstProp.PropGrid[1, 0].View = m_Col_HeaderMode; } else { m_RstProp.PropGrid[iCurRow + 1, 0].Value = ""; } if (iCurRow == 0) { m_RstProp.PropGrid[iCurRow + 1, 0].RowSpan = iCurRow + Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数 } else { m_RstProp.PropGrid[1, 0].RowSpan = Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数 } } if (m_RstProp.tabIndex == DisplayPicutureType.AnalyzeDataChart) { //第二行的时候,需要定义左边的条框栏 if (null == m_RstProp.PropGrid[1, 0]) { m_RstProp.PropGrid[1, 0] = new SourceGrid.Cells.Cell(""); m_RstProp.PropGrid[1, 0].View = m_Col_HeaderMode; } else { m_RstProp.PropGrid[iCurRow + 1, 0].Value = ""; } if (iCurRow == 0) { m_RstProp.PropGrid[iCurRow + 1, 0].RowSpan = iCurRow + Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数 } else { m_RstProp.PropGrid[1, 0].RowSpan = Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数 } } } } /// /// 显示Chart图表相关属性Grid /// /// public void SetPictureProperty(DisplayPicutureType note) { m_RstProp.tabIndex = note; m_RstProp.PropGrid.Show(); } public void SetGridCellVal(int Row, SampleData SData) { OTS_REPORT_PROP_GRID_ITEMS SampleID = SData.iItemId; String sCaptionName = SData.sSCaptionName; object SampleVal = SData.itemVal; List comboDownList = SData.comboDownList; OTS_ITEM_TYPES SampleValType = SData.iItemValType; bool bReadOnly = SData.bReadOnly; //每行的第一列显示属性名称 if (null == m_RstProp.PropGrid[Row, 1]) { m_RstProp.PropGrid[Row, 1] = new SourceGrid.Cells.Cell(sCaptionName); } else { m_RstProp.PropGrid[Row, 1].Value = sCaptionName; } m_RstProp.PropGrid[Row, 1].View = m_Col_NameMode; //每行的第二列显示属性值 if (null == m_RstProp.PropGrid[Row, 2]) { switch (SData.iItemValType) { case OTS_ITEM_TYPES.COMBO: try { SourceGrid.Cells.Editors.ComboBox m_ComboboxText = null; List ValList = new List(); string[] arraySample; if (null == comboDownList) { List sSampleVal = new List(); ValList = sSampleVal; } else { ValList = (List)comboDownList; } int iValCount = ValList.Count(); if (iValCount > 0) { arraySample = new string[iValCount]; for (int i = 0; i < iValCount; i++) { arraySample[i] = ValList[i]; } } else { arraySample = new string[3] { "", "", "" }; } m_RstProp.PropGrid[Row, 2] = new SourceGrid.Cells.Cell(SampleVal); m_ComboboxText = new SourceGrid.Cells.Editors.ComboBox(typeof(string), arraySample, true); m_RstProp.PropGrid[Row, 2].Editor = m_ComboboxText; m_ComboboxText.Control.DropDownStyle = ComboBoxStyle.DropDownList; //设置下拉框为不可以编辑的状态 m_RstProp.PropGrid[Row, 2].Value = SampleVal; m_RstProp.PropGrid[Row, 2].AddController(m_ChangeCellValEvent); m_RstProp.PropGrid[Row, 2].AddController(m_ValChangeEvent2); m_ComboboxText.EditableMode = EditableMode.SingleClick; } catch (Exception) { } break; case OTS_ITEM_TYPES.DOUBLE: var txtbox = new SourceGrid.Cells.Editors.TextBoxNumeric(typeof(double)); m_RstProp.PropGrid[Row, 2] = new SourceGrid.Cells.Cell(SampleVal); txtbox.EditableMode = EditableMode.SingleClick; m_RstProp.PropGrid[Row, 2].Editor = txtbox; m_RstProp.PropGrid[Row, 2].AddController(m_ChangeCellValEvent); m_RstProp.PropGrid[Row, 2].AddController(m_ValChangeEvent2); break; default: break; } if (bReadOnly) //只读模式 { m_RstProp.PropGrid[Row, 2].Editor = null; m_RstProp.PropGrid[Row, 2].View = M_Col_readonly;// 设置只读 } else { m_RstProp.PropGrid[Row, 2].View = m_Col_ValMode; } //行绑定ID值 m_RstProp.PropGrid.Rows[Row].Tag = SampleID; //数据位置绑定数据类型 m_RstProp.PropGrid[Row, 2].Tag = SampleValType; } else { m_RstProp.PropGrid[Row, 2].Value = SampleVal; } } #endregion #region 属性Grid与各功能模块操作等方法 /// /// 根据样品属性 显示对应的图表 /// /// 标签索引 /// 属性中选择的图表名称 public void ShowDataDiagram(int tabindex) { int sourceid = m_RstProp.m_ReportApp.WorkingResult; var projFileMgrClr1 = m_RstProp.m_ReportApp.resultFilesList[sourceid]; var prop = m_RstProp.m_ReportApp.SourceGridData; String m_fileName = projFileMgrClr1.FileName; tabIndex = (int)m_RstProp.tabIndex; #region 对各窗体模块进行实际加载的代码 switch (tabIndex) { //分析图 case (int)DisplayPicutureType.AnalyzeImg://第一页选项窗体,分析图 m_RstProp.m_ReportApp.m_RibbonFun.SetRibbonButnStatu_ByModule(DisplayPicutureType.AnalyzeImg); int idx = m_RstProp.m_ReportApp.m_DataMgrFun.GetSampleIndexByPropItemName(m_RstProp.m_ReportApp.SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE); int display = prop.SampleDataList[idx].comboDownList.IndexOf(prop.SampleDataList[idx].itemVal.ToString()); if (display == 0) { //分布图对象为空,或当前显示的与在测量结果中选择的不匹配,则重新加载 if (null != m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE) { if (m_fileName != m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.ShowSourceName) { //如果已经不是原先的数据源,则需要重新加载,设定为空,后面重新加载 m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE = null; } } //不需重新加载,则加载条件 if (m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE != null) { m_RstProp.m_ReportApp.m_SImageWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.DataSourceID = sourceid; m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.ShowSourceName = m_fileName; m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_SImageWindow.Controls.Add(m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE); m_RstProp.m_ReportApp.m_SImageWindow.Activate(); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.DrawDistrbutionImageAndBSE_ByQuery(m_RstProp.m_ReportApp.SourceGridData); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.SetSelectParticle(m_RstProp.m_ReportApp.SelectedParticles); idx = m_RstProp.m_ReportApp.m_DataMgrFun.GetSampleIndexByPropItemName(m_RstProp.m_ReportApp.SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE); string ImageType = prop.SampleDataList[idx].itemVal.ToString(); //切换分布图显示方式 m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.ShowMode(ImageType); } else if (m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE == null) { m_RstProp.m_ReportApp.m_SImageWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE = new OTSIncAReportGraph.Controls.Control_DrawDistrbutionImageAndBSE(m_RstProp.m_ReportApp); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.DataSourceID = sourceid; m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.ShowSourceName = m_fileName; m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_SImageWindow.Controls.Add(m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE); m_RstProp.m_ReportApp.m_SImageWindow.Activate(); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.DrawDistrbutionImageAndBSE_ByQuery(m_RstProp.m_ReportApp.SourceGridData); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionImageAndBSE.SetSelectParticle(m_RstProp.m_ReportApp.SelectedParticles); } } else { //排列图为空,或与在测量结果中选择的名字不一致时,则重新加载 if (null != m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage) { if (m_fileName != m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.ShowSourceName) { //如果已经不是原先的数据源,则需要重新加载,设定为空,后面重新加载 m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage = null; } } //不需重新加载,则加载条件 if (m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage != null) { m_RstProp.m_ReportApp.m_SImageWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.DataSourceID = sourceid; m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.ShowSourceName = m_fileName; m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_SImageWindow.Controls.Add(m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage); m_RstProp.m_ReportApp.m_SImageWindow.Activate(); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.Control_DrawDistrbutionSortImage_ByQuery(m_RstProp.m_ReportApp.SourceGridData); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.SetSelectParticle(m_RstProp.m_ReportApp.SelectedParticles); //判断当前点击测量结果中的数据源名,是否与已经加载的排序图显示的数据源名相同 if (m_fileName == m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.ShowSourceName) { //相同,加载计算条件 // m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.Control_DrawDistrbutionSortImage_ByQuery(listGriddataclr); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.SetSelectParticle(m_RstProp.m_ReportApp.SelectedParticles); idx = m_RstProp.m_ReportApp.m_DataMgrFun.GetSampleIndexByPropItemName(m_RstProp.m_ReportApp.SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE); string ImageType = prop.SampleDataList[idx].itemVal.ToString(); //切换BSE和分类,两种影像的显示方式 if (ImageType == "BSE") { m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.ShowMode(false); } else { m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.ShowMode(true); } return; } } else if (m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage == null) { m_RstProp.m_ReportApp.m_SImageWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage = new OTSIncAReportGraph.Controls.Control_DrawDistrbutionSortImage(m_RstProp.m_ReportApp); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.DataSourceID = sourceid; m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.ShowSourceName = m_fileName; m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_SImageWindow.Controls.Add(m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage); m_RstProp.m_ReportApp.m_SImageWindow.Activate(); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.Control_DrawDistrbutionSortImage_ByQuery(m_RstProp.m_ReportApp.SourceGridData); m_RstProp.m_ReportApp.im_Control_DrawDistrbutionSortImage.SetSelectParticle(m_RstProp.m_ReportApp.SelectedParticles); } } break; //分析数据表 case (int)DisplayPicutureType.AnalyzeDataTable: #region 第二页选项窗体,分析数据表 m_RstProp.m_ReportApp.m_RibbonFun.SetRibbonButnStatu_ByModule(DisplayPicutureType.AnalyzeDataTable); idx = m_RstProp.m_ReportApp.m_DataMgrFun.GetSampleIndexByPropItemName(m_RstProp.m_ReportApp.SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_TABLE_TYPE); int TableType = prop.SampleDataList[idx].comboDownList.IndexOf(prop.SampleDataList[idx].itemVal.ToString()); switch (TableType) { case 0: m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_ResultGrid = new ResultGrid(m_RstProp.m_ReportApp); m_RstProp.m_ReportApp.im_ResultGrid.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_ResultGrid); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); break; case 1: if (m_RstProp.m_ReportApp.im_ParticlesGridDevidePage != null && m_RstProp.m_ReportApp.im_ParticlesGridDevidePage.FileName == m_fileName) { m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_ParticlesGridDevidePage); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); } else { m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_ParticlesGridDevidePage = new OTSIncAReportGrids.ParticlesGridDevidePage(m_RstProp.m_ReportApp); m_RstProp.m_ReportApp.im_ParticlesGridDevidePage.FileName = m_fileName; m_RstProp.m_ReportApp.im_ParticlesGridDevidePage.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_ParticlesGridDevidePage); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); } break; case 2: m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_CompositionDistributionGrid = new CompositionDistributionGrid(m_RstProp.m_ReportApp); m_RstProp.m_ReportApp.im_CompositionDistributionGrid.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_CompositionDistributionGrid); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); break; case 3: m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_ElementContentGrid = new ElementContentGrid(m_RstProp.m_ReportApp); m_RstProp.m_ReportApp.im_ElementContentGrid.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_ElementContentGrid); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); break; case 4://颗粒尺寸分布表 m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_ParticlesSizeGrid = new ParticlesSizeGrid(m_RstProp.m_ReportApp); m_RstProp.m_ReportApp.im_ParticlesSizeGrid.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_ParticlesSizeGrid); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); break; case 5: m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_ElementCompositionAvgGrid = new ElementCompositionAvgGrid(m_RstProp.m_ReportApp); m_RstProp.m_ReportApp.im_ElementCompositionAvgGrid.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_ElementCompositionAvgGrid); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); break; case 6: //国标一 string resultfile = m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FilePath + "\\" + m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FileName; m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.AddASmplMsrResultMgr(resultfile); OTSCLRINTERFACE.CPropParamClr clr_prop = m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.GetPropertyParamTable(); clr_prop.SetDataSourceId(0);// clr_prop.SetType(1);//table clr_prop.SetCalTableType(6);//国标1 List listGriddataclr = m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.GridDataTransfer(clr_prop);// m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_ChineseStandardABCDDS = new ChineseStandardABCDDS(m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr, listGriddataclr); m_RstProp.m_ReportApp.im_ChineseStandardABCDDS.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_ChineseStandardABCDDS); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); //OpenOTSINcAreportTemplateAPP(m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FilePath+"\\" // + m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FileName, "GB1"); break; case 7: //国标二 string resultfile2 = m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FilePath + "\\" + m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FileName; m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.AddASmplMsrResultMgr(resultfile2); OTSCLRINTERFACE.CPropParamClr clr_prop2 = m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.GetPropertyParamTable(); clr_prop2.SetDataSourceId(0);// clr_prop2.SetType(1);//table clr_prop2.SetCalTableType(7);//国标2 List listGriddataclr2 = m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.GridDataTransfer(clr_prop2);// m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_NationalStandardMethodTwo = new NationalStandardMethodTwo(m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr, listGriddataclr2); m_RstProp.m_ReportApp.im_NationalStandardMethodTwo.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_NationalStandardMethodTwo); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); //OpenOTSINcAreportTemplateAPP(m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FilePath + "\\" // + m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FileName, "GB2"); break; case 8: //美标 string resultfile3 = m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FilePath + "\\" + m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FileName; m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.AddASmplMsrResultMgr(resultfile3); OTSCLRINTERFACE.CPropParamClr clr_prop3 = m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.GetPropertyParamTable(); clr_prop3.SetDataSourceId(0);// clr_prop3.SetType(1);//table clr_prop3.SetCalTableType(8); List listGriddataclr3 = m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.GridDataTransfer(clr_prop3); m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_ASTMStandardABCDDS = new ASTMStandardABCDDS(m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr, listGriddataclr3); m_RstProp.m_ReportApp.im_ASTMStandardABCDDS.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_ASTMStandardABCDDS); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); //OpenOTSINcAreportTemplateAPP(m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FilePath + "\\" // + m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FileName, "ASTM"); break; case 9: //德标 string resultfile4 = m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FilePath + "\\" + m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FileName; m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.AddASmplMsrResultMgr(resultfile4); OTSCLRINTERFACE.CPropParamClr clr_prop4 = m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.GetPropertyParamTable(); clr_prop4.SetDataSourceId(0);// clr_prop4.SetType(1);//table clr_prop4.SetCalTableType(9); List listGriddataclr4 = m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr.GridDataTransfer(clr_prop4); m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Clear(); m_RstProp.m_ReportApp.im_DINStandardABCDDS = new DINStandardABCDDS(m_RstProp.m_ReportApp.m_DataMgrFun.m_ReportMgr, listGriddataclr4); m_RstProp.m_ReportApp.im_DINStandardABCDDS.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CTablesWindow.Controls.Add(m_RstProp.m_ReportApp.im_DINStandardABCDDS); m_RstProp.m_ReportApp.m_CTablesWindow.Activate(); //OpenOTSINcAreportTemplateAPP(m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FilePath + "\\" // + m_RstProp.m_ReportApp.resultFilesList[m_RstProp.m_ReportApp.WorkingResult].FileName, "DIN"); break; } #endregion 第二页选项窗体,分析数据表 break; //分析数据图 case (int)DisplayPicutureType.AnalyzeDataChart: m_RstProp.m_ReportApp.m_RibbonFun.SetRibbonButnStatu_ByModule(DisplayPicutureType.AnalyzeDataChart); #region 第三页选项窗体,分析数据图 m_RstProp.m_ReportApp.m_CChartsWindow.Controls.Clear(); string m_reportname = ""; string m_str_AxisY = ""; string str_operatonmodule = ""; idx = m_RstProp. m_ReportApp.m_DataMgrFun.GetSampleIndexByPropItemName(m_RstProp.m_ReportApp.SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_CHART_TYPE); int ChartType = prop.SampleDataList[idx].comboDownList.IndexOf(prop.SampleDataList[idx].itemVal.ToString()); switch (ChartType) { case 0: m_reportname = table["m_reportname1"].ToString();//常用夹杂物分类 m_str_AxisY = table["m_str_axisy1"].ToString(); str_operatonmodule = table["str_operatonmodule1"].ToString(); m_RstProp.m_ReportApp.im_EChart_ParticlesComposition = new Control_ECharts.EChart_ParticlesComposition(m_RstProp.m_ReportApp, "CommonlyUsedClassify"); m_RstProp.m_ReportApp.im_EChart_ParticlesComposition.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_reportname = m_reportname; m_RstProp.m_ReportApp.im_EChart_ParticlesComposition.m_str_AxisY = m_str_AxisY; m_RstProp.m_ReportApp.type = "pie"; m_RstProp.m_ReportApp.m_CChartsWindow.Controls.Add(m_RstProp.m_ReportApp.im_EChart_ParticlesComposition); m_RstProp.m_ReportApp.m_CChartsWindow.Activate(); break; case 1: m_reportname = table["m_reportname2"].ToString();//颗粒成分 m_str_AxisY = table["m_str_axisy2"].ToString();//颗粒数 str_operatonmodule = table["str_operatonmodule2"].ToString();//颗粒成分图 m_RstProp.m_ReportApp.im_EChart_ParticlesComposition = new Control_ECharts.EChart_ParticlesComposition(m_RstProp.m_ReportApp, "PComponent"); m_RstProp.m_ReportApp.im_EChart_ParticlesComposition.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_reportname = m_reportname; m_RstProp.m_ReportApp.im_EChart_ParticlesComposition.m_str_AxisY = m_str_AxisY; m_RstProp.m_ReportApp.type = "pie"; m_RstProp.m_ReportApp.m_CChartsWindow.Controls.Add(m_RstProp.m_ReportApp.im_EChart_ParticlesComposition); m_RstProp.m_ReportApp.m_CChartsWindow.Activate(); break; case 2: m_reportname = table["m_reportname3"].ToString();//元素成分 m_str_AxisY = table["m_str_axisy3"].ToString();//元素含量 str_operatonmodule = table["str_operatonmodule3"].ToString();//元素成分图 m_RstProp.m_ReportApp.im_EChart_ParticlesComposition = new Control_ECharts.EChart_ParticlesComposition(m_RstProp.m_ReportApp, "EComponent"); m_RstProp.m_ReportApp.im_EChart_ParticlesComposition.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_reportname = m_reportname; m_RstProp.m_ReportApp.im_EChart_ParticlesComposition.m_str_AxisY = m_str_AxisY; m_RstProp.m_ReportApp.type = "bar"; m_RstProp.m_ReportApp.m_CChartsWindow.Controls.Add(m_RstProp.m_ReportApp.im_EChart_ParticlesComposition); m_RstProp.m_ReportApp.m_CChartsWindow.Activate(); break; case 3://颗粒尺寸分布图 m_reportname = table["m_reportname4"].ToString();//颗粒尺寸分布 m_str_AxisY = table["m_str_axisy4"].ToString();//颗粒数 str_operatonmodule = table["str_operatonmodule4"].ToString();//颗粒尺寸分布图 m_RstProp.m_ReportApp.im_EChart_ParticlesComposition = new Control_ECharts.EChart_ParticlesComposition(m_RstProp.m_ReportApp, "PSize"); m_RstProp.m_ReportApp.im_EChart_ParticlesComposition.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_reportname = m_reportname; m_RstProp.m_ReportApp.im_EChart_ParticlesComposition.m_str_AxisY = m_str_AxisY; m_RstProp.m_ReportApp.type = "bar"; m_RstProp.m_ReportApp.m_CChartsWindow.Controls.Add(m_RstProp.m_ReportApp.im_EChart_ParticlesComposition); m_RstProp.m_ReportApp.m_CChartsWindow.Activate(); break; case 4: idx = m_RstProp. m_ReportApp.m_DataMgrFun.GetSampleIndexByPropItemName(m_RstProp. m_ReportApp.SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE); string TrioChartType = prop.SampleDataList[idx].itemVal.ToString(); List nameList = prop.SampleDataList[idx].comboDownList; int index = nameList.IndexOf(TrioChartType); str_operatonmodule = table["str_operatonmodule5"].ToString(); m_RstProp.m_ReportApp.im_EChart_Trianglediagram = new Control_ECharts.EChart_Trianglediagram(m_RstProp.m_ReportApp); m_RstProp.m_ReportApp.im_EChart_Trianglediagram.Template = ""; m_RstProp.m_ReportApp.im_EChart_Trianglediagram.Dock = DockStyle.Fill; m_RstProp.m_ReportApp.m_CChartsWindow.Controls.Add(m_RstProp.m_ReportApp.im_EChart_Trianglediagram); m_RstProp.m_ReportApp.m_CChartsWindow.Activate(); break; } #endregion 第三页窗体,分析数据图 break; } #endregion } /// /// 打开国标进程EXE /// private void OpenOTSINcAreportTemplateAPP(string str_path, string str_gbname) { //---------------------------------- //共传2个参数 //参数1:测量结果的路径,国标底层需要 //参数2:是打开的国标一,国标二,美标,德标,的类型 ProcessStartInfo process = new ProcessStartInfo(); process.FileName = "ReportGBExe\\OTSIncAReportGB.exe";//打开app的路径 string arg1 = str_path.Replace(" ", "^");//参数1,测量结果的路径 string arg2 = str_gbname.Trim().Replace(" ", "^");//参数2,是打开的类型 process.Arguments = string.Format("{0} {1}", arg1, arg2); //多个参数用空格隔开 process.WindowStyle = ProcessWindowStyle.Normal; Process.Start(process); } #endregion #region 与属性Grid相关的类 /// /// 与属性Grid操作事件对应的事件类,在该类中实现属性Grid的操作方法实现 /// class ChangeGridCellValEvent : SourceGrid.Cells.Controllers.ControllerBase { #region 变量定义 /// /// 属性Grid类对象全局变量 /// SampleGrid m_SampleGrid = null; private const int Constant = 1; #endregion #region 构造函数 /// /// 构造函数 /// /// public ChangeGridCellValEvent(SampleGrid SGrid) { m_SampleGrid = SGrid; } #endregion #region 下拉框事件 /// /// 属性Grid的下拉框下拉完成后,触发的事件。SourceGrid的事件不是用delegate方法实现的,与dot net 的标准事件实现方式不同,需要在这里override才可以 /// /// /// public override void OnValueChanged(SourceGrid.CellContext sender, EventArgs e) { OTSSampleMeaInfo SourceGridData = m_SampleGrid.m_RstProp.m_ReportApp.SourceGridData; int selindex = 0; foreach (var item in SourceGridData.SampleDataList) { if (item.iItemId == (OTS_REPORT_PROP_GRID_ITEMS)m_SampleGrid.m_RstProp.PropGrid.Rows[m_SampleGrid.m_ClickRow].Tag) { OTS_ITEM_TYPES ValType = item.iItemValType; switch (ValType) { case OTS_ITEM_TYPES.COMBO: item.itemVal = (string)m_SampleGrid.m_RstProp.PropGrid[m_SampleGrid.m_ClickRow, 2].Value; selindex = item.comboDownList.IndexOf(item.itemVal.ToString()); break; case OTS_ITEM_TYPES.DOUBLE: var dValue = m_SampleGrid.m_RstProp.PropGrid[m_SampleGrid.m_ClickRow, 2].Value; double v = Convert.ToDouble(dValue); item.itemVal = v; break; default: break; } break; } } int tabinex = (int)m_SampleGrid.m_RstProp.m_ReportApp.m_PropWindow.tabIndex; SourceGridData = m_SampleGrid.m_RstProp.m_ReportApp.m_DataMgrFun.ChangeSouceGrid(tabinex, (OTS_REPORT_PROP_GRID_ITEMS)m_SampleGrid.m_RstProp.PropGrid.Rows[m_SampleGrid.m_ClickRow].Tag, m_SampleGrid.m_RstProp.PropGrid[m_SampleGrid.m_ClickRow, 2].Value.ToString(), selindex); m_SampleGrid.m_RstProp.m_ReportApp.SourceGridData = SourceGridData; m_SampleGrid.m_RstProp.m_ReportApp.m_PropWindow.DisProperyWindow(SourceGridData); } #endregion } /// /// 组合框类,与属性Grid关联 /// class ItemValueChange2 : SourceGrid.Cells.Controllers.ControllerBase { SampleGrid m_SampleGrid = null; public ItemValueChange2(SampleGrid SGrid) { m_SampleGrid = SGrid; } public override void OnValueChanged(CellContext sender, EventArgs e) { //判断如果对选择颗粒,全部颗粒进行了重新选择的话 if (sender.Position.Row == 2) m_SampleGrid.m_RstProp.m_ReportApp.im_ParticlesGridDevidePage = null;//需要重新刷新颗粒列表 //3,并根据CGridInClr条件从底层获取数据,并加载相应的模块 m_SampleGrid.ShowDataDiagram(m_SampleGrid.tabIndex); //------------------------------------------------------------------------------------------------------------------ m_SampleGrid.m_ClickRow = sender.Position.Row; if (m_SampleGrid.m_RstProp.PropGrid.Rows[m_SampleGrid.m_ClickRow].Tag != null) { m_SampleGrid.m_RstProp.m_ReportApp.m_RstWindow.SelectWorkSampleNode(); } } } #endregion } }