革博士程序V1仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

491 rivejä
23 KiB

  1. using LeatherApp.Device;
  2. using LeatherApp.Interface;
  3. using Models;
  4. using Newtonsoft.Json.Linq;
  5. using Sunny.UI;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.ComponentModel;
  9. using System.Data;
  10. using System.Drawing;
  11. using System.IO;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using System.Windows.Forms;
  16. namespace LeatherApp.Page
  17. {
  18. public partial class FProductInfo : UIPage
  19. {
  20. private Service.ProductService service=new Service.ProductService();
  21. private Models.Product model = new Models.Product();
  22. public FProductInfo()
  23. {
  24. InitializeComponent();
  25. #region dataGridView设置
  26. uiDataGridView1.AllowUserToAddRows = uiDataGridView1.AllowUserToDeleteRows = false;//用户添加删除行
  27. uiDataGridView2.AllowUserToAddRows = uiDataGridView2.AllowUserToDeleteRows = false;
  28. uiDataGridView1.AllowUserToResizeRows = uiDataGridView2.AllowUserToResizeRows=false;//用户调整行大小
  29. //dataGridView1.AllowUserToResizeColumns = false;//用户调整列大小
  30. //显示行号与列宽度自动调整
  31. uiDataGridView1.RowHeadersVisible = uiDataGridView2.RowHeadersVisible = true;
  32. uiDataGridView1.RowHeadersWidth = uiDataGridView2.RowHeadersWidth = 50;
  33. uiDataGridView1.ColumnHeadersHeightSizeMode = uiDataGridView2.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
  34. uiDataGridView1.RowHeadersWidthSizeMode = uiDataGridView2.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;//数据量过百绑定太变
  35. //dataGridView1.RowPostPaint += (sender, e) =>//序号列头
  36. //{
  37. // //Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView1, sender, e);
  38. // Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, dataGridView1.RowHeadersWidth - 4, e.RowBounds.Height);
  39. // TextRenderer.DrawText(e.Graphics, (e.RowIndex * 0.25f).ToString(), dataGridView1.RowHeadersDefaultCellStyle.Font, rectangle, dataGridView1.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
  40. //};
  41. //for (int i = 0; i < dataGridView1.Columns.Count; i++)//禁止点击列头排序
  42. // dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
  43. ////行列交叉处标题
  44. //if (dataGridView1.RowHeadersVisible) dataGridView1.TopLeftHeaderCell.Value = "SPH/CYL";
  45. #endregion
  46. this.rbMaterial0.Text = Config.materialNameList.FirstOrDefault(x => x.Value<int>("code") == 0).Value<string>("name");
  47. this.rbMaterial1.Text = Config.materialNameList.FirstOrDefault(x => x.Value<int>("code") == 1).Value<string>("name");
  48. this.rbMaterial2.Text = Config.materialNameList.FirstOrDefault(x => x.Value<int>("code") == 2).Value<string>("name");
  49. this.rbMaterial3.Text = Config.materialNameList.FirstOrDefault(x => x.Value<int>("code") == 3).Value<string>("name");
  50. this.rbMaterial4.Text = Config.materialNameList.FirstOrDefault(x => x.Value<int>("code") == 4).Value<string>("name");
  51. this.rbMaterial5.Text = Config.materialNameList.FirstOrDefault(x => x.Value<int>("code") == 5).Value<string>("name");
  52. initData();
  53. }
  54. private void initData()
  55. {
  56. //var lstMaterial = Config.materialNameList.Select(x => new { code = x.Value<string>("code"), name = x.Value<string>("name") }).ToList();
  57. //cmbMaterial.ValueMember = "code";
  58. //cmbMaterial.DisplayMember = "name";
  59. //cmbMaterial.DataSource = lstMaterial;
  60. //cmbMaterial.SelectedIndex = -1;
  61. var lstColor = Config.colorNameList.Select(x => new { code = x.Value<int>("code"),name = x.Value<string>("name") }).ToList();
  62. cmbColor.ValueMember = "code";
  63. cmbColor.DisplayMember = "name";
  64. cmbColor.DataSource = lstColor;
  65. cmbColor.SelectedIndex = -1;
  66. //
  67. var filePathList = Directory.GetFiles(Application.StartupPath + "\\models\\", "*.trt");//*.onnx,
  68. string[] onlyNameList=new string[filePathList.Length];
  69. for (int i = 0; i < filePathList.Length; i++)
  70. onlyNameList[i]=Path.GetFileName(filePathList[i]);
  71. this.cmbModelName.Items.AddRange(onlyNameList);
  72. //
  73. ABSCamerCardDev devCamer1;
  74. if (Config.Camer_Name == CamerDevNameEnum.海康)
  75. devCamer1 = new CamerCardDev();
  76. else
  77. devCamer1 = new CamerCardDevIK();
  78. var value = devCamer1.getFeatureRangeValue("ExposureTime");
  79. if (value.Length > 0)
  80. {
  81. this.tcbarExposureTime.Minimum = (int)value[0];
  82. this.tcbarExposureTime.Maximum = (int)value[1];
  83. }
  84. value = devCamer1.getFeatureRangeValue("Gain");
  85. if (value.Length > 0)
  86. {
  87. this.tcbarGain.Minimum = (int)value[0];
  88. this.tcbarGain.Maximum = (int)value[1];
  89. }
  90. //
  91. clear(true);
  92. }
  93. private void loadProduct(int id,bool resetAll=false)
  94. {
  95. model = service.GetModelNav(id);
  96. if(model == null)
  97. {
  98. clear(resetAll);
  99. return;
  100. }
  101. loadProduct();
  102. }
  103. /// <summary>
  104. /// 对外,生产页面不存在的CODE进行添加
  105. /// </summary>
  106. /// <param name="pcode"> //PX-6</param>
  107. /// <returns></returns>
  108. public void loadProduct(string pcode, bool resetAll = false)
  109. {
  110. model = service.GetModelNav(pcode);
  111. if (model == null)
  112. {
  113. clear(resetAll);
  114. string[] codes= pcode.Split('-');
  115. if (codes[0]=="0" || Config.SuedeList1.Contains(codes[0]))
  116. this.rbMaterial0.Checked = true;
  117. else if (codes[0] == "1")
  118. this.rbMaterial1.Checked = true;
  119. else if (codes[0] == "2")
  120. this.rbMaterial2.Checked = true;
  121. else if (codes[0] == "3")
  122. this.rbMaterial3.Checked = true;
  123. else if (codes[0] == "4")
  124. this.rbMaterial4.Checked = true;
  125. else if (codes[0] == "5")
  126. this.rbMaterial5.Checked = true;
  127. else
  128. this.rbMaterial1.Checked = true;
  129. this.cmbColor.SelectedValue = int.Parse(codes[1]);
  130. }
  131. else
  132. loadProduct();
  133. }
  134. private double ContrastLow = 0.8;
  135. private double ContrastTop = 1.2;
  136. /// <summary>
  137. /// 获取对比度百分比 0-100 对应0.6-1.4
  138. /// </summary>
  139. /// <param name="val"></param>
  140. /// <returns></returns>
  141. private double ContrastToPercent(double val)
  142. {
  143. if (val < ContrastLow)
  144. return 0;
  145. else if (val > ContrastTop)
  146. return 100;
  147. double temp = 100 /(ContrastTop - ContrastLow) ;
  148. return Math.Round(temp * (val - ContrastLow),2);
  149. }
  150. private double PercentToContrast(double val)
  151. {
  152. double tt = 1;
  153. if (val > 100)
  154. tt = 100;
  155. else if (val < 0)
  156. tt = 0;
  157. else
  158. tt = val;
  159. double temp = tt / 100 * (ContrastTop - ContrastLow);
  160. return temp + ContrastLow;
  161. }
  162. private void loadProduct()
  163. {
  164. if (model == null) return;
  165. if(model.Material=="0")
  166. this.rbMaterial0.Checked = true;
  167. else if (model.Material == "1")
  168. this.rbMaterial1.Checked = true;
  169. else if (model.Material == "2")
  170. this.rbMaterial2.Checked = true;
  171. else if (model.Material == "3")
  172. this.rbMaterial3.Checked = true;
  173. else if (model.Material == "4")
  174. this.rbMaterial4.Checked = true;
  175. else if (model.Material == "5")
  176. this.rbMaterial5.Checked = true;
  177. this.cmbColor.SelectedValue = model.Color;
  178. tcbarLightValue.Value = model.LightValue;
  179. tcbarExposureTime.Value = (int)model.ExposureTime;
  180. tcbarGain.Value = (int)model.Gain;
  181. tcbarTensionValue.Value = (int)model.TensionValue;
  182. this.cmbModelName.Text = model.ModelName;
  183. numDefectAreaLimit.Text = model.DefectAreaLimit.ToString();
  184. numDefectCountLimit.Text = model.DefectCountLimit.ToString();
  185. swcDefectPauseForUser.Active = model.DefectPauseForUser;
  186. this.uiSwitch1.Active = model.OpenThicknessDetection;
  187. uiNumPadTextBox1.Text = model.ThicknessDetectionStopDis.ToString();
  188. //uiDataGridView fill
  189. string code;
  190. QualifiedLimit item1;
  191. for (int i = 0; i < uiDataGridView1.Rows.Count; i++)
  192. {
  193. code = uiDataGridView1.Rows[i].Cells["col_code"].Value.ToString();
  194. item1 = model.QualifiedLimitList.FirstOrDefault(m=>m.Code == code);
  195. if (item1 != null)
  196. {
  197. uiDataGridView1.Rows[i].Cells["col_zxd"].Value=item1.ZXD;
  198. uiDataGridView1.Rows[i].Cells["col_area"].Value = item1.Area * 100;
  199. uiDataGridView1.Rows[i].Cells["col_contrast_top"].Value = ContrastToPercent(item1.ContrastTop);
  200. uiDataGridView1.Rows[i].Cells["col_contrast_lower"].Value = ContrastToPercent(item1.ContrastLower);
  201. uiDataGridView1.Rows[i].Cells["col_IsOR"].Value = item1.IsOR;
  202. //uiDataGridView1.Rows[i].Cells["col_Len"].Value = item1.DefectWarnLength;
  203. //uiDataGridView1.Rows[i].Cells["col_Cnt"].Value = item1.DefectWarnCnt;
  204. }
  205. }
  206. GradeLimit item2;
  207. for (int i = 0; i < uiDataGridView2.Rows.Count; i++)
  208. {
  209. code = uiDataGridView2.Rows[i].Cells["col2_code"].Value.ToString();
  210. item2 = model.GradeLimitList.FirstOrDefault(m => m.Code == code);
  211. if (item2 != null)
  212. {
  213. uiDataGridView2.Rows[i].Cells["col2_1"].Value = item2.A;
  214. uiDataGridView2.Rows[i].Cells["col2_2"].Value = item2.B;
  215. uiDataGridView2.Rows[i].Cells["col2_3"].Value = item2.C;
  216. uiDataGridView2.Rows[i].Cells["col2_4"].Value = item2.D;
  217. uiDataGridView2.Rows[i].Cells["col2_5"].Value = item2.E;
  218. }
  219. }
  220. //
  221. this.btnSave.Visible = this.btnReload.Visible = true;
  222. }
  223. private void clear(bool resetAll=false)
  224. {
  225. model = new Models.Product();
  226. if (resetAll)
  227. {
  228. rbMaterial0.Checked=rbMaterial1.Checked=false;
  229. cmbColor.SelectedIndex = -1;
  230. }
  231. tcbarLightValue.Value = tcbarExposureTime.Value = tcbarGain.Value = tcbarTensionValue.Value=0;
  232. //cmbModelName.SelectedIndex = -1;
  233. numDefectAreaLimit.Text =numDefectCountLimit.Text= "0";
  234. swcDefectPauseForUser.Active = true;
  235. this.btnSave.Visible = true;
  236. this.btnReload.Visible = false;
  237. //
  238. uiDataGridView1.Rows.Clear();
  239. uiDataGridView2.Rows.Clear();
  240. string code, name;
  241. //===uiDataGridView1
  242. //加列
  243. //uiDataGridView1.Columns.Add("col_code", "code");
  244. //uiDataGridView1.Columns.Add("col_zxd", "置信度");
  245. //uiDataGridView1.Columns.Add("col_area", "面积");
  246. //uiDataGridView1.Columns.Add("col_contrast", "对比度");
  247. //禁止点击列头排序
  248. //uiDataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
  249. uiDataGridView1.Columns[0].Visible = false;
  250. //加行
  251. foreach (JObject item in Config.defectItemList)
  252. {
  253. code = item.Value<string>("code");
  254. name = item.Value<string>("name");
  255. //color = item.Value<string>("color");
  256. uiDataGridView1.Rows.Add();
  257. uiDataGridView1.Rows[uiDataGridView1.RowCount - 1].HeaderCell.Value = name;
  258. uiDataGridView1[0, uiDataGridView1.RowCount - 1].Value = code;
  259. }
  260. //===uiDataGridView2
  261. //加列
  262. //uiDataGridView2.Columns.Add("col_code", "code");
  263. //uiDataGridView2.Columns.Add("col_1", "A");
  264. //uiDataGridView2.Columns.Add("col_2", "B");
  265. //uiDataGridView2.Columns.Add("col_3", "C");
  266. //uiDataGridView2.Columns.Add("col_4", "D");
  267. //uiDataGridView2.Columns.Add("col_5", "E");
  268. //禁止点击列头排序
  269. //uiDataGridView2.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
  270. uiDataGridView2.Columns[0].Visible = false;
  271. //加行
  272. foreach (JObject item in Config.defectItemList)
  273. {
  274. code = item.Value<string>("code");
  275. name = item.Value<string>("name");
  276. //color = item.Value<string>("color");
  277. uiDataGridView2.Rows.Add();
  278. uiDataGridView2.Rows[uiDataGridView2.RowCount - 1].HeaderCell.Value = name;
  279. uiDataGridView2[0, uiDataGridView2.RowCount - 1].Value = code;
  280. }
  281. }
  282. private void FProductInfo_Initialize(object sender, EventArgs e)
  283. {
  284. }
  285. private void btnNew_Click(object sender, EventArgs e)
  286. {
  287. this.clear();
  288. }
  289. private void btnReload_Click(object sender, EventArgs e)
  290. {
  291. try
  292. {
  293. this.loadProduct(model.Id,true);
  294. }
  295. catch (Exception ex)
  296. {
  297. UIMessageTip.ShowError(ex.Message, 2000);
  298. }
  299. }
  300. private void btnSave_Click(object sender, EventArgs e)
  301. {
  302. try
  303. {
  304. if (!this.rbMaterial0.Checked && !rbMaterial1.Checked
  305. && !rbMaterial2.Checked && !rbMaterial3.Checked
  306. && !rbMaterial4.Checked && !rbMaterial5.Checked
  307. ) throw new Exception("请选择材质!");
  308. if (this.cmbColor.SelectedIndex < 0) throw new Exception("请选择颜色!");
  309. if (this.cmbModelName.SelectedIndex < 0) throw new Exception("请选择模型!");
  310. model.Material = GetMaterialIndex();
  311. model.Color = (int)cmbColor.SelectedValue;
  312. model.Code = model.Material+"-"+ model.Color;
  313. model.LightValue = tcbarLightValue.Value;
  314. model.TensionValue = tcbarTensionValue.Value;
  315. model.ExposureTime = tcbarExposureTime.Value;
  316. model.Gain = tcbarGain.Value;
  317. model.ModelName = this.cmbModelName.Text.Trim();
  318. model.DefectAreaLimit = double.Parse(numDefectAreaLimit.Text.Trim());
  319. model.DefectCountLimit = int.Parse(numDefectCountLimit.Text.Trim());
  320. model.DefectPauseForUser = swcDefectPauseForUser.Active;
  321. model.OpenThicknessDetection = uiSwitch1.Active;
  322. int ival;
  323. if (int.TryParse(uiNumPadTextBox1.Text, out ival))
  324. model.ThicknessDetectionStopDis = int.Parse(uiNumPadTextBox1.Text.Trim());
  325. else
  326. model.ThicknessDetectionStopDis = 0;
  327. //datagrid
  328. if (model.QualifiedLimitList == null)
  329. model.QualifiedLimitList = new List<Models.QualifiedLimit>();
  330. else
  331. model.QualifiedLimitList.Clear();
  332. QualifiedLimit qualifiedLimit = new QualifiedLimit();
  333. for (int i=0;i< uiDataGridView1.Rows.Count;i++ )
  334. {
  335. qualifiedLimit = new Models.QualifiedLimit()
  336. {
  337. Code = uiDataGridView1.Rows[i].Cells["col_code"].Value.ToString(),
  338. ZXD = Utils.Util.IsDecimal(uiDataGridView1.Rows[i].Cells["col_zxd"].Value) ? Convert.ToDouble(uiDataGridView1.Rows[i].Cells["col_zxd"].Value) : 0,
  339. Area = Utils.Util.IsDecimal(uiDataGridView1.Rows[i].Cells["col_area"].Value) ? Convert.ToDouble(uiDataGridView1.Rows[i].Cells["col_area"].Value) / 100 : 0,
  340. ContrastLower = Utils.Util.IsDecimal(uiDataGridView1.Rows[i].Cells["col_contrast_lower"].Value) ? PercentToContrast(Convert.ToDouble(uiDataGridView1.Rows[i].Cells["col_contrast_lower"].Value)) : 0,
  341. ContrastTop = Utils.Util.IsDecimal(uiDataGridView1.Rows[i].Cells["col_contrast_top"].Value) ? PercentToContrast(Convert.ToDouble(uiDataGridView1.Rows[i].Cells["col_contrast_top"].Value)) : 0,
  342. IsOR = Convert.ToBoolean(uiDataGridView1.Rows[i].Cells["col_IsOR"].Value),
  343. DefectWarnLength = Utils.Util.IsDecimal(uiDataGridView1.Rows[i].Cells["col_Len"].Value) ? (int)Convert.ToDouble(uiDataGridView1.Rows[i].Cells["col_Len"].Value) : 0,
  344. DefectWarnCnt = Utils.Util.IsDecimal(uiDataGridView1.Rows[i].Cells["col_Cnt"].Value) ? (int)Convert.ToDouble(uiDataGridView1.Rows[i].Cells["col_Cnt"].Value) : 0,
  345. ModifyUserCode = Config.loginUser.Code,
  346. CreateUserCode = Config.loginUser.Code
  347. };
  348. if (qualifiedLimit.ContrastLower + qualifiedLimit.ContrastTop > 0 && qualifiedLimit.ContrastTop < qualifiedLimit.ContrastLower)
  349. throw new Exception($"检测标准中第{i+1}行中对比度上限值({ContrastToPercent(qualifiedLimit.ContrastTop)})不可小于下限值({ContrastToPercent(qualifiedLimit.ContrastLower)})!");
  350. model.QualifiedLimitList.Add(qualifiedLimit);
  351. }
  352. //
  353. if (model.GradeLimitList == null)
  354. model.GradeLimitList = new List<Models.GradeLimit>();
  355. else
  356. model.GradeLimitList.Clear();
  357. for (int i = 0; i < uiDataGridView2.Rows.Count; i++)
  358. {
  359. model.GradeLimitList.Add(
  360. new Models.GradeLimit()
  361. {
  362. Code = uiDataGridView2.Rows[i].Cells["col2_code"].Value.ToString(),
  363. A = Utils.Util.IsNumber(uiDataGridView2.Rows[i].Cells["col2_1"].Value)? Convert.ToInt32(uiDataGridView2.Rows[i].Cells["col2_1"].Value) : 0,
  364. B = Utils.Util.IsNumber(uiDataGridView2.Rows[i].Cells["col2_2"].Value) ? Convert.ToInt32(uiDataGridView2.Rows[i].Cells["col2_2"].Value) : 0,
  365. C = Utils.Util.IsNumber(uiDataGridView2.Rows[i].Cells["col2_3"].Value) ? Convert.ToInt32(uiDataGridView2.Rows[i].Cells["col2_3"].Value) : 0,
  366. D = Utils.Util.IsNumber(uiDataGridView2.Rows[i].Cells["col2_4"].Value) ? Convert.ToInt32(uiDataGridView2.Rows[i].Cells["col2_4"].Value) : 0,
  367. E = Utils.Util.IsNumber(uiDataGridView2.Rows[i].Cells["col2_5"].Value) ? Convert.ToInt32(uiDataGridView2.Rows[i].Cells["col2_5"].Value) : 0,
  368. ModifyUserCode = Config.loginUser.Code,
  369. CreateUserCode = Config.loginUser.Code
  370. });
  371. }
  372. //
  373. model.ModifyUserCode = Config.loginUser.Code;
  374. bool result;
  375. if (model.Id == 0)
  376. {
  377. model.CreateUserCode = Config.loginUser.Code;
  378. result = service.InsertNav(model);
  379. }
  380. else
  381. {
  382. result = service.UpdateNav(model);
  383. }
  384. if (!result)
  385. throw new Exception("保存失败!");
  386. this.btnReload.Visible = true;
  387. UIMessageTip.ShowOk("保存成功!", 1000);
  388. }
  389. catch (Exception ex)
  390. {
  391. UIMessageTip.ShowError(ex.Message, 2000);
  392. }
  393. }
  394. //
  395. private void tcbarLightValue_ValueChanged(object sender, EventArgs e)
  396. {
  397. lblLightValue.Text = $"{tcbarLightValue.Value}/{tcbarLightValue.Maximum}";
  398. }
  399. private void tcbarExposureTime_ValueChanged(object sender, EventArgs e)
  400. {
  401. lblExposureTime.Text = $"{tcbarExposureTime.Value}/{tcbarExposureTime.Maximum}";
  402. }
  403. private void tcbarGainValue_ValueChanged(object sender, EventArgs e)
  404. {
  405. lblGain.Text = $"{tcbarGain.Value}/{tcbarGain.Maximum}";
  406. }
  407. private void tcbarTensionValue_ValueChanged(object sender, EventArgs e)
  408. {
  409. lblTensionValue.Text = $"{tcbarTensionValue.Value}/{tcbarTensionValue.Maximum}";
  410. }
  411. private void button1_Click(object sender, EventArgs e)
  412. {
  413. this.clear(true);
  414. }
  415. string GetMaterialIndex()
  416. {
  417. if (this.rbMaterial0.Checked)
  418. return "0";
  419. else if (this.rbMaterial1.Checked)
  420. return "1";
  421. else if (this.rbMaterial2.Checked)
  422. return "2";
  423. else if (this.rbMaterial3.Checked)
  424. return "3";
  425. else if (this.rbMaterial4.Checked)
  426. return "4";
  427. else
  428. return "5";
  429. }
  430. private void cmbMaterial_SelectedIndexChanged(object sender, EventArgs e)
  431. {
  432. //if (this.cmbMaterial.SelectedIndex < 0 || this.cmbColor.SelectedIndex < 0)
  433. // return;
  434. if ((!this.rbMaterial0.Checked && !this.rbMaterial1.Checked && !this.rbMaterial2.Checked
  435. && !this.rbMaterial3.Checked && !this.rbMaterial4.Checked && !this.rbMaterial5.Checked)
  436. || this.cmbColor.SelectedIndex < 0)
  437. return;
  438. this.loadProduct(GetMaterialIndex() + "-" + this.cmbColor.SelectedValue.ToString());
  439. }
  440. private void btnDefectOption_Click(object sender, EventArgs e)
  441. {
  442. if (this.model == null || this.model.Id==0)
  443. return;
  444. FSelDefect frm = new FSelDefect(model.DefectPauseOption);
  445. frm.Render();
  446. frm.Text = "选择瑕疵";
  447. frm.ShowDialog();
  448. if (frm.IsOK)
  449. {
  450. model.DefectPauseOption = frm.lstCodes;
  451. }
  452. frm.Dispose();
  453. }
  454. private void swcDefectPauseForUser_ValueChanged(object sender, bool value)
  455. {
  456. btnDefectOption.Enabled = swcDefectPauseForUser.Active;
  457. }
  458. }
  459. }