using OTSCLRINTERFACE; using OTSIncAReportApp.OTSSampleReportInfo; using OTSIncAReportApp.SysMgrTools; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; namespace OTSIncAReportApp.OTSDataMgrFunction { /// /// 框架与底层进行交互的操作类 /// public class DataMgrFun { #region 变量定义 /// 报告文件操作类 /// public CReportMgrClr m_ReportMgr = null; /// /// 报告主进程框架对象 /// private frmReportApp m_ReportApp = null; #endregion #region 构造函数 /// /// 构造函数 /// /// public DataMgrFun(frmReportApp ReportApp) { m_ReportApp = ReportApp; Language lan = new Language(); table = lan.GetNameTable("DataMgrFun"); if (null == m_ReportMgr) { //初始化相关变量 m_ReportMgr = new CReportMgrClr(); } //m_pRptParamFileMgr = new CRptParamFileMgrClr(); //m_pRptParamFileMgr.SetRptParamFile(m_ReportProjFileMgr.GetRptParamFileClr()); } //国际化存储信息 Hashtable table; #endregion #region 获取组合项相关方法 /// /// 根据系统设置的默认粒级表路径,获取所有的粒级表文件List /// /// public List GetPartSizeFileList() { List ret_list = new List(); //遍历粒级文件夹 DirectoryInfo theFolder = new DirectoryInfo(m_ReportApp.m_RptConfigFile.FileFolderSize); if (!theFolder.Exists) return ret_list; //读取遍历粒级文件信息 foreach (FileInfo nextifile in theFolder.GetFiles()) { //找出粒级文件 if (nextifile.Name.Contains(".psf") == true || nextifile.Name.Contains(".PSF") == true) { ret_list.Add(nextifile.Name); } } return ret_list; } /// /// 根据系统设置默认的粒级表的路径,获取粒级表List /// /// /// public List GetPartSizeList() { DataSet ds = DataOperation.DataAccess.XMLoperate.GetXml(m_ReportApp.m_RptConfigFile.FileFolderSize + m_ReportApp.m_RptConfigFile.PartSizeFile); string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString(); List sizeList = new List(); for (int i = 0; i < sizestr.Split(',').Length - 1; i++) { if (sizestr.Split(',')[i].Length > 0) { double d1 = Convert.ToDouble(sizestr.Split(',')[i]); double d2 = Convert.ToDouble(sizestr.Split(',')[i + 1]); sizeList.Add(d1.ToString() + "~" + d2.ToString()); } } double d = Convert.ToDouble(sizestr.Split(',')[sizestr.Split(',').Length - 1]); sizeList.Add(d.ToString() + "~MAX"); return sizeList; } /// /// 根据传入的粒级表目录,获取粒级表List /// /// public List GetPartSizeList(string path) { DataSet ds = DataOperation.DataAccess.XMLoperate.GetXml(path); string sizestr = ds.Tables[0].Rows[0]["Sizes"].ToString(); List sizeList = new List(); for (int i = 0; i < sizestr.Split(',').Length - 1; i++) { if (sizestr.Split(',')[i].Length > 0) { double d1 = Convert.ToDouble(sizestr.Split(',')[i]); double d2 = Convert.ToDouble(sizestr.Split(',')[i + 1]); sizeList.Add(d1.ToString() + "~" + d2.ToString()); } } double d = Convert.ToDouble(sizestr.Split(',')[sizestr.Split(',').Length - 1]); sizeList.Add(d.ToString() + "~MAX"); return sizeList; } /// /// 获取三元相图模板名称列表 /// /// public List GetTriTemplateNameList() { string pathtpf = m_ReportApp.m_RptConfigFile.FileFolderTrigTemp + m_ReportApp.m_RptConfigFile.TriTempFile; List ret_list = new List(); DataSet ds = DataOperation.DataAccess.XMLoperate.GetXmlData(pathtpf, "XMLData"); DataTable dt = ds.Tables["Member"]; foreach (DataRow item in dt.Rows) { if (item["TemplateName"].ToString() != "") { ret_list.Add(item["TemplateName"].ToString()); } } return ret_list; } /// /// 获取测量结果名称列表 /// /// public List GetSampleListName() { List ret_list = new List(); var resultfileList = m_ReportApp.resultFilesList; foreach (var item in resultfileList) { ret_list.Add(item.FileName); } if (m_ReportApp.MoreSource != "") { ret_list.Add(m_ReportApp.MoreSource); } return ret_list; } /// /// 获取计算方法列表 /// /// public List GetSizeCalMethodTypeList() { List ret_list = new List() { "DMAX", "DMIN", "Area", "FERET" }; return ret_list; } /// /// 数据类型,全部颗粒,分析颗粒 /// /// public List GetDataSourceTypeList() { string sscaptionname23 = table["sscaptionname23"].ToString(); string sscaptionname24 = table["sscaptionname24"].ToString(); List ret_list = new List() { sscaptionname23, sscaptionname24 }; return ret_list; } #endregion #region [属性选项Grid窗体]相关封装方法 /// /// 界面显示Grid /// private SampleData NewGridData(int tbindex, OTS_REPORT_PROP_GRID_ITEMS iItemId, string sSCaptionName, OTS_ITEM_TYPES iItemValType, bool bReadOnly, string sDescriptionInfo, object itemVal, List comboDownList) { string text = ""; string des = "" ; string downlist = ""; //OTSDataType.XmlResourceData.GetInstance().GetStringByKey(tbindex, 20000,ref text, ref des, ref downlist); SampleData sampleData = new SampleData(); sampleData.iItemId = iItemId; sampleData.sSCaptionName = sSCaptionName; sampleData.iItemValType = iItemValType; sampleData.bReadOnly = bReadOnly; sampleData.sDescriptionInfo = des; //if (comboDownList.Count==0) //{ // List liststr = new List(); // if (downlist!="") // { // string[] arrTemp = downlist.Split(','); // for (int i = 0; i < arrTemp.Count(); i++) // { // liststr.Add(arrTemp[i]); // } // sampleData.itemVal = liststr[0]; // sampleData.comboDownList = liststr; // } // else // { // sampleData.itemVal = "0"; // sampleData.comboDownList = liststr; // } //} //else //{ sampleData.itemVal = itemVal; sampleData.comboDownList = comboDownList; //} return sampleData; } /// /// 初始化加载sourceGrid各项 /// /// /// SampleData1 private List GetSourceGridData(int tbindex) { List list = new List(); if (tbindex == 0)//分布图页 { //测量结果数据 List list_source_str = GetSampleListName(); list.Add(NewGridData(tbindex, 0, table["sscaptionname1"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Select Measurement Result", list_source_str[m_ReportApp.WorkingResult], list_source_str)); //bse,颗粒分类图 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE, table["sscaptionname2"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Survey Chart Type", "BSE", new List() { "BSE", table["sscaptionname13"].ToString(), "Original", "原图颗粒分布" })); //测量图类型 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE, table["sscaptionname3"].ToString(), OTS_ITEM_TYPES.COMBO, false, "chart display mode", table["sscaptionname14"].ToString(), new List() { table["sscaptionname14"].ToString(), table["sscaptionname15"].ToString() })); //测量图显示方式 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE, table["sscaptionname4"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Particle Type", table["sscaptionname16"].ToString(), new List() { table["sscaptionname16"].ToString(), table["sscaptionname17"].ToString() })); //粒级表 List list_partsizelist = GetPartSizeFileList();//从系统默认的路径中查找出所有的粒级表文件 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE, "粒级表", OTS_ITEM_TYPES.COMBO, false, "Particle Table", list_partsizelist[0], list_partsizelist)); //粒级 List sizeList = GetPartSizeList();//获取粒级后额外增加全部,自定义,选项 sizeList.Insert(0, table["sscaptionname16"].ToString());//全部 sizeList.Insert(1, table["sscaptionname18"].ToString());//自定义 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS, table["sscaptionname5"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Grain Size", table["sscaptionname16"].ToString(), sizeList)); //自定义最小 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN, table["sscaptionname6"].ToString(), OTS_ITEM_TYPES.DOUBLE, false, "Smallest Particle", "0",new List { })); //自定义最大 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX, table["sscaptionname7"].ToString(), OTS_ITEM_TYPES.DOUBLE, false, "Maximum Particle","0",new List { })); //测量数据 List list3 = new List() { table["sscaptionname19"].ToString(), table["sscaptionname20"].ToString(), table["sscaptionname21"].ToString() }; list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE, table["sscaptionname22"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Measured Data", list3[0], list3)); //计算方式 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE, table["sscaptionname8"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Dimension calculation method", "DMAX", GetSizeCalMethodTypeList())); } else if (tbindex == 1)//Grid表格页 { //测量结果数据 List list_source_str = GetSampleListName(); list.Add(NewGridData(tbindex,0, table["sscaptionname1"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Select Measurement Result", list_source_str[m_ReportApp.WorkingResult], list_source_str)); //数据类型 List list_datasourcetypelist = GetDataSourceTypeList(); list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE, table["sscaptionname9"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Data Type", list_datasourcetypelist[0], list_datasourcetypelist)); //数据表类型 //string sSCaptionName10 = table["sscaptionname10"].ToString(); List list2 = new List() { table["sscaptionname25"].ToString(), table["sscaptionname26"].ToString(), table["sscaptionname27"].ToString(), table["sscaptionname28"].ToString(), table["sscaptionname29"].ToString(), table["sscaptionname30"].ToString()}; string[] aa = m_ReportApp.Text.Split('-'); List listStd = new List() { "国标一", "国标二", "美标", "德标" }; list2.AddRange(listStd); list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_TABLE_TYPE, table["sscaptionname10"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Data table type", list2[0], list2)); //粒级表 List list_partsizelist = GetPartSizeFileList();//从系统默认的路径中查找出所有的粒级表文件 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE, "粒级表", OTS_ITEM_TYPES.COMBO, false, "Particle Table", list_partsizelist[0], list_partsizelist)); //尺寸计算方法 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE, table["sscaptionname8"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Dimension Calculation Method", "DMAX", GetSizeCalMethodTypeList())); } else if (tbindex == 2)//Chart图页 { //测量结果数据 List list_source_str = GetSampleListName(); list.Add(NewGridData(tbindex,0, table["sscaptionname1"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Select Measurement Result", list_source_str[m_ReportApp.WorkingResult], list_source_str)); //数据类型 List list_datasourcetypelist = GetDataSourceTypeList(); list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE, table["sscaptionname9"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Data Type", list_datasourcetypelist[0], list_datasourcetypelist)); //数据图类型 List list2 = new List() { "常用夹杂物分类", table["sscaptionname27"].ToString(), table["sscaptionname28"].ToString(), table["sscaptionname29"].ToString(), table["sscaptionname12"].ToString() }; list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_CHART_TYPE, table["sscaptionname10"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Data graph type", list2[0], list2)); //三元相图模板 List trio_listname = GetTriTemplateNameList(); list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE, table["sscaptionname12"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Ternary phase diagram", trio_listname.First(), trio_listname)); //粒级表 List list_partsizelist = GetPartSizeFileList(); list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE, "粒级表", OTS_ITEM_TYPES.COMBO, false, "Particle Table", list_partsizelist[0], list_partsizelist)); //尺寸计算法 list.Add(NewGridData(tbindex,OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE, table["sscaptionname8"].ToString(), OTS_ITEM_TYPES.COMBO, false, "Dimension Calculation Method", "DMAX", GetSizeCalMethodTypeList())); } return list; } /// /// 分发SourceGrid,各选项值改变事件 /// /// /// /// /// /// public OTSSampleMeaInfo ChangeSouceGrid(int tbindex, OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel) { OTSSampleMeaInfo ret = new OTSSampleMeaInfo(); ret = m_ReportApp.SourceGridDataList[tbindex]; switch (tbindex) { case 0: ret = ChangeSouceGrid_Image(typ, val, sel); break; case 1: ret = ChangeSouceGrid_Grid(typ, val, sel); break; case 2: ret = ChangeSouceGrid_Chart(typ, val, sel); break; } return ret; } /// /// SourceGrid,分析图页面组合各项方法 /// /// /// /// /// public OTSSampleMeaInfo ChangeSouceGrid_Image(OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel) { OTSSampleMeaInfo ret = new OTSSampleMeaInfo(); ret = m_ReportApp.SourceGridDataList[0]; //string strlist = ret.TSampleParam.sSampleTitleName; List list_showgrid_item = ret.TSampleParam.List_ShowGrid_Items; //测量结果数据 if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE) { if (val.Contains("+")) { ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)].itemVal = val; } else { DataOperation.Model.ResultFile resultFile = m_ReportApp.resultFilesList.Find(s => s.FileName == val); int index = m_ReportApp.resultFilesList.IndexOf(resultFile); m_ReportApp.WorkingResult = index; } } //测量图类型 if (typ == OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE) { } ////--------------------------------------------------------------- //测量图显示方式 if (typ == OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE) { if (sel == 0)//选择分布图 { //strlist = ",0,2,3,7,10,13,"; list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3 OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE,//7 OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10 OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13 if (ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE)].comboDownList.IndexOf(ret.SampleDataList[4].itemVal.ToString()) != 0) { //strlist = ",0,2,3,7,10,11,12,13,"; list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3 OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE,//7 OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10 OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN,//11 OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX,//12 OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13 } } else if (sel == 1)//选择排序图时 { //strlist = ",0,2,3,4,13,"; list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3 OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4 OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13 } } //颗粒类型 if (typ == OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE) { } //测量数据 if (typ == OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE) { if (sel == 0)//全部颗粒类型 { //strlist = ",0,2,3,4,13,"; list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3 OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4 OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13 } else if (sel == 1)//分析颗粒类型 { list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3 OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4 OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13 } else if (sel == 2)//颗粒尺寸类型 { list_showgrid_item = new List(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3 OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4 OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE,//9 OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10 OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13 } } //颗粒粒级表 if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE) { //点击下拉框,级联联动事件 int idx = m_ReportApp.m_DataMgrFun.GetSampleIndexByPropItemName(m_ReportApp.SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE); List list_partsize = GetPartSizeList(m_ReportApp.m_RptConfigFile.FileFolderSize + ret.SampleDataList[idx].itemVal.ToString()); List list_partsizeChart = new List(); for (int i = 0; i < ret.SampleDataList[idx].comboDownList.Count;i++) list_partsizeChart.Add(ret.SampleDataList[idx].comboDownList[i].ToString()); string sscaptionname16 = table["sscaptionname16"].ToString(); string sscaptionname18 = table["sscaptionname18"].ToString(); list_partsize.Insert(0, sscaptionname16);//全部 list_partsize.Insert(1, sscaptionname18);//自定义 ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)].itemVal = ret.SampleDataList[idx].itemVal.ToString(); ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)].comboDownList = list_partsizeChart; ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS)].comboDownList = list_partsize; m_ReportApp.m_RptConfigFile.PartSizeFile = ret.SampleDataList[idx].itemVal.ToString(); } //粒级 if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS) { switch (sel) { case 0: list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);//11 list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);//12 break; case 1: if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN)) { list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);//11 list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);//12 } ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN)].bReadOnly = false; ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN)].itemVal = "0"; ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX)].bReadOnly = false; ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX)].itemVal = "0"; break; default: if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN)) { list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);//11 list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);//12 } string[] v = ret.SampleDataList[5].itemVal.ToString().Split('~'); ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN)].bReadOnly = true; ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN)].itemVal = v[0]; ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX)].bReadOnly = true; ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX)].itemVal = v[1]; break; } } //尺寸计算法 if (typ == OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE) { } //ret.TSampleParam.sSampleTitleName = strlist; ret.TSampleParam.List_ShowGrid_Items = list_showgrid_item; ret = FilterData(ret); return ret; } /// /// /// /// /// /// public int GetSampleIndexByPropItemName(List in_list_sampledata, OTS_REPORT_PROP_GRID_ITEMS in_orpgi) { for (int i = 0; i < in_list_sampledata.Count; i++) { if (in_list_sampledata[i].iItemId == in_orpgi) { return i; } } return -1; } /// /// SourceGrid,Grid表格部份组合各项方法 /// /// /// /// /// public OTSSampleMeaInfo ChangeSouceGrid_Grid(OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel) { OTSSampleMeaInfo ret = new OTSSampleMeaInfo(); ret = m_ReportApp.SourceGridDataList[1]; //string strlist = ret.TSampleParam.sSampleTitleName; List list_showgrid_item = ret.TSampleParam.List_ShowGrid_Items; //测量结果数据 if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE) { if (val.Contains("+")) { ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)].itemVal = val; } else { DataOperation.Model.ResultFile resultFile = m_ReportApp.resultFilesList.Find(s => s.FileName == val); int index = m_ReportApp.resultFilesList.IndexOf(resultFile); m_ReportApp.WorkingResult = index; } } //数据类型 if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE) { } //数据表类型 if (typ == OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_TABLE_TYPE) { switch (sel) { case 2://颗粒成份 if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE))//13 { list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE); } list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);//9 break; case 4://颗粒尺寸分布 if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE))//9 { list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE); } if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE))//13 { list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE); } break; default://其它Grid模块不需要,粒级表和尺寸计算法 list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);//9 //list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);//13 break; } } //颗粒粒级表 if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE) { m_ReportApp.m_RptConfigFile.PartSizeFile = ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)].itemVal.ToString(); } //尺寸计算方法 if (typ == OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE) { } //ret.TSampleParam.sSampleTitleName = strlist; ret.TSampleParam.List_ShowGrid_Items = list_showgrid_item; ret = FilterData(ret); return ret; } /// /// SourceGrid,Chart图表部份组合各项方法 /// /// /// /// /// public OTSSampleMeaInfo ChangeSouceGrid_Chart(OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel) { OTSSampleMeaInfo ret = new OTSSampleMeaInfo(); ret = m_ReportApp.SourceGridDataList[2]; //string strlist = ret.TSampleParam.sSampleTitleName; List list_showgrid_item = ret.TSampleParam.List_ShowGrid_Items; //测量结果数据 if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE) { if (val.Contains("+")) { //ret.SampleDataList[1].bReadOnly = true; //ret.SampleDataList[1].itemVal = ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)].comboDownList[0]; ret.SampleDataList[0].itemVal = val; } else { //ret.SampleDataList[1].bReadOnly = false; DataOperation.Model.ResultFile resultFile = m_ReportApp.resultFilesList.Find(s => s.FileName == val); int index = m_ReportApp.resultFilesList.IndexOf(resultFile); m_ReportApp.WorkingResult = index; } } //数据类型 if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE) { } //数据图类型 if (typ == OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_CHART_TYPE) { switch (sel) { case 4://三元相图 if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE) && !list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE) && !list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)) { list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE); list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE); list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);//15 } else if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE)) { list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);//15 } break; case 3://颗粒尺寸分布图 if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE))//9 { list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE); } if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE))//13 { list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE); } if (list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE))//15 { list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE); } break; default: list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE); list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);//15 break; } } //三元相图模板 if (typ == OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE) { } //颗粒种类 if (typ == OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE) { } //颗粒粒级表 if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE) { m_ReportApp.m_RptConfigFile.PartSizeFile = ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)].itemVal.ToString(); } //尺寸计算方法 if (typ == OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE) { } //ret.TSampleParam.sSampleTitleName = strlist; ret.TSampleParam.List_ShowGrid_Items = list_showgrid_item; ret = FilterData(ret); return ret; } /// /// 按照枚举字符串,过滤Source掉不显示的项 /// /// /// private OTSSampleMeaInfo FilterData(OTSSampleMeaInfo source) { OTSSampleMeaInfo ret = new OTSSampleMeaInfo(); ret.TabIndex = source.TabIndex; //new List list_shogrid_items = source.TSampleParam.List_ShowGrid_Items; for (int i = 0; i < source.SampleDataList.Count; i++) { if (list_shogrid_items.Contains(source.SampleDataList[i].iItemId)) { ret.SampleDataList.Add(source.SampleDataList[i]); } } return ret; } /// /// 获取sourceGrid数据 /// /// /// public bool GetWorkSamplePropertyVal(ref OTSSampleMeaInfo SMeasureInfo) { int tabindex = (int)m_ReportApp.m_PropWindow.tabIndex; if (m_ReportApp.WorkingResult == -1) { return false; } if (m_ReportApp.SourceGridData.SampleDataList.Count > 0) { OTSSampleMeaInfo a = m_ReportApp.SourceGridData; //if (a.TSampleParam.sSampleTitleName == null) //{ // a.TSampleParam.sSampleTitleName = m_ReportApp.SourceGridDataListLog[a.TabIndex].TSampleParam.sSampleTitleName; //} //new if (a.TSampleParam.List_ShowGrid_Items == null) { a.TSampleParam.List_ShowGrid_Items = m_ReportApp.SourceGridDataListLog[a.TabIndex].TSampleParam.List_ShowGrid_Items; } m_ReportApp.SourceGridDataListLog[a.TabIndex] = a; OTSSampleMeaInfo b = m_ReportApp.SourceGridDataListLog[tabindex]; SMeasureInfo = FilterData(b); m_ReportApp.SourceGridData = SMeasureInfo; } else { OTSSampleMeaInfo data = new OTSSampleMeaInfo(); data.TabIndex = 0; //data.TSampleParam.sSampleTitleName = ",0,2,3,7,9,10,13,"; data.TSampleParam.List_ShowGrid_Items = new List { OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2 OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3 OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE,//7 OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE,//9 OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10 OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE};//13 data.SampleDataList = GetSourceGridData(0); m_ReportApp.SourceGridDataList.Add(data); m_ReportApp.SourceGridDataListLog.Add(data); OTSSampleMeaInfo data1 = new OTSSampleMeaInfo(); data1.TabIndex = 1; //data1.TSampleParam.sSampleTitleName = ",0,1,5,"; data1.TSampleParam.List_ShowGrid_Items = new List { OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0 OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE,//1 OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_TABLE_TYPE};//5 data1.SampleDataList = GetSourceGridData(1); m_ReportApp.SourceGridDataList.Add(data1); m_ReportApp.SourceGridDataListLog.Add(data1); OTSSampleMeaInfo data2 = new OTSSampleMeaInfo(); data2.TabIndex = 2; //data2.TSampleParam.sSampleTitleName = ",0,1,6,"; data2.TSampleParam.List_ShowGrid_Items = new List { OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0 OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE,//1 OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_CHART_TYPE }; //,//6 //OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE};//13 data2.SampleDataList = GetSourceGridData(2); m_ReportApp.SourceGridDataList.Add(data2); m_ReportApp.SourceGridDataListLog.Add(data2); switch (tabindex) { case 0: SMeasureInfo = FilterData(data); break; case 1: SMeasureInfo = FilterData(data1); break; case 2: SMeasureInfo = FilterData(data2); break; } m_ReportApp.SourceGridData = SMeasureInfo; } return true; } #endregion #region [测量结果treeview]相关封装方法 /// /// 获取测量结果treeview树测量结果名 /// /// public string GetSampleName() { //获取样品名 String sWorkSampleName = m_ReportApp.resultFilesList[m_ReportApp.WorkingResult].FileName; if (null == sWorkSampleName) { return ""; } return sWorkSampleName; } #endregion #region 自定义方法相关 /// /// 显示默认图表 /// public void ShowsTheDefaultPic() { try { if (m_ReportApp.resultFilesList.Count > 0) { m_ReportApp.m_PropWindow.m_SampleGrid.ShowDataDiagram((int)m_ReportApp.m_PropWindow.tabIndex); } } catch (Exception ex) { //日记记录 string str = ex.ToString(); } } #endregion } }