ucResAdditiveBase.cs 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781
  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7. using Core.Mes.Client.Comm;
  8. using Core.Mes.Client.Comm.Server;
  9. using Core.StlMes.Client.LgClassModel;
  10. using CoreFS.CA06;
  11. using Infragistics.Win;
  12. using Infragistics.Win.Misc;
  13. using Infragistics.Win.UltraWinGrid;
  14. namespace Core.StlMes.Client.LgCommon
  15. {
  16. public delegate void SetResHopperHandler(); //设置料仓后调用控件的SetHopperInfo
  17. public partial class ucResAdditiveBase : UserControl
  18. {
  19. /// <summary>
  20. /// 物料编码集合
  21. /// </summary>
  22. private Hashtable _ITEMS;
  23. private MaterialCategory _MtrlCategory = MaterialCategory.FL;
  24. private HopperCategory _HpprCategory = HopperCategory.Automatic;
  25. private Hashtable _htValueInitial = null; //初始值
  26. private Hashtable _htValueChanged = null; //修改后的值
  27. private Hashtable _htMaterialtypeChanged = null; //加料类型
  28. private Hashtable _htCaptionChanged = null; //修改字段中文名
  29. private OpeBase ob;
  30. private string _DEVICE_POSITION = ""; //设备位置
  31. public string _HeatProcessNo = "";
  32. public SetResHopperHandler SetHopper = null; //设置料仓后调用控件的SetHopperInfo
  33. #region 属性
  34. /// <summary>
  35. /// 设备位置
  36. /// </summary>
  37. [Description("设备位置")]
  38. public string DEVICE_POSITION
  39. {
  40. get { return _DEVICE_POSITION; }
  41. set { if (value != _DEVICE_POSITION) _DEVICE_POSITION = value; }
  42. }
  43. /// <summary>
  44. /// 物料类别
  45. /// </summary>
  46. [Description("物料类别")]
  47. public MaterialCategory MtrlCategory
  48. {
  49. get { return _MtrlCategory; }
  50. set { if (value != _MtrlCategory) _MtrlCategory = value; }
  51. }
  52. /// <summary>
  53. /// 投料分类
  54. /// </summary>
  55. [Description("投料分类")]
  56. public HopperCategory HpprCategory
  57. {
  58. get { return _HpprCategory; }
  59. set { if (value != _HpprCategory) _HpprCategory = value; }
  60. }
  61. /// <summary>
  62. /// 初始值
  63. /// </summary>
  64. public Hashtable htValueInitial
  65. {
  66. get { return _htValueInitial; }
  67. }
  68. /// <summary>
  69. /// 值发生变化列表
  70. /// </summary>
  71. public Hashtable htValueChanged
  72. {
  73. get
  74. {
  75. ultraGrid1.UpdateData();
  76. return _htValueChanged;
  77. }
  78. }
  79. /// <summary>
  80. /// 修改字段数据类型
  81. /// </summary>
  82. public Hashtable htMaterialtypeChanged
  83. {
  84. get
  85. {
  86. ultraGrid1.UpdateData();
  87. return _htMaterialtypeChanged;
  88. }
  89. }
  90. /// <summary>
  91. /// 值发生变化的字段名
  92. /// </summary>
  93. public Hashtable htCaptionChanged
  94. {
  95. get
  96. {
  97. ultraGrid1.UpdateData();
  98. return _htCaptionChanged;
  99. }
  100. }
  101. /// <summary>
  102. /// 有值发生变化
  103. /// </summary>
  104. public bool HasChanged
  105. {
  106. get
  107. {
  108. ultraGrid1.UpdateData();
  109. return (_htValueChanged != null && _htValueChanged.Count > 0);
  110. }
  111. }
  112. #endregion
  113. #region 构造函数
  114. public ucResAdditiveBase()
  115. {
  116. InitializeComponent();
  117. ClsControlPack.SetUltraGridStyle(ultraGrid1, 1);
  118. ClsControlPack.InitUserControl(this.ultraDataSource1, ultraGrid1);
  119. }
  120. protected override void OnLoad(EventArgs e)
  121. {
  122. base.OnLoad(e);
  123. this.InitControl();
  124. //this.SetDelegate();
  125. }
  126. #endregion
  127. #region 私用方法
  128. private void InitControl()
  129. {
  130. InitItems(ref _ITEMS);
  131. this.InitMaterialArea();
  132. }
  133. private void InitItems(ref Hashtable alist)
  134. {
  135. if (alist == null) alist = new Hashtable();
  136. else alist.Clear();
  137. }
  138. protected void InitHashtable(ref Hashtable htbl)
  139. {
  140. if (htbl == null) htbl = new Hashtable();
  141. }
  142. private void InitMaterialArea()
  143. {
  144. for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
  145. {
  146. try
  147. {
  148. ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key;
  149. ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = "";
  150. ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = "";
  151. }
  152. catch { }
  153. }
  154. }
  155. #endregion
  156. #region 窗体调用
  157. public void SetOpeBase(OpeBase ob)
  158. {
  159. this.ob = ob;
  160. }
  161. /// <summary>
  162. /// 读取并设置仓对应物料
  163. /// </summary>
  164. /// <param name="tblConfig">设置表</param>
  165. /// <param name="tblMaterial">物料基础表</param>
  166. public void SetHopperInfo(DataTable tblConfig, DataTable tblMaterial)
  167. {
  168. this.InitControl();
  169. try
  170. {
  171. string Filter = "";
  172. DataRow[] rows = null;
  173. if (_HpprCategory == HopperCategory.Automatic)
  174. {
  175. if (_MtrlCategory == MaterialCategory.FL) Filter = "MATERIELTYPE = 'FL'";
  176. else if (_MtrlCategory == MaterialCategory.HJ) Filter = "MATERIELTYPE = 'HJ'";
  177. else if (_MtrlCategory == MaterialCategory.WS) Filter = "MATERIELTYPE = 'WS'";
  178. else if (_MtrlCategory == MaterialCategory.FL_HJ) Filter = "MATERIELTYPE = 'FL' or MATERIELTYPE = 'HJ'";
  179. else if (_MtrlCategory == MaterialCategory.FL_WS) Filter = "MATERIELTYPE = 'FL' or MATERIELTYPE = 'WS'";
  180. else if (_MtrlCategory == MaterialCategory.HJ_WS) Filter = "MATERIELTYPE = 'HJ' or MATERIELTYPE = 'WS'";
  181. else if (_MtrlCategory == MaterialCategory.FL_HJ_WS) Filter = "MATERIELTYPE = 'FL' or MATERIELTYPE = 'HJ' or MATERIELTYPE = 'WS'";
  182. else Filter = "MATERIELTYPE = '?'";
  183. Filter = "(" + Filter + ") and JMTYPE = '1'";
  184. rows = tblConfig.Select(Filter);
  185. int iPos = 1; //位置序号
  186. string strCode = ""; //物料编码
  187. for (int idx = 0; idx < rows.Length; idx++)
  188. {
  189. if (iPos >= ultraDataSource1.Band.Columns.Count) break; //大于设置物料总数则退出
  190. strCode = Convert.ToString(rows[idx]["MATERIELCODE"]);
  191. if (_ITEMS.Contains(strCode)) continue; //已经加载此物料编码
  192. _ITEMS.Add(strCode, iPos.ToString());
  193. ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Tag = strCode; //保存物料编码
  194. ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Header.Caption = Convert.ToString(rows[idx]["ITEM_NAME"]); //保存物料简称
  195. ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Header.Tag = Convert.ToString(rows[idx]["MATERIELTYPE"]); //保存物料类别
  196. iPos++;
  197. }
  198. }
  199. else if (_HpprCategory == HopperCategory.Manual)
  200. {
  201. if (tblConfig == null || tblConfig.Rows.Count == 0 || tblMaterial == null) return;
  202. string strConfig = Convert.ToString(tblConfig.Rows[0]["CONFGCODE"]).Trim();
  203. string[] strItems = strConfig.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
  204. int iPos = 1; //位置序号
  205. string strCode = ""; //物料编码
  206. for (int idx = 0; idx < strItems.Length; idx++)
  207. {
  208. if (iPos >= ultraDataSource1.Band.Columns.Count) break; //大于设置物料总数则退出
  209. strCode = Convert.ToString(strItems[idx]);
  210. if (_ITEMS.Contains(strCode)) continue; //已经加载此物料编码
  211. rows = tblMaterial.Select("ITEM_CODE = '" + strCode + "'");
  212. if (rows.Length <= 0) continue; //基础表不存在此物料
  213. _ITEMS.Add(strCode, iPos.ToString());
  214. ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Tag = Convert.ToString(rows[0]["ITEM_CODE"]); //保存物料编码
  215. ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Header.Caption = Convert.ToString(rows[0]["ITEM_NAME"]); //保存物料简称
  216. ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Header.Tag = Convert.ToString(rows[0]["ARC_CODE"]); //保存物料类别
  217. iPos++;
  218. }
  219. }
  220. }
  221. catch { }
  222. finally
  223. {
  224. try
  225. {
  226. for (int i = 0; i < ultraDataSource1.Band.Columns.Count; i++)
  227. {
  228. if (ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption.Trim() == "")
  229. {
  230. ultraGrid1.DisplayLayout.Bands[0].Columns[i].CellActivation = Infragistics.Win.UltraWinGrid.Activation.NoEdit;
  231. }
  232. else
  233. {
  234. ultraGrid1.DisplayLayout.Bands[0].Columns[i].CellActivation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit;
  235. }
  236. }
  237. }
  238. catch { }
  239. ResetAdditiveData();
  240. }
  241. }
  242. /// <summary>
  243. /// 加料数据填充
  244. /// </summary>
  245. /// <param name="additiveBuffer">加料数据集</param>
  246. public void SetAdditiveData(CommonAdditive additiveBuffer)
  247. {
  248. try
  249. {
  250. if (additiveBuffer == null || additiveBuffer.hList.Count == 0)
  251. {
  252. ResetAdditiveData();
  253. return;
  254. }
  255. InitHashtable(ref _htValueInitial);
  256. string strKey = ""; //料仓ID
  257. string strCode = ""; //某个料仓配置的物料编码
  258. string strType = ""; //某个料仓配置的物料类别
  259. bool Added = false; //表示某个料仓是否有加料
  260. for (int idx = 0; idx < ultraDataSource1.Band.Columns.Count; idx++)
  261. {
  262. try
  263. {
  264. strKey = ultraDataSource1.Band.Columns[idx].Key;
  265. strCode = Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[strKey].Tag);
  266. strType = Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[strKey].Header.Tag);
  267. if (strKey.Equals(strCode)) //料斗没有设置物料
  268. {
  269. ultraDataSource1.Rows[0][strKey] = "";
  270. ultraGrid1.Rows[0].Cells[strKey].Appearance.ResetBackColor();
  271. if (_htValueInitial.Contains(strCode)) _htValueInitial.Remove(strCode);
  272. continue;
  273. }
  274. if (!_htValueInitial.Contains(strCode)) _htValueInitial.Add(strCode, DBNull.Value);
  275. else _htValueInitial[strCode] = DBNull.Value;
  276. for (int i = 0; i < additiveBuffer.hList.Count; i++)
  277. {
  278. STL_COMMON_ADDITIVES addt = (STL_COMMON_ADDITIVES)additiveBuffer.hList[i];
  279. if (_HpprCategory == HopperCategory.Automatic) //自动加料才判断物料类别
  280. {
  281. if (addt == null || addt.JMTYPE != "1") continue; //加料类型为1表示自动加料
  282. if (addt.MATERIELTYPE != strType || addt.MATERIELCODE != strCode) continue; //物料类别、物料编码匹配
  283. if (_MtrlCategory == MaterialCategory.FL && addt.MATERIELTYPE != "FL") continue;
  284. if (_MtrlCategory == MaterialCategory.HJ && addt.MATERIELTYPE != "HJ") continue;
  285. if (_MtrlCategory == MaterialCategory.WS && addt.MATERIELTYPE != "WS") continue;
  286. if (_MtrlCategory == MaterialCategory.FL_HJ && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "HJ") continue;
  287. if (_MtrlCategory == MaterialCategory.FL_WS && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "WS") continue;
  288. if (_MtrlCategory == MaterialCategory.HJ_WS && addt.MATERIELTYPE != "HJ" && addt.MATERIELTYPE != "WS") continue;
  289. if (_MtrlCategory == MaterialCategory.FL_HJ_WS && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "HJ" && addt.MATERIELTYPE != "WS") continue;
  290. }
  291. else if (_HpprCategory == HopperCategory.Manual)
  292. {
  293. if (addt == null || addt.MATERIELTYPE != strType || addt.MATERIELCODE != strCode || addt.JMTYPE != "2") continue;
  294. }
  295. try
  296. {
  297. ultraDataSource1.Rows[0][strKey] = addt.JMWGT;
  298. if (!_htValueInitial.Contains(strCode)) _htValueInitial.Add(strCode, addt.JMWGT);
  299. else _htValueInitial[strCode] = addt.JMWGT;
  300. Added = true;
  301. break;
  302. }
  303. catch { }
  304. }
  305. }
  306. catch { }
  307. if (!Added) ultraDataSource1.Rows[0][strKey] = ""; //没有加料
  308. else if (Added) Added = false; //清除加料标志,跳转到下一料仓
  309. ultraGrid1.Rows[0].Cells[strKey].Appearance.ResetBackColor();
  310. }
  311. }
  312. catch { }
  313. finally
  314. {
  315. ultraGrid1.UpdateData();
  316. if (_htValueChanged != null) _htValueChanged.Clear();
  317. if (_htMaterialtypeChanged != null) _htMaterialtypeChanged.Clear();
  318. if (_htCaptionChanged != null) _htCaptionChanged.Clear();
  319. }
  320. }
  321. /// <summary>
  322. /// 加料数据填充
  323. /// </summary>
  324. /// <param name="additiveBuffer">加料数据集</param>
  325. public void RefreshAdditiveData(CommonAdditive additiveBuffer)
  326. {
  327. try
  328. {
  329. if (additiveBuffer == null || additiveBuffer.hList.Count == 0)
  330. {
  331. ResetAdditiveData();
  332. return;
  333. }
  334. InitHashtable(ref _htValueInitial);
  335. string strKey = ""; //料仓ID
  336. string strCode = ""; //某个料仓配置的物料编码
  337. string strType = ""; //某个料仓配置的物料类别
  338. bool Added = false; //表示某个料仓是否有加料
  339. for (int idx = 0; idx < ultraDataSource1.Band.Columns.Count; idx++)
  340. {
  341. try
  342. {
  343. strKey = ultraDataSource1.Band.Columns[idx].Key;
  344. strCode = Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[strKey].Tag);
  345. strType = Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[strKey].Header.Tag);
  346. if (strKey.Equals(strCode)) //料斗没有设置物料
  347. {
  348. ultraDataSource1.Rows[0][strKey] = "";
  349. ultraGrid1.Rows[0].Cells[strKey].Appearance.ResetBackColor();
  350. if (_htValueInitial.Contains(strCode)) _htValueInitial.Remove(strCode);
  351. continue;
  352. }
  353. if (!_htValueInitial.Contains(strCode)) _htValueInitial.Add(strCode, DBNull.Value);
  354. else _htValueInitial[strCode] = DBNull.Value;
  355. for (int i = 0; i < additiveBuffer.hList.Count; i++)
  356. {
  357. STL_COMMON_ADDITIVES addt = (STL_COMMON_ADDITIVES)additiveBuffer.hList[i];
  358. if (_HpprCategory == HopperCategory.Automatic) //自动加料才判断物料类别
  359. {
  360. if (addt == null || addt.JMTYPE != "1") continue; //加料类型为1表示自动加料
  361. if (addt.MATERIELTYPE != strType || addt.MATERIELCODE != strCode) continue; //物料类别、物料编码匹配
  362. if (_MtrlCategory == MaterialCategory.FL && addt.MATERIELTYPE != "FL") continue;
  363. if (_MtrlCategory == MaterialCategory.HJ && addt.MATERIELTYPE != "HJ") continue;
  364. if (_MtrlCategory == MaterialCategory.WS && addt.MATERIELTYPE != "WS") continue;
  365. if (_MtrlCategory == MaterialCategory.FL_HJ && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "HJ") continue;
  366. if (_MtrlCategory == MaterialCategory.FL_WS && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "WS") continue;
  367. if (_MtrlCategory == MaterialCategory.HJ_WS && addt.MATERIELTYPE != "HJ" && addt.MATERIELTYPE != "WS") continue;
  368. if (_MtrlCategory == MaterialCategory.FL_HJ_WS && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "HJ" && addt.MATERIELTYPE != "WS") continue;
  369. }
  370. else if (_HpprCategory == HopperCategory.Manual)
  371. {
  372. if (addt == null || addt.MATERIELTYPE != strType || addt.MATERIELCODE != strCode || addt.JMTYPE != "2") continue;
  373. }
  374. try
  375. {
  376. ultraDataSource1.Rows[0][strKey] = addt.JMWGT;
  377. if (!_htValueInitial.Contains(strCode)) _htValueInitial.Add(strCode, addt.JMWGT);
  378. else _htValueInitial[strCode] = addt.JMWGT;
  379. Added = true;
  380. break;
  381. }
  382. catch { }
  383. }
  384. }
  385. catch { }
  386. if (!Added) ultraDataSource1.Rows[0][strKey] = ""; //没有加料
  387. else if (Added) Added = false; //清除加料标志,跳转到下一料仓
  388. ultraGrid1.Rows[0].Cells[strKey].Appearance.ResetBackColor();
  389. }
  390. }
  391. catch { }
  392. finally
  393. {
  394. ultraGrid1.UpdateData();
  395. if (_htValueChanged != null) _htValueChanged.Clear();
  396. if (_htMaterialtypeChanged != null) _htMaterialtypeChanged.Clear();
  397. if (_htCaptionChanged != null) _htCaptionChanged.Clear();
  398. }
  399. }
  400. public void ResetAdditiveData()
  401. {
  402. ClsControlPack.ResetUltraDataSource(this.ultraDataSource1, ultraGrid1);
  403. try
  404. {
  405. InitHashtable(ref _htValueInitial);
  406. string strKey = "";
  407. UltraGridColumn column;
  408. for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
  409. {
  410. column = ultraGrid1.DisplayLayout.Bands[0].Columns[i];
  411. try
  412. {
  413. strKey = column.Key;
  414. if (column.Tag != null && !string.IsNullOrEmpty(Convert.ToString(column.Tag)) && !Convert.ToString(column.Tag).Equals(strKey))
  415. {
  416. _htValueInitial.Add(Convert.ToString(column.Tag), DBNull.Value);
  417. }
  418. }
  419. catch { }
  420. finally
  421. {
  422. try
  423. {
  424. ultraGrid1.Rows[0].Cells[column.Key].Appearance.ResetBackColor();
  425. }
  426. catch { }
  427. }
  428. }
  429. }
  430. catch { }
  431. finally
  432. {
  433. if (_htValueChanged != null) _htValueChanged.Clear();
  434. if (_htMaterialtypeChanged != null) _htMaterialtypeChanged.Clear();
  435. if (_htCaptionChanged != null) _htCaptionChanged.Clear();
  436. }
  437. }
  438. #endregion
  439. #region 事件
  440. protected virtual void SetDelegate()
  441. {
  442. this.ultraGrid1.DoubleClickHeader += new DoubleClickHeaderEventHandler(ultraGrid1_DoubleClickHeader);
  443. ultraGrid1.ClickCellButton += new CellEventHandler(ultraGrid1_ClickCellButton);
  444. ultraGrid1.KeyDown += new KeyEventHandler(ultraGrid1_KeyDown);
  445. ultraGrid1.AfterCellUpdate += new CellEventHandler(ultraGrid1_AfterCellUpdate);
  446. ultraGrid1.CellChange += new CellEventHandler(ultraGrid1_CellChange);
  447. }
  448. protected virtual void ultraGrid1_DoubleClickHeader(object sender, DoubleClickHeaderEventArgs e)
  449. {
  450. try
  451. {
  452. if (_HpprCategory == HopperCategory.Automatic)
  453. {
  454. frmSetHopper frm = new frmSetHopper(_DEVICE_POSITION, ob);
  455. frm.ShowDialog();
  456. if (this.SetHopper != null)
  457. this.Invoke(this.SetHopper);
  458. }
  459. else if (_HpprCategory == HopperCategory.Manual)
  460. {
  461. string strOriginal = ""; //原始物料编码
  462. if (Convert.ToString(e.Header.Column.Tag) != e.Header.Column.Key)
  463. strOriginal = Convert.ToString(e.Header.Column.Tag);
  464. string strName = Convert.ToString(e.Header.Caption); //物料名称
  465. frmSetMaterialName frm = new frmSetMaterialName(strName, "1", ob);
  466. frm.ShowDialog();
  467. if (frm.bChange)
  468. {
  469. string strMaterielCode = frm.m_szWLBM;
  470. try
  471. {
  472. ServerHelper.SetData("Core.LgMes.Server.LgDeviceManager.StlAdditive.UpdateInterFaceConfig",
  473. new object[]
  474. {
  475. new object[]
  476. {
  477. _DEVICE_POSITION, strOriginal, strMaterielCode
  478. }
  479. }, ob);
  480. if (this.SetHopper != null)
  481. this.Invoke(this.SetHopper);
  482. }
  483. catch (Exception ex)
  484. {
  485. if (ex is MESException)
  486. {
  487. }
  488. else
  489. MessageBox.Show("手投料物料配置失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
  490. }
  491. //string strPurposeCode = "手投料";
  492. //string strMsg = "";
  493. //bool bSuccess = ClsBusinessPack.SaveManulAdditiveConfig(_DEVICE_POSITION, strOriginal, strMaterielCode, strPurposeCode, out strMsg, ob);
  494. //if (!bSuccess)
  495. //{
  496. // MessageBox.Show("手投料物料配置失败!\n" + strMsg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  497. // return;
  498. //}
  499. //if (this.SetHopper != null)
  500. // this.Invoke(this.SetHopper);
  501. }
  502. }
  503. }
  504. catch { }
  505. //try
  506. //{
  507. // if (e.Header.Column.Tag != null && e.Header.Tag != null &&
  508. // !Convert.ToString(e.Header.Column.Tag).Equals(e.Header.Column.Key) &&
  509. // !string.IsNullOrEmpty(Convert.ToString(e.Header.Tag)))
  510. // {
  511. // string strCaption = e.Header.Caption.Trim();
  512. // MessageBox.Show("设定物料[" + strCaption + "]不能更改!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  513. // return;
  514. // }
  515. // frmMaterial frm = new frmMaterial(_HpprCategory, _MtrlCategory, this.ob);
  516. // if (frm.ShowDialog() == DialogResult.OK)
  517. // {
  518. // UltraGridRow row = frm.SelectedRow;
  519. // if (row != null)
  520. // {
  521. // string strCode = Convert.ToString(row.Cells["MATERIELCODE"].Value);
  522. // string strName = Convert.ToString(row.Cells["MATERIELFORSHORT"].Value);
  523. // string strType = Convert.ToString(row.Cells["MATERIELTYPE"].Value);
  524. // if (_ITEMS != null && _ITEMS.Contains(strCode))
  525. // {
  526. // MessageBox.Show("物料[" + strName + "]已经存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  527. // return;
  528. // }
  529. // InitHashtable(ref _htValueInitial);
  530. // for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
  531. // {
  532. // if (ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag == null || Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag) == "" ||
  533. // Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag).Equals(ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key))
  534. // {
  535. // _ITEMS.Add(strCode, Convert.ToString(i + 1));
  536. // if (!_htValueInitial.Contains(strCode))
  537. // _htValueInitial.Add(strCode, DBNull.Value);
  538. // ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = strCode; //保存物料编码
  539. // ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = strName; //保存物料简称
  540. // ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = strType; //保存物料类别
  541. // break;
  542. // }
  543. // }
  544. // }
  545. // }
  546. //}
  547. //catch { }
  548. }
  549. protected virtual void ultraGrid1_ClickCellButton(object sender, CellEventArgs e)
  550. {
  551. try
  552. {
  553. if (e.Cell.Column.Tag == null || Convert.ToString(e.Cell.Column.Tag) == "" || Convert.ToString(e.Cell.Column.Tag).Equals(e.Cell.Column.Key))
  554. return;
  555. if (e.Cell.Column.DataType != typeof(DateTime))
  556. {
  557. if (e.Cell.Column.Tag.ToString() == "2050010002" || e.Cell.Column.Tag.ToString() == "2050010001")
  558. {
  559. frmSelectWeight frm = new frmSelectWeight(ob);
  560. frm.vProcessNo = _HeatProcessNo;
  561. frm.MaterName = e.Cell.Column.Header.Caption.ToString();
  562. frm.sWeight = e.Cell.Value.ToString();
  563. frm.isResult = true;
  564. frm.ShowDialog();
  565. if (frm.flag)
  566. {
  567. if (!frm.isCancel)
  568. {
  569. e.Cell.Value = frm.Weight;
  570. }
  571. else
  572. {
  573. e.Cell.Value = "";
  574. }
  575. ultraGrid1.UpdateData();
  576. }
  577. else
  578. {
  579. return;
  580. }
  581. }
  582. else
  583. {
  584. frmInputDecimal frm = new frmInputDecimal(Convert.ToString(e.Cell.Text));
  585. frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size);
  586. if (frm.ShowDialog() == DialogResult.OK)
  587. {
  588. if (!frm.ValueChanged) return;
  589. e.Cell.Value = frm.Value;
  590. ultraGrid1.UpdateData();
  591. }
  592. }
  593. }
  594. }
  595. catch { }
  596. }
  597. protected virtual void ultraGrid1_KeyDown(object sender, KeyEventArgs e)
  598. {
  599. try
  600. {
  601. UltraGridCell cell = ultraGrid1.ActiveCell;
  602. if (cell.Column.Tag == null || Convert.ToString(cell.Column.Tag) == "" || Convert.ToString(cell.Column.Tag).Equals(cell.Column.Key))
  603. {
  604. e.SuppressKeyPress = true;
  605. return;
  606. }
  607. if (e.KeyCode != Keys.Enter || cell.Column.CellActivation != Activation.AllowEdit) return;
  608. ultraGrid1.UpdateData();
  609. }
  610. catch { }
  611. }
  612. protected virtual void ultraGrid1_CellChange(object sender, CellEventArgs e)
  613. {
  614. try
  615. {
  616. if (e.Cell.Column.Tag == null || Convert.ToString(e.Cell.Column.Tag) == "" || Convert.ToString(e.Cell.Column.Tag).Equals(e.Cell.Column.Key))
  617. {
  618. if (!string.IsNullOrEmpty(Convert.ToString(e.Cell.Text)))
  619. {
  620. e.Cell.Value = "";
  621. ultraGrid1.UpdateData();
  622. }
  623. }
  624. else
  625. {
  626. if (!string.IsNullOrEmpty(Convert.ToString(e.Cell.Text)))
  627. {
  628. decimal dValue = 0;
  629. if (!decimal.TryParse(Convert.ToString(e.Cell.Text), out dValue))
  630. {
  631. MessageBox.Show("加料量必须是数字,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  632. e.Cell.Value = DBNull.Value;
  633. ultraGrid1.UpdateData();
  634. ultraGrid1.PerformAction(UltraGridAction.ExitEditMode);
  635. ultraGrid1.PerformAction(UltraGridAction.EnterEditMode);
  636. }
  637. else
  638. {
  639. ultraGrid1.UpdateData();
  640. }
  641. }
  642. else
  643. {
  644. ultraGrid1.UpdateData();
  645. ultraGrid1.PerformAction(UltraGridAction.ExitEditMode);
  646. ultraGrid1.PerformAction(UltraGridAction.EnterEditMode);
  647. }
  648. }
  649. }
  650. catch { }
  651. }
  652. protected virtual void ultraGrid1_AfterCellUpdate(object sender, CellEventArgs e)
  653. {
  654. try
  655. {
  656. if (e.Cell.Column.Tag == null || Convert.ToString(e.Cell.Column.Tag) == "" || Convert.ToString(e.Cell.Column.Tag).Equals(e.Cell.Column.Key))
  657. {
  658. if (!string.IsNullOrEmpty(Convert.ToString(e.Cell.Value)))
  659. {
  660. e.Cell.Value = "";
  661. ultraGrid1.UpdateData();
  662. }
  663. return;
  664. }
  665. if (!e.Cell.Column.Hidden && e.Cell.Column.CellActivation == Activation.AllowEdit)
  666. {
  667. InitHashtable(ref _htValueChanged);
  668. InitHashtable(ref _htMaterialtypeChanged);
  669. InitHashtable(ref _htCaptionChanged);
  670. string strKey = Convert.ToString(e.Cell.Column.Tag).ToUpper();
  671. string strType = Convert.ToString(e.Cell.Column.Header.Tag).ToUpper();
  672. string strCaption = e.Cell.Column.Header.Caption;
  673. object value = e.Cell.Value;
  674. object valueInitial = null;
  675. if (_htValueInitial != null && _htValueInitial.Contains(strKey)) valueInitial = _htValueInitial[strKey];
  676. if (value.Equals(valueInitial))
  677. {
  678. if (_htValueChanged.Contains(strKey)) _htValueChanged.Remove(strKey);
  679. if (_htMaterialtypeChanged.Contains(strKey)) _htMaterialtypeChanged.Remove(strKey);
  680. if (_htCaptionChanged.Contains(strKey)) _htCaptionChanged.Remove(strKey);
  681. try
  682. {
  683. e.Cell.Appearance.ResetBackColor();
  684. }
  685. catch { }
  686. return;
  687. }
  688. try
  689. {
  690. e.Cell.Appearance.BackColor = Color.Orange;
  691. }
  692. catch { }
  693. if (!_htValueChanged.Contains(strKey))
  694. _htValueChanged.Add(strKey, value);
  695. else _htValueChanged[strKey] = value;
  696. if (!_htMaterialtypeChanged.Contains(strKey))
  697. _htMaterialtypeChanged.Add(strKey, strType);
  698. else _htMaterialtypeChanged[strKey] = strType;
  699. if (!_htCaptionChanged.Contains(strKey))
  700. _htCaptionChanged.Add(strKey, strCaption);
  701. else _htCaptionChanged[strKey] = strCaption;
  702. }
  703. }
  704. catch { }
  705. }
  706. #endregion
  707. }
  708. }