OTSSourceGrid.cs 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880
  1. using OTSIncAReportApp.OTSSampleReportInfo;
  2. using OTSIncAReportApp.SysMgrTools;
  3. using OTSIncAReportGB;
  4. using OTSIncAReportGrids;
  5. using SourceGrid;
  6. using System;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using System.Data;
  10. using System.Diagnostics;
  11. using System.Drawing;
  12. using System.Linq;
  13. using System.Windows.Forms;
  14. namespace OTSIncAReportApp.OTSDataMgrFunction
  15. {
  16. /// <summary>
  17. /// 属性Grid相关操作封装类
  18. /// </summary>
  19. public class OTSSourceGrid
  20. {
  21. #region 变量定义
  22. /// <summary>
  23. /// 主框架窗体
  24. /// </summary>
  25. public frmReportConditionChoose m_PropCondition = null;
  26. /// <summary>
  27. /// 当grid被click时,确定点击的行
  28. /// </summary>
  29. public int m_ClickRow = 0;
  30. /// <summary>
  31. /// 当grid被click时,确定点击的列
  32. /// </summary>
  33. public int m_ClickColumn = 0;
  34. /// <summary>
  35. /// 当改变ProperyWindow窗口大小时,窗口响应Resize(object sender, EventArgs e),返回改变后的尺寸,利用改变后的窗口尺寸重回Grid的行宽和列宽
  36. /// </summary>
  37. public int m_PropWindow_X = 0;
  38. /// <summary>
  39. /// 当改变ProperyWindow窗口大小时,窗口响应Resize(object sender, EventArgs e),返回改变后的尺寸,利用改变后的窗口尺寸重回Grid的行宽和列宽
  40. /// </summary>
  41. public int m_PropWindow_Y = 0;
  42. /// <summary>
  43. /// 临时用于计算用的grid行号 总行数
  44. /// </summary>
  45. public static int m_Const_Grid_Row = 42; //总行数
  46. /// <summary>
  47. /// 临时用于计算用的grid行号 总列数
  48. /// </summary>
  49. public static int m_Const_Grid_Column = 3; //总列数
  50. /// <summary>
  51. /// 当选择了Grid的某个row ,修改Row的值,引发的事件
  52. /// </summary>
  53. ChangeGridCellValEvent m_ChangeCellValEvent = null;
  54. /// <summary>
  55. /// 选择COMBOBOX值引发的事件
  56. /// </summary>
  57. ItemValueChange2 m_ValChangeEvent2 = null;
  58. /// <summary>
  59. /// 定义分栏表头样式
  60. /// </summary>
  61. public SourceGrid.Cells.Views.Cell m_Col_HeaderMode = null;
  62. /// <summary>
  63. /// 定义大表头grid表头样式
  64. /// </summary>
  65. SourceGrid.Cells.Views.Cell m_CellTitleModel = null;
  66. /// <summary>
  67. /// 定义分栏标题格样式
  68. /// </summary>
  69. SourceGrid.Cells.Views.Cell m_Col_NameMode = null;
  70. /// <summary>
  71. /// 定义分栏内容格样式
  72. /// </summary>
  73. SourceGrid.Cells.Views.Cell m_Col_ValMode = null;
  74. /// <summary>
  75. /// 只读样式cell设置
  76. /// </summary>
  77. SourceGrid.Cells.Views.Cell M_Col_readonly = null;
  78. /// <summary>
  79. /// 通用参数组的标题名
  80. /// </summary>
  81. public String m_Display_Mode_Name = "参数";
  82. /// <summary>
  83. /// 通用参数组的GRID行数
  84. /// </summary>
  85. public int m_Display_Mode_Row = 0;
  86. Language lan = new Language();
  87. Hashtable table;
  88. ResultDataMgr m_DataMgr;
  89. #endregion
  90. #region 构造函数及初始化函数
  91. public OTSSourceGrid(frmReportConditionChoose Propwindow)
  92. {
  93. m_DataMgr = Propwindow.m_ReportApp.m_DataMgrFun;
  94. m_PropCondition = Propwindow;
  95. m_PropCondition.PropGrid.Rows.Clear();
  96. m_PropCondition.PropGrid.Redim(m_Const_Grid_Row, m_Const_Grid_Column);
  97. table = lan.GetNameTable("SampleGrid");
  98. string str = table["str1"].ToString();
  99. m_Display_Mode_Name = str;
  100. }
  101. /// <summary>
  102. /// 初始化Grid修改值事件
  103. /// </summary>
  104. void InitChangeValEvent()
  105. {
  106. m_ChangeCellValEvent = new ChangeGridCellValEvent(this);
  107. m_ValChangeEvent2 = new ItemValueChange2(this);
  108. }
  109. #endregion
  110. #region 初始化属性Grid相关方法
  111. /// <summary>
  112. /// 初始化属性Grid相关样式
  113. /// </summary>
  114. public void InitGrid()
  115. {
  116. //初始化Grid修改值事件
  117. InitChangeValEvent();
  118. //定义大表头grid表头样式
  119. {
  120. m_CellTitleModel = new SourceGrid.Cells.Views.Cell();
  121. m_CellTitleModel.BackColor = Color.LightGray;
  122. m_CellTitleModel.ForeColor = Color.Black;
  123. m_CellTitleModel.TextAlignment = DevAge.Drawing.ContentAlignment.MiddleLeft;
  124. }
  125. //定义分栏表头样式
  126. {
  127. m_Col_HeaderMode = new SourceGrid.Cells.Views.Cell();
  128. m_Col_HeaderMode.BackColor = Color.LightGray; //背景色
  129. m_Col_HeaderMode.ForeColor = Color.Black; //字体颜色
  130. m_Col_HeaderMode.TextAlignment = DevAge.Drawing.ContentAlignment.MiddleCenter;
  131. }
  132. //定义分栏标题格样式
  133. {
  134. m_Col_NameMode = new SourceGrid.Cells.Views.Cell();
  135. m_Col_NameMode.TextAlignment = DevAge.Drawing.ContentAlignment.MiddleLeft;
  136. }
  137. //定义分栏内容格样式
  138. {
  139. m_Col_ValMode = new SourceGrid.Cells.Views.Cell();
  140. m_Col_ValMode.TextAlignment = DevAge.Drawing.ContentAlignment.MiddleLeft;
  141. }
  142. //只读样式cell设置
  143. {
  144. M_Col_readonly = new SourceGrid.Cells.Views.Cell();
  145. M_Col_readonly.ForeColor = Color.Gray;
  146. }
  147. }
  148. /// <summary>
  149. /// 初始化属性Grid相关表头
  150. /// </summary>
  151. public void InitGridTitlet()
  152. {
  153. int firstColumnWidth = 15; //第一列的宽度
  154. int SecondColumnWidth = 150;
  155. //设备各单元格宽度---------------------------------------------
  156. m_PropCondition.PropGrid.Columns.SetWidth(0, firstColumnWidth); //设置第一列宽度
  157. m_PropCondition.PropGrid.Columns.AutoSizeColumn(2); //固定进度条
  158. //ProperyWindows的窗口宽度包括是第二列和第三列的长度总和
  159. m_PropCondition.PropGrid.Columns.SetWidth(1, 150); //第二列宽度
  160. m_PropCondition.PropGrid.Columns.SetWidth(2, (m_PropWindow_X - firstColumnWidth - SecondColumnWidth - 18)); //第三列宽度
  161. }
  162. /// <summary>
  163. /// 初始化组的标题栏 iRow:GroupTitle的行号, sGroupName: GroupTitle的名字
  164. /// </summary>
  165. /// <param name="iRow"></param>
  166. /// <param name="sGroupName"></param>
  167. public void InitGroupTitle(int iRow, String sGroupName)
  168. {
  169. if (null == m_PropCondition.PropGrid[iRow, 0])
  170. {
  171. m_PropCondition.PropGrid[iRow, 0] = new SourceGrid.Cells.Link("-");//第一行,上面用来折叠的"-",一会点击后变成"+"
  172. m_PropCondition.PropGrid[iRow, 0].View = m_CellTitleModel; //设置表头的样式
  173. //设置表头"-"按钮,点击后的事件
  174. }
  175. if (null == m_PropCondition.PropGrid[iRow, 1])
  176. {
  177. m_PropCondition.PropGrid[iRow, 1] = new SourceGrid.Cells.Cell(sGroupName); // 设置GroupTitle的名字
  178. m_PropCondition.PropGrid[iRow, 1].View = m_CellTitleModel;
  179. m_PropCondition.PropGrid[iRow, 1].ColumnSpan = 2; //设置第二列与第三列合并,表头效果完成。 2:从当前列开始合并2列
  180. }
  181. }
  182. #endregion
  183. #region 属性Grid显示相关方法
  184. public void ShowGeneralGrid(ReportCondition conditionInfo)
  185. {
  186. if (conditionInfo.ConditionItemList.Count() == 0)
  187. return;
  188. int nGridRow = 0;
  189. string str = table["str2"].ToString();
  190. this.InitGroupTitle(nGridRow, str);
  191. nGridRow++;
  192. int Display_Mode_Row = 1;//确定跨行样式的跨行数变量
  193. // 设置样品Grid数据
  194. for (int i = 0; i < conditionInfo.ConditionItemList.Count; i++)
  195. {
  196. Display_Mode_Row++;
  197. //显示样品的属性值
  198. ConditionItem SData = conditionInfo.ConditionItemList[i];
  199. this.SetGridCellVal(nGridRow, SData);
  200. nGridRow++;
  201. }
  202. //控制左边的竖形条框栏的显示
  203. //第二行,第一列,为了效果美化,向下跨行,共跨m_Grid_TotleRow - 1行
  204. if (Display_Mode_Row > 1) //有通用参数组的Grid值显示
  205. {
  206. //获取Grid组Title所在的行号
  207. int iCurRow = Display_Mode_Row;
  208. //第二行的时候,需要定义左边的条框栏
  209. if (m_PropCondition.tabIndex == DisplayPicutureType.AnalyzeImg)
  210. {
  211. if (null == m_PropCondition.PropGrid[1 + 1, 0])
  212. {
  213. m_PropCondition.PropGrid[1, 0] = new SourceGrid.Cells.Cell("");
  214. m_PropCondition.PropGrid[1, 0].View = m_Col_HeaderMode;
  215. }
  216. else
  217. {
  218. m_PropCondition.PropGrid[iCurRow + 1, 0].Value = "";
  219. }
  220. if (iCurRow == 0)
  221. {
  222. m_PropCondition.PropGrid[iCurRow + 1, 0].RowSpan = iCurRow + Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数
  223. }
  224. else
  225. {
  226. m_PropCondition.PropGrid[1, 0].RowSpan = Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数
  227. }
  228. }
  229. if (m_PropCondition.tabIndex == DisplayPicutureType.AnalyzeDataTable)
  230. {
  231. //第二行的时候,需要定义左边的条框栏
  232. if (null == m_PropCondition.PropGrid[1 + 1, 0])
  233. {
  234. m_PropCondition.PropGrid[1, 0] = new SourceGrid.Cells.Cell("");
  235. m_PropCondition.PropGrid[1, 0].View = m_Col_HeaderMode;
  236. }
  237. else
  238. {
  239. m_PropCondition.PropGrid[iCurRow + 1, 0].Value = "";
  240. }
  241. if (iCurRow == 0)
  242. {
  243. m_PropCondition.PropGrid[iCurRow + 1, 0].RowSpan = iCurRow + Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数
  244. }
  245. else
  246. {
  247. m_PropCondition.PropGrid[1, 0].RowSpan = Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数
  248. }
  249. }
  250. if (m_PropCondition.tabIndex == DisplayPicutureType.AnalyzeDataChart)
  251. {
  252. //第二行的时候,需要定义左边的条框栏
  253. if (null == m_PropCondition.PropGrid[1, 0])
  254. {
  255. m_PropCondition.PropGrid[1, 0] = new SourceGrid.Cells.Cell("");
  256. m_PropCondition.PropGrid[1, 0].View = m_Col_HeaderMode;
  257. }
  258. else
  259. {
  260. m_PropCondition.PropGrid[iCurRow + 1, 0].Value = "";
  261. }
  262. if (iCurRow == 0)
  263. {
  264. m_PropCondition.PropGrid[iCurRow + 1, 0].RowSpan = iCurRow + Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数
  265. }
  266. else
  267. {
  268. m_PropCondition.PropGrid[1, 0].RowSpan = Display_Mode_Row - 1; //iCurRow + General_Totle_Row-1 : 去掉标题栏计数
  269. }
  270. }
  271. }
  272. }
  273. /// <summary>
  274. /// 显示Chart图表相关属性Grid
  275. /// </summary>
  276. /// <param name="note"></param>
  277. public void SetPictureType(DisplayPicutureType note)
  278. {
  279. m_PropCondition.tabIndex = note;
  280. }
  281. public void SetGridCellVal(int Row, ConditionItem SData)
  282. {
  283. OTS_REPORT_PROP_GRID_ITEMS SampleID = SData.iItemId;
  284. String sCaptionName = SData.sSCaptionName;
  285. object SampleVal = SData.itemVal;
  286. List<String> comboDownList = SData.comboDownList;
  287. OTS_ITEM_TYPES SampleValType = SData.iItemValType;
  288. bool bReadOnly = SData.bReadOnly;
  289. //每行的第一列显示属性名称
  290. if (null == m_PropCondition.PropGrid[Row, 1])
  291. {
  292. m_PropCondition.PropGrid[Row, 1] = new SourceGrid.Cells.Cell(sCaptionName);
  293. }
  294. else
  295. {
  296. m_PropCondition.PropGrid[Row, 1].Value = sCaptionName;
  297. }
  298. m_PropCondition.PropGrid[Row, 1].View = m_Col_NameMode;
  299. //每行的第二列显示属性值
  300. if (null == m_PropCondition.PropGrid[Row, 2])
  301. {
  302. switch (SData.iItemValType)
  303. {
  304. case OTS_ITEM_TYPES.COMBO:
  305. try
  306. {
  307. SourceGrid.Cells.Editors.ComboBox m_ComboboxText = null;
  308. List<string> ValList = new List<string>();
  309. string[] arraySample;
  310. if (null == comboDownList)
  311. {
  312. List<string> sSampleVal = new List<string>();
  313. ValList = sSampleVal;
  314. }
  315. else
  316. {
  317. ValList = (List<string>)comboDownList;
  318. }
  319. int iValCount = ValList.Count();
  320. if (iValCount > 0)
  321. {
  322. arraySample = new string[iValCount];
  323. for (int i = 0; i < iValCount; i++)
  324. {
  325. arraySample[i] = ValList[i];
  326. }
  327. }
  328. else
  329. {
  330. arraySample = new string[3] { "", "", "" };
  331. }
  332. m_PropCondition.PropGrid[Row, 2] = new SourceGrid.Cells.Cell(SampleVal);
  333. m_ComboboxText = new SourceGrid.Cells.Editors.ComboBox(typeof(string), arraySample, true);
  334. m_PropCondition.PropGrid[Row, 2].Editor = m_ComboboxText;
  335. m_ComboboxText.Control.DropDownStyle = ComboBoxStyle.DropDownList; //设置下拉框为不可以编辑的状态
  336. m_PropCondition.PropGrid[Row, 2].Value = SampleVal;
  337. m_PropCondition.PropGrid[Row, 2].AddController(m_ChangeCellValEvent);
  338. m_PropCondition.PropGrid[Row, 2].AddController(m_ValChangeEvent2);
  339. m_ComboboxText.EditableMode = EditableMode.SingleClick;
  340. }
  341. catch (Exception)
  342. {
  343. }
  344. break;
  345. case OTS_ITEM_TYPES.DOUBLE:
  346. var txtbox = new SourceGrid.Cells.Editors.TextBoxNumeric(typeof(double));
  347. m_PropCondition.PropGrid[Row, 2] = new SourceGrid.Cells.Cell(SampleVal);
  348. txtbox.EditableMode = EditableMode.SingleClick;
  349. m_PropCondition.PropGrid[Row, 2].Editor = txtbox;
  350. m_PropCondition.PropGrid[Row, 2].AddController(m_ChangeCellValEvent);
  351. m_PropCondition.PropGrid[Row, 2].AddController(m_ValChangeEvent2);
  352. break;
  353. default:
  354. break;
  355. }
  356. if (bReadOnly) //只读模式
  357. {
  358. m_PropCondition.PropGrid[Row, 2].Editor = null;
  359. m_PropCondition.PropGrid[Row, 2].View = M_Col_readonly;// 设置只读
  360. }
  361. else
  362. {
  363. m_PropCondition.PropGrid[Row, 2].View = m_Col_ValMode;
  364. }
  365. //行绑定ID值
  366. m_PropCondition.PropGrid.Rows[Row].Tag = SampleID;
  367. //数据位置绑定数据类型
  368. m_PropCondition.PropGrid[Row, 2].Tag = SampleValType;
  369. }
  370. else
  371. {
  372. m_PropCondition.PropGrid[Row, 2].Value = SampleVal;
  373. }
  374. }
  375. #endregion
  376. #region 属性Grid与各功能模块操作等方法
  377. /// <summary>
  378. /// 打开国标进程EXE
  379. /// </summary>
  380. private void OpenOTSINcAreportTemplateAPP(string str_path, string str_gbname)
  381. {
  382. //----------------------------------
  383. //共传2个参数
  384. //参数1:测量结果的路径,国标底层需要
  385. //参数2:是打开的国标一,国标二,美标,德标,的类型
  386. ProcessStartInfo process = new ProcessStartInfo();
  387. //process.FileName = "ReportGBExe\\OTSIncAReportGB.exe";//打开app的路径
  388. string arg1 = str_path.Replace(" ", "^");//参数1,测量结果的路径
  389. string arg2 = str_gbname.Trim().Replace(" ", "^");//参数2,是打开的类型
  390. process.Arguments = string.Format("{0} {1}", arg1, arg2); //多个参数用空格隔开
  391. process.WindowStyle = ProcessWindowStyle.Normal;
  392. Process.Start(process);
  393. }
  394. #endregion
  395. /// <summary>
  396. /// 分发SourceGrid,各选项值改变事件
  397. /// </summary>
  398. /// <param name="tbindex"></param>
  399. /// <param name="typ"></param>
  400. /// <param name="val"></param>
  401. /// <param name="sel"></param>
  402. /// <returns></returns>
  403. public ReportCondition ChangeSouceGrid(int tbindex, OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel)
  404. {
  405. //ReportCondition ret = new ReportCondition();
  406. var ret = m_PropCondition.SourceGridDataList[tbindex];
  407. switch (tbindex)
  408. {
  409. case 0:
  410. ret = ChangeSouceGrid_Image(typ, val, sel);
  411. break;
  412. case 1:
  413. ret = ChangeSouceGrid_Grid(typ, val, sel);
  414. break;
  415. case 2:
  416. ret = ChangeSouceGrid_Chart(typ, val, sel);
  417. break;
  418. }
  419. return ret;
  420. }
  421. /// <summary>
  422. /// SourceGrid,分析图页面组合各项方法
  423. /// </summary>
  424. /// <param name="typ"></param>
  425. /// <param name="val"></param>
  426. /// <param name="sel"></param>
  427. /// <returns></returns>
  428. public ReportCondition ChangeSouceGrid_Image(OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel)
  429. {
  430. //ReportCondition ret = new ReportCondition();
  431. var ret = m_PropCondition.SourceGridDataList[0];
  432. //string strlist = ret.TSampleParam.sSampleTitleName;
  433. List<OTS_REPORT_PROP_GRID_ITEMS> list_showgrid_item = ret.TSampleRst.List_ShowGrid_Items;
  434. //测量结果数据
  435. if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)
  436. {
  437. if (val.Contains("+"))
  438. {
  439. ret.SetPropByPropItemName( OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE, val);
  440. }
  441. else
  442. {
  443. DataOperation.Model.ResultFile resultFile = m_DataMgr.resultFilesList.Find(s => s.FileName == val);
  444. int index = m_DataMgr.resultFilesList.IndexOf(resultFile);
  445. m_DataMgr.WorkingResult = index;
  446. }
  447. }
  448. //测量图类型
  449. if (typ == OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE)
  450. {
  451. }
  452. ////---------------------------------------------------------------
  453. //测量图显示方式
  454. if (typ == OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE)
  455. {
  456. if (sel == 0)//选择分布图
  457. {
  458. //strlist = ",0,2,3,7,10,13,";
  459. list_showgrid_item = new List<OTS_REPORT_PROP_GRID_ITEMS>(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
  460. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
  461. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
  462. OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE,//7
  463. OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10
  464. OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
  465. int displaytypeIdx = ret.GetPropIndexByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE);
  466. if (displaytypeIdx != 0)
  467. {
  468. //strlist = ",0,2,3,7,10,11,12,13,";
  469. list_showgrid_item = new List<OTS_REPORT_PROP_GRID_ITEMS>(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
  470. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
  471. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
  472. OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE,//7
  473. OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10
  474. OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN,//11
  475. OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX,//12
  476. OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
  477. }
  478. }
  479. else if (sel == 1)//选择排序图时
  480. {
  481. //strlist = ",0,2,3,4,13,";
  482. list_showgrid_item = new List<OTS_REPORT_PROP_GRID_ITEMS>(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
  483. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
  484. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
  485. OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4
  486. OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
  487. }
  488. }
  489. //颗粒类型
  490. if (typ == OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE)
  491. {
  492. }
  493. //测量数据
  494. if (typ == OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE)
  495. {
  496. if (sel == 0)//全部颗粒类型
  497. {
  498. //strlist = ",0,2,3,4,13,";
  499. list_showgrid_item = new List<OTS_REPORT_PROP_GRID_ITEMS>(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
  500. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
  501. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
  502. OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4
  503. OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
  504. }
  505. else if (sel == 1)//分析颗粒类型
  506. {
  507. list_showgrid_item = new List<OTS_REPORT_PROP_GRID_ITEMS>(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
  508. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
  509. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
  510. OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4
  511. OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
  512. }
  513. else if (sel == 2)//颗粒尺寸类型
  514. {
  515. list_showgrid_item = new List<OTS_REPORT_PROP_GRID_ITEMS>(){OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE,//0
  516. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_TYPE,//2
  517. OTS_REPORT_PROP_GRID_ITEMS.IMAGE_DISPLAY_TYPE,//3
  518. OTS_REPORT_PROP_GRID_ITEMS.MEASURE_DATA_TYPE,//4
  519. OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE,//9
  520. OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS,//10
  521. OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE };//13
  522. }
  523. }
  524. //颗粒粒级表
  525. if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)
  526. {
  527. //点击下拉框,级联联动事件
  528. //int idx = m_ReportApp.m_DataMgrFun.GetSampleIndexByPropItemName(m_ReportApp.SourceGridData.SampleDataList, OTSIncAReportApp.OTSSampleReportInfo.OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
  529. var SourceGridData = ret;
  530. object Itmval = SourceGridData.GetItemvalByItemName(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
  531. List<string> list_partsize = m_DataMgr.GetPartSizeList(m_DataMgr.m_RptConfigFile.FileFolderSize + Itmval.ToString());
  532. List<string> list_partsizeChart = SourceGridData.GetComboDownListByItemName(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
  533. //for (int i = 0; i < ret.ConditionItemList[idx].comboDownList.Count; i++)
  534. // list_partsizeChart.Add(ret.ConditionItemList[idx].comboDownList[i].ToString());
  535. string sscaptionname16 = table["sscaptionname16"].ToString();
  536. string sscaptionname18 = table["sscaptionname18"].ToString();
  537. list_partsize.Insert(0, sscaptionname16);//全部
  538. list_partsize.Insert(1, sscaptionname18);//自定义
  539. //ret.ConditionItemList[GetSampleIndexByPropItemName(ret.ConditionItemList, OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)].itemVal = ret.ConditionItemList[idx].itemVal.ToString();
  540. ret.SetComboDownListByItemName( OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE, list_partsizeChart);
  541. ret.SetComboDownListByItemName( OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS, list_partsize);
  542. m_DataMgr.m_RptConfigFile.PartSizeFile = ret.GetItemvalByItemName(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
  543. }
  544. //粒级
  545. if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS)
  546. {
  547. switch (sel)
  548. {
  549. case 0:
  550. list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);//11
  551. list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);//12
  552. break;
  553. case 1:
  554. if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN))
  555. {
  556. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);//11
  557. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);//12
  558. }
  559. var idx = ret.GetPropIndexByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);
  560. ret.ConditionItemList[idx].bReadOnly = false;
  561. var idx1= ret.GetPropIndexByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);
  562. ret.ConditionItemList[idx].itemVal = "0";
  563. ret.ConditionItemList[idx1].bReadOnly = false;
  564. ret.ConditionItemList[idx1].itemVal = "0";
  565. break;
  566. default:
  567. if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN))
  568. {
  569. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);//11
  570. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);//12
  571. }
  572. string[] v = ret.ConditionItemList[5].itemVal.ToString().Split('~');
  573. var idx2 = ret.GetPropIndexByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MIN);
  574. var idx3 = ret.GetPropIndexByPropItemName(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_MAX);
  575. ret.ConditionItemList[idx2].bReadOnly = true;
  576. ret.ConditionItemList[idx2].itemVal = v[0];
  577. ret.ConditionItemList[idx3].bReadOnly = true;
  578. ret.ConditionItemList[idx3].itemVal = v[1];
  579. break;
  580. }
  581. }
  582. //尺寸计算法
  583. if (typ == OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE)
  584. {
  585. }
  586. //ret.TSampleParam.sSampleTitleName = strlist;
  587. ret.TSampleRst.List_ShowGrid_Items = list_showgrid_item;
  588. //ret = FilterData(ret);
  589. return ret;
  590. }
  591. /// <summary>
  592. /// SourceGrid,Grid表格部份组合各项方法
  593. /// </summary>
  594. /// <param name="typ"></param>
  595. /// <param name="val"></param>
  596. /// <param name="sel"></param>
  597. /// <returns></returns>
  598. public ReportCondition ChangeSouceGrid_Grid(OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel)
  599. {
  600. //ReportCondition ret = new ReportCondition();
  601. var ret = m_PropCondition.SourceGridDataList[1];
  602. //string strlist = ret.TSampleParam.sSampleTitleName;
  603. List<OTS_REPORT_PROP_GRID_ITEMS> list_showgrid_item = ret.TSampleRst.List_ShowGrid_Items;
  604. //测量结果数据
  605. if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)
  606. {
  607. if (val.Contains("+"))
  608. {
  609. ret.SetPropByPropItemName( OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE, val);
  610. }
  611. else
  612. {
  613. DataOperation.Model.ResultFile resultFile = m_DataMgr.resultFilesList.Find(s => s.FileName == val);
  614. int index = m_DataMgr.resultFilesList.IndexOf(resultFile);
  615. m_DataMgr.WorkingResult = index;
  616. }
  617. }
  618. //数据类型
  619. if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE)
  620. {
  621. }
  622. //数据表类型
  623. if (typ == OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_TABLE_TYPE)
  624. {
  625. switch (sel)
  626. {
  627. case 2://颗粒成份
  628. if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE))//13
  629. {
  630. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);
  631. }
  632. list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);//9
  633. break;
  634. case 4://颗粒尺寸分布
  635. if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE))//9
  636. {
  637. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
  638. }
  639. if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE))//13
  640. {
  641. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);
  642. }
  643. break;
  644. default://其它Grid模块不需要,粒级表和尺寸计算法
  645. list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);//9
  646. //list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);//13
  647. break;
  648. }
  649. }
  650. //颗粒粒级表
  651. if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)
  652. {
  653. m_DataMgr.m_RptConfigFile.PartSizeFile = ret.GetItemvalByItemName( OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
  654. }
  655. //尺寸计算方法
  656. if (typ == OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE)
  657. {
  658. }
  659. //ret.TSampleParam.sSampleTitleName = strlist;
  660. ret.TSampleRst.List_ShowGrid_Items = list_showgrid_item;
  661. //ret = FilterData(ret);
  662. return ret;
  663. }
  664. /// <summary>
  665. /// SourceGrid,Chart图表部份组合各项方法
  666. /// </summary>
  667. /// <param name="typ"></param>
  668. /// <param name="val"></param>
  669. /// <param name="sel"></param>
  670. /// <returns></returns>
  671. public ReportCondition ChangeSouceGrid_Chart(OTS_REPORT_PROP_GRID_ITEMS typ, string val, int sel)
  672. {
  673. ReportCondition ret = new ReportCondition();
  674. ret = m_PropCondition.SourceGridDataList[2];
  675. //string strlist = ret.TSampleParam.sSampleTitleName;
  676. List<OTS_REPORT_PROP_GRID_ITEMS> list_showgrid_item = ret.TSampleRst.List_ShowGrid_Items;
  677. //测量结果数据
  678. if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)
  679. {
  680. if (val.Contains("+"))
  681. {
  682. //ret.SampleDataList[1].bReadOnly = true;
  683. //ret.SampleDataList[1].itemVal = ret.SampleDataList[GetSampleIndexByPropItemName(ret.SampleDataList, OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE)].comboDownList[0];
  684. ret.ConditionItemList[0].itemVal = val;
  685. }
  686. else
  687. {
  688. //ret.SampleDataList[1].bReadOnly = false;
  689. DataOperation.Model.ResultFile resultFile = m_DataMgr.resultFilesList.Find(s => s.FileName == val);
  690. int index = m_DataMgr.resultFilesList.IndexOf(resultFile);
  691. m_DataMgr.WorkingResult = index;
  692. }
  693. }
  694. //数据类型
  695. if (typ == OTS_REPORT_PROP_GRID_ITEMS.DATA_SOURCE_TYPE)
  696. {
  697. }
  698. //数据图类型
  699. if (typ == OTS_REPORT_PROP_GRID_ITEMS.CALCULATE_CHART_TYPE)
  700. {
  701. switch (sel)
  702. {
  703. case 4://三元相图
  704. 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))
  705. {
  706. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);
  707. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
  708. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);//15
  709. }
  710. else if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE))
  711. {
  712. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);//15
  713. }
  714. break;
  715. case 3://颗粒尺寸分布图
  716. if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE))//9
  717. {
  718. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
  719. }
  720. if (!list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE))//13
  721. {
  722. list_showgrid_item.Add(OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE);
  723. }
  724. if (list_showgrid_item.Contains(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE))//15
  725. {
  726. list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);
  727. }
  728. break;
  729. default:
  730. list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
  731. list_showgrid_item.Remove(OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE);//15
  732. break;
  733. }
  734. }
  735. //三元相图模板
  736. if (typ == OTS_REPORT_PROP_GRID_ITEMS.TRIO_CHART_TYPE)
  737. {
  738. }
  739. //颗粒种类
  740. if (typ == OTS_REPORT_PROP_GRID_ITEMS.PARTICLE_TYPE)
  741. {
  742. }
  743. //颗粒粒级表
  744. if (typ == OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE)
  745. {
  746. m_DataMgr.m_RptConfigFile.PartSizeFile = ret.GetItemvalByItemName( OTS_REPORT_PROP_GRID_ITEMS.GRAIN_SIZE_CLASS_TABLE);
  747. }
  748. //尺寸计算方法
  749. if (typ == OTS_REPORT_PROP_GRID_ITEMS.SIZE_CAL_METHOD_TYPE)
  750. {
  751. }
  752. //ret.TSampleParam.sSampleTitleName = strlist;
  753. ret.TSampleRst.List_ShowGrid_Items = list_showgrid_item;
  754. //ret = FilterData(ret);
  755. return ret;
  756. }
  757. }
  758. }