diff --git a/ITC81DB_0H/Controls/CenterBasic/ControlCenterBasicProduct.cs b/ITC81DB_0H/Controls/CenterBasic/ControlCenterBasicProduct.cs index 757d2cb..6c80b93 100644 --- a/ITC81DB_0H/Controls/CenterBasic/ControlCenterBasicProduct.cs +++ b/ITC81DB_0H/Controls/CenterBasic/ControlCenterBasicProduct.cs @@ -299,8 +299,7 @@ namespace ITC81DB_0H.Controls { string before = "", after = ""; before = this.SelectedProductItem.Name; - this.SelectedProductItem.Name = this.textBoxProductName.Text; - after = this.SelectedProductItem.Name; + after = this.SelectedProductItem.Name = this.textBoxProductName.Text; this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].Name = this.textBoxProductName.Text; this.listBoxProductList.SelectedIndexChanged -= new EventHandler(this.listBoxProductList_SelectedIndexChanged); @@ -329,7 +328,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.ClearAlarm(0); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ChangeProductName, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ChangeName, "", before, after); } else if (e.KeyChar == 27) { @@ -431,6 +430,10 @@ namespace ITC81DB_0H.Controls } else { + string before = "", after = ""; + + before = this.labelOverRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.labelOverRange.Text = myKeyPad.StringValue; @@ -438,6 +441,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].OverRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); this.DisplayControls(this.SelectedProductItem); + + after = this.labelOverRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "", before, after); } } } @@ -445,6 +453,7 @@ namespace ITC81DB_0H.Controls { int digit = 0, temp = 0, range = 0; string value = "", feedbackValue = ""; + string before = "", after = ""; int oldUnderRangeDeviation = this.SelectedProductItem.UnderRangeDeviation; int oldOverRangeDeviation = this.SelectedProductItem.OverRangeDeviation; @@ -454,12 +463,21 @@ namespace ITC81DB_0H.Controls if (myKeyPad.ShowDialog() != DialogResult.OK) return; + before = this.labelPassRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.SelectedProductItem.PassRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].PassRange = myKeyPad.StringValue.Replace(".", ""); + after = this.labelPassRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.PassRange, "", before, after); + #region UnderRange + before = this.labelUnderRange.Text; + temp = this.SelectedProductItem.PassRangeInt + oldUnderRangeDeviation; if (temp < 0) value = "0"; @@ -468,9 +486,16 @@ namespace ITC81DB_0H.Controls this.SelectedProductItem.UnderRange = value; this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].UnderRange = value; + + after = this.labelUnderRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "Change Pass Value", before, after); #endregion #region OverRange + before = this.labelOverRange.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) range = 9999; else @@ -490,6 +515,11 @@ namespace ITC81DB_0H.Controls this.SelectedProductItem.OverRange = value; this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].OverRange = value; + + after = this.labelOverRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "Change Pass Value", before, after); #endregion this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); @@ -510,6 +540,10 @@ namespace ITC81DB_0H.Controls } else { + string before = "", after = ""; + + before = this.labelUnderRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.labelUnderRange.Text = myKeyPad.StringValue; @@ -518,6 +552,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); this.DisplayControls(this.SelectedProductItem); + + after = this.labelUnderRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "", before, after); } } } @@ -544,6 +583,10 @@ namespace ITC81DB_0H.Controls } else { + string before = "", after = ""; + + before = this.labelOverRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.labelDeviationOver.Text = myKeyPad.StringValue; @@ -552,6 +595,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); this.DisplayControls(this.SelectedProductItem); + + after = this.labelOverRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "Change Deviation", before, after); } } } @@ -578,6 +626,10 @@ namespace ITC81DB_0H.Controls } else { + string before = "", after = ""; + + before = this.labelUnderRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.labelDeviationUnder.Text = myKeyPad.StringValue; @@ -586,6 +638,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); this.DisplayControls(this.SelectedProductItem); + + after = this.labelUnderRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "Change Deviation", before, after); } } } @@ -605,12 +662,21 @@ namespace ITC81DB_0H.Controls } else { + string before = "", after = ""; + + before = this.labelTareRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.labelTareRange.Text = myKeyPad.StringValue; this.SelectedProductItem.TareRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].TareRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); + + after = this.labelTareRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TareRange, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs index 3ca9f9f..7411c04 100644 --- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs +++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs @@ -27,6 +27,7 @@ namespace ITC81DB_0H.Controls public ControlConfiSerialHitachi ControlHitachi; public ControlConfiSerialMarkoPrint ControlMarkoprint; public ControlConfiModbus ControlModbusTCP; + public ControlConfiMULTiJET ControlMultiJet; private delegate void ConnetedIPStatusCallback(string value); #endregion @@ -193,6 +194,12 @@ namespace ITC81DB_0H.Controls this.Controls.Add(this.ControlModbusTCP); this.ControlModbusTCP.Location = new Point(0, 217); + this.ControlMultiJet = new ControlConfiMULTiJET(this.ParentForm); + this.Controls.Add(this.ControlMultiJet); + this.ControlMultiJet.Location = new Point(0, 217); + + this.ControlVisible(false); + if (this.ParentForm.ParentForm.SystemConfig2.IsEthernetEnable == true) { this.buttonStart.Enabled = true; @@ -252,6 +259,11 @@ namespace ITC81DB_0H.Controls this.comboBoxEthernetMode.Items.Add("-"); // Impinj Speedway-R420(RFID) 21 this.comboBoxEthernetMode.Items.Add("Modbus TCP"); // 모드버스 TCP 22 this.comboBoxEthernetMode.Items.Add("STD2"); // STD2 23 + this.comboBoxEthernetMode.Items.Add("MULTi-JET"); // MULTi-JET 24 + this.comboBoxEthernetMode.Items.Add("DJ(VIDEOJET)"); // DJ VIDEOJET 25 + this.comboBoxEthernetMode.Items.Add("LINX8830"); // LINX8830 잉크젯 프린터 26 + this.comboBoxEthernetMode.Items.Add("MYJET"); // MYJET 잉크젯 프린터 27 + this.comboBoxEthernetMode.Items.Add("OPT4"); // 바코드 값과 함께 전송(Tasco건) 28 } else { @@ -364,9 +376,24 @@ namespace ITC81DB_0H.Controls case 20: // markem-imaje 9410 OPT3 this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; break; - case (int)Define.E_EthernetMode.f23_STD2: // STD2 + case (int)Define.E_CommMode.f22_Modbus: // Modbus_TCP + this.labelFormat.Text = "ID, Product No, Under, Pass, Over, Under Count, Pass Count, Over Count, NG Count, ExNG Count, Total Count, Grade, Weight, Status(Run/Stop)"; + break; + case (int)Define.E_CommMode.f23_STD2: // STD2 this.labelFormat.Text = "STX[1],ID[5],No[4],U[6],P[6],O[6],UC[7],PC[7],OC[7],ExC[7],TC[9],Grd[1],Sign[1],Weight[6],ETX[1]"; break; + case (int)Define.E_CommMode.f24_MULTi_JET: // Multi-jet + this.labelFormat.Text = "0x1B,0x02,Slave Address[1],0x1D,0x02,0x01,0x0A,Date[10],0x02,0x07,Weight[6],'g',0x1B,0x03,Chksum[1]"; + break; + case (int)Define.E_CommMode.f26_LINX8830: // LINX8830 + this.labelFormat.Text = "0x1B,0x02,0x1D,0x06,0x00,Weight[6],0x1B,0x03"; + break; + case (int)Define.E_CommMode.f27_MYJET: // MYJET + this.labelFormat.Text = "0x1B,0x02,IP[1],0x1D,0x01,0x01,0x06,Weight[6],0x1B,0x03,Checksum[1]"; + break; + case (int)Define.E_CommMode.f28_OPT4: // OPT4 + this.labelFormat.Text = "0x02,Date[yyyy-MM-dd HH:mm:ss, 19];Grade[1];Weight[6];Data,0x03"; + break; default: this.buttonTestSend.Enabled = false; this.labelFormat.Text = "Private use"; @@ -410,10 +437,11 @@ namespace ITC81DB_0H.Controls { this.DisplayBottomSettingMenu(); - if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f9_Hitachi - || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f11_Markoprint - || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f16_OPC - || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f22_Modbus_TCP) + if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f9_Hitachi + || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f11_Markoprint + || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f16_OPC + || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f22_Modbus + || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f24_MULTi_JET) this.buttonAddon.Visible = true; else this.buttonAddon.Visible = false; @@ -423,6 +451,7 @@ namespace ITC81DB_0H.Controls this.ControlHitachi.Visible = visible; this.ControlMarkoprint.Visible = visible; this.ControlModbusTCP.Visible = visible; + this.ControlMultiJet.Visible = visible; } private void DisplayBottomSettingMenu() { @@ -430,25 +459,31 @@ namespace ITC81DB_0H.Controls this.buttonTestSend.Enabled = true; - if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f9_Hitachi) + if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f9_Hitachi) { this.ControlHitachi.Visible = true; this.ControlHitachi.BringToFront(); this.ControlHitachi.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); } - else if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f11_Markoprint) + else if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f11_Markoprint) { this.ControlMarkoprint.Visible = true; this.ControlMarkoprint.BringToFront(); this.ControlMarkoprint.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); } - else if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f22_Modbus_TCP - || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f16_OPC) + else if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f22_Modbus + || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f16_OPC) { this.ControlModbusTCP.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); this.ControlModbusTCP.Visible = true; this.ControlModbusTCP.BringToFront(); } + else if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f24_MULTi_JET) + { + this.ControlMultiJet.Visible = true; + this.ControlMultiJet.BringToFront(); + this.ControlMultiJet.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); + } else { @@ -476,7 +511,7 @@ namespace ITC81DB_0H.Controls this.comboBoxEthernetOpMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.EthernetOperationMode; if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f23_STD2) + if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f23_STD2) this.comboBoxEthernetMode.SelectedIndex = ModeSTD2; else if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode > this.comboBoxEthernetMode.Items.Count - 1) { @@ -1086,9 +1121,9 @@ namespace ITC81DB_0H.Controls this.buttonSave2.Enabled = false; if (beforeServerIP != afterServerIP) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetServerIPAddress, "", beforeServerIP, afterServerIP); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPServerIPAddress, "", beforeServerIP, afterServerIP); if (beforeServerPort != afterServerPort) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetServerPort, "", beforeServerPort, afterServerPort); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPServerPort, "", beforeServerPort, afterServerPort); } private void labelHostPort_Click(object sender, EventArgs e) @@ -1383,20 +1418,20 @@ namespace ITC81DB_0H.Controls } if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2) - mode = (int)Define.E_SerialMode.f23_STD2; + mode = (int)Define.E_CommMode.f23_STD2; else mode = this.comboBoxEthernetMode.SelectedIndex; this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode = mode; afterComMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(mode); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f22_Modbus_TCP - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f16_OPC - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f16_OPC - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f16_OPC - || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f16_OPC + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f16_OPC + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f16_OPC + || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f16_OPC) this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(true); else this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(false); @@ -1409,11 +1444,11 @@ namespace ITC81DB_0H.Controls afterLocalPort = this.labelLocalPort.Text; if (beforeLocalPort != afterLocalPort) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetLocalPort, "", beforeLocalPort, afterLocalPort); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalPort, "", beforeLocalPort, afterLocalPort); if (beforeOpMode != afterOpMode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetOperationMode, "", beforeOpMode, afterOpMode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPOpMode, "", beforeOpMode, afterOpMode); if (beforeComMode != afterComMode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetComMode, "", beforeComMode, afterComMode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPComMode, "", beforeComMode, afterComMode); } private void buttonAddon_Click(object sender, EventArgs e) diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs index 2dac3d6..d784af6 100644 --- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs +++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs @@ -29,6 +29,7 @@ namespace ITC81DB_0H.Controls public ControlConfiSerialMarkoPrint ControlMarkoprint; public ControlConfiSerialBarcode ControlBarcode; public ControlConfiModbus ControlModbusRTU; + public ControlConfiMULTiJET ControlMultiJet; #endregion #region Constructor @@ -148,6 +149,10 @@ namespace ITC81DB_0H.Controls this.Controls.Add(this.ControlModbusRTU); this.ControlModbusRTU.Location = new Point(0, 217); + this.ControlMultiJet = new ControlConfiMULTiJET(this.ParentForm); + this.Controls.Add(this.ControlMultiJet); + this.ControlMultiJet.Location = new Point(0, 217); + this.ControlVisible(false); this.comboBoxSerialBaudRate.Items.Clear(); @@ -194,6 +199,11 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.Items.Add("-"); // RFID 21 this.comboBoxSerialMode.Items.Add("Modbus RTU"); // 모드버스 RTU 22 this.comboBoxSerialMode.Items.Add("STD2"); // STD2 23 + this.comboBoxSerialMode.Items.Add("MULTi-JET"); // MULTi-JET 24 + this.comboBoxSerialMode.Items.Add("DJ(VIDEOJET)"); // DJ VIDEOJET 25 + this.comboBoxSerialMode.Items.Add("LINX8830"); // LINX8830 잉크젯 프린터 26 + this.comboBoxSerialMode.Items.Add("MYJET"); // MYJET 잉크젯 프린터 27 + this.comboBoxSerialMode.Items.Add("OPT4"); // 바코드 값과 함께 전송(Tasco건) 28 //this.comboBoxSerialMode.Items.Add("Barcode"); //this.comboBoxSerialMode.Items.Add("User Define"); } @@ -208,6 +218,232 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.SelectedIndexChanged += new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); } + public string ReturnBaudrateName(int num) + { + switch (num) + { + case 0: + return "9600"; + case 1: + return "19200"; + case 2: + return "38400"; + case 3: + return "57600"; + case 4: + return "115200"; + default: + return "9600"; + } + } + public string ReturnCommunicationModeName(int num) + { + if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + { + #region 독일어 + switch (num) + { + case 0: + return "Keiner"; + case 1: + return "STD1"; + case 2: + return "Fernzugriff"; + case 3: + return "Drucker"; + case 4: + return "imaje9410-1"; + case 5: + return "imaje9028-1"; + case 6: + return "OPT0"; + case 7: + return "imaje9410-2"; + case 8: + return "imaje9028-2"; + case 9: + return "Hitachi"; + case 10: + return "MACSA"; + case 11: + return "Markoprint"; + case 12: + return "alphaJET"; + case 13: + return "VJ1510"; + case 14: + return "OPT1"; + case 15: + return "OPT2"; + case 16: + return "OPC"; + case 17: + return "OPT3"; + case 18: + return "HP-200"; + case 19: + return "Smart Jet"; + case 20: + return "imaje 9410 OPT3"; + case 21: + return "RFID R420"; + case 22: + return "Modbus"; + case 23: + return "STD2"; + case 24: + return "MULTi-JET"; + case 25: + return "DJ(VIDEOJET)"; + case 26: + return "LINX8830"; + case 27: + return "MYJET"; + case 28: + return "OPT4"; + default: + return "Keiner"; + } + #endregion + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + { + #region 스페인어 + switch (num) + { + case 0: + return "Ninguna"; + case 1: + return "STD1"; + case 2: + return "Remoto"; + case 3: + return "Impresora industrial"; + case 4: + return "imaje9410-1"; + case 5: + return "imaje9028-1"; + case 6: + return "OPT0"; + case 7: + return "imaje9410-2"; + case 8: + return "imaje9028-2"; + case 9: + return "Hitachi"; + case 10: + return "MACSA"; + case 11: + return "Markoprint"; + case 12: + return "alphaJET"; + case 13: + return "VJ1510"; + case 14: + return "OPT1"; + case 15: + return "OPT2"; + case 16: + return "OPC"; + case 17: + return "OPT3"; + case 18: + return "HP-200"; + case 19: + return "Smart Jet"; + case 20: + return "imaje 9410 OPT3"; + case 21: + return "RFID R420"; + case 22: + return "Modbus"; + case 23: + return "STD2"; + case 24: + return "MULTi-JET"; + case 25: + return "DJ(VIDEOJET)"; + case 26: + return "LINX8830"; + case 27: + return "MYJET"; + case 28: + return "OPT4"; + default: + return "Ninguna"; + } + #endregion + } + else + { + #region 한국어 + switch (num) + { + case 0: + return "None"; + case 1: + return "STD1"; + case 2: + return "Remote"; + case 3: + return "Printer"; + case 4: + return "imaje9410-1"; + case 5: + return "imaje9028-1"; + case 6: + return "OPT0"; + case 7: + return "imaje9410-2"; + case 8: + return "imaje9028-2"; + case 9: + return "Hitachi"; + case 10: + return "MACSA"; + case 11: + return "Markoprint"; + case 12: + return "alphaJET"; + case 13: + return "VJ1510"; + case 14: + return "OPT1"; + case 15: + return "OPT2"; + case 16: + return "OPC"; + case 17: + return "OPT3"; + case 18: + return "HP-200"; + case 19: + return "Smart Jet"; + case 20: + return "imaje 9410 OPT3"; + case 21: + return "RFID R420"; + case 22: + return "Modbus"; + case 23: + return "STD2"; + case 24: + return "MULTi-JET"; + case 25: + return "DJ(VIDEOJET)"; + case 26: + return "LINX8830"; + case 27: + return "MYJET"; + case 28: + return "OPT4"; + default: + return "None"; + } + #endregion + } + } + private void UpdateLabelFormatDisplay() { if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) @@ -299,12 +535,27 @@ namespace ITC81DB_0H.Controls case 20: // markem-imaje 9410 OPT3 this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; break; - case (int)Define.E_SerialMode.f23_STD2: // STD2 + case (int)Define.E_CommMode.f23_STD2: // STD2 this.labelFormat.Text = "STX[1],ID[5],No[4],U[6],P[6],O[6],UC[7],PC[7],OC[7],ExC[7],TC[9],Grd[1],Sign[1],Weight[6],ETX[1]"; break; + case (int)Define.E_CommMode.f24_MULTi_JET: // Multi-jet + this.labelFormat.Text = "0x1B,0x02,Slave Address[1],0x1D,0x02,0x01,0x0A,Date[10],0x02,0x07,Weight[6],'g',0x1B,0x03,Chksum[1]"; + break; + case (int)Define.E_CommMode.f26_LINX8830: // LINX8830 + this.labelFormat.Text = "0x1B,0x02,0x1D,0x06,0x00,Weight[6],0x1B,0x03"; + break; + case (int)Define.E_CommMode.f27_MYJET: // MYJET + this.labelFormat.Text = "0x1B,0x02,0x05,0x1D,0x01,0x01,0x06,Weight[6],0x1B,0x03,Checksum[1]"; + break; + case (int)Define.E_CommMode.f28_OPT4: // OPT4 + this.labelFormat.Text = "0x02,Date[yyyy-MM-dd HH:mm:ss, 19];Grade[1];Weight[6];Data,0x03"; + break; default: - this.buttonTestSend.Enabled = false; - this.labelFormat.Text = "Private use"; + if (this.ParentForm.ParentForm.SystemConfig2.Barcode == 0) + { + this.buttonTestSend.Enabled = false; + this.labelFormat.Text = "Private use"; + } break; } } @@ -315,6 +566,7 @@ namespace ITC81DB_0H.Controls this.ControlHitachi.Visible = visible; this.ControlMarkoprint.Visible = visible; this.ControlModbusRTU.Visible = visible; + this.ControlMultiJet.Visible = visible; //this.ControlBarcode.Visible = visible; } private void ButtonAddOnDisplay() @@ -322,10 +574,11 @@ namespace ITC81DB_0H.Controls this.ControlVisible(false); this.DisplayBottomSettingMenu(); - if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f9_Hitachi - || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f11_Markoprint - || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f16_OPC - || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f22_Modbus_RTU) + if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f9_Hitachi + || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f11_Markoprint + || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f16_OPC + || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f22_Modbus + || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f24_MULTi_JET) this.buttonAddon.Visible = true; else this.buttonAddon.Visible = false; @@ -356,7 +609,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - if (item.SerialCOM1Mode == (int)Define.E_SerialMode.f23_STD2) + if (item.SerialCOM1Mode == (int)Define.E_CommMode.f23_STD2) this.comboBoxSerialMode.SelectedIndex = ModeSTD2; else if (item.SerialCOM1Mode > this.comboBoxSerialMode.Items.Count - 1) this.comboBoxSerialMode.SelectedIndex = 0; @@ -371,12 +624,12 @@ namespace ITC81DB_0H.Controls this.labelTransmissionDelayTime.Text = item.TransmissionDelayTimeCOM1.ToString(); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f16_OPC) { this.comboBoxSerialBaudRate.Enabled = false; this.ControlModbusRTU.OPCSettings(); } - else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f22_Modbus_RTU) + else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f22_Modbus) this.ControlModbusRTU.ModbusRTUDefaultSettings(); else this.ControlModbusRTU.SerialDefaultSettings(); @@ -426,7 +679,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - if (item.SerialCOM3Mode == (int)Define.E_SerialMode.f23_STD2) + if (item.SerialCOM3Mode == (int)Define.E_CommMode.f23_STD2) this.comboBoxSerialMode.SelectedIndex = ModeSTD2; else if (item.SerialCOM3Mode > this.comboBoxSerialMode.Items.Count - 1) this.comboBoxSerialMode.SelectedIndex = 0; @@ -441,12 +694,12 @@ namespace ITC81DB_0H.Controls this.labelTransmissionDelayTime.Text = this.ParentForm.ParentForm.SystemConfig1.TransmissionDelayTimeCOM3.ToString(); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f16_OPC) // OPC + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f16_OPC) // OPC { this.comboBoxSerialBaudRate.Enabled = false; this.ControlModbusRTU.OPCSettings(); } - else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f22_Modbus_RTU) + else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f22_Modbus) this.ControlModbusRTU.ModbusRTUDefaultSettings(); else this.ControlModbusRTU.SerialDefaultSettings(); @@ -464,7 +717,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - if (item.SerialCOM4Mode == (int)Define.E_SerialMode.f23_STD2) + if (item.SerialCOM4Mode == (int)Define.E_CommMode.f23_STD2) this.comboBoxSerialMode.SelectedIndex = ModeSTD2; else if (item.SerialCOM4Mode > this.comboBoxSerialMode.Items.Count - 1) this.comboBoxSerialMode.SelectedIndex = 0; @@ -479,12 +732,12 @@ namespace ITC81DB_0H.Controls this.labelTransmissionDelayTime.Text = item.TransmissionDelayTimeCOM4.ToString(); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f16_OPC) // OPC + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f16_OPC) // OPC { this.comboBoxSerialBaudRate.Enabled = false; this.ControlModbusRTU.OPCSettings(); } - else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f22_Modbus_RTU) + else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f22_Modbus) this.ControlModbusRTU.ModbusRTUDefaultSettings(); else this.ControlModbusRTU.SerialDefaultSettings(); @@ -505,13 +758,23 @@ namespace ITC81DB_0H.Controls } private void SaveComboBox(int baudrate, int mode) { - string beforeBaudrate = "", afterBaudrate = "", beforeMode = "", afterMode = ""; - Define.E_MenuBottomConfiguration temp = this.ParentForm.CurrentConfigurationMenu(); + string[] beforeBaudrate = new string[3]; + string[] afterBaudrate = new string[3]; + string[] beforeMode = new string[3]; + string[] afterMode = new string[3]; + Define.E_MenuBottomConfiguration temp = this.ParentForm.CurrentConfigurationMenu(); this.ParentForm.ParentForm.ChangeSerialCOM3FrameBufferSize(1024); this.ParentForm.ParentForm.ChangeSerialCOM3ReceiveDetect(SmartX.SmartSerialPort.RECEIVEDETECTTYPE.EVENT_QUEUE); - if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f16_OPC) + beforeBaudrate[0] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate); + beforeBaudrate[1] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate); + beforeBaudrate[2] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate); + beforeMode[0] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode); + beforeMode[1] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode); + beforeMode[2] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode); + + if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f16_OPC) { this.ControlModbusRTU.OPCSettings(); @@ -525,7 +788,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 0; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.comboBoxSerialBaudRate.Enabled = false; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_SerialMode.f16_OPC; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_CommMode.f16_OPC; this.ParentForm.ParentForm.OpenSerialCOM1(); break; case Define.E_MenuBottomConfiguration.SerialCOM3: @@ -535,7 +798,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 0; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.comboBoxSerialBaudRate.Enabled = false; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_SerialMode.f16_OPC; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_CommMode.f16_OPC; this.ParentForm.ParentForm.OpenSerialCOM3(); break; case Define.E_MenuBottomConfiguration.SerialCOM4: @@ -545,7 +808,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 0; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.comboBoxSerialBaudRate.Enabled = false; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_SerialMode.f16_OPC; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_CommMode.f16_OPC; this.ParentForm.ParentForm.OpenSerialCOM4(); break; default: @@ -553,7 +816,7 @@ namespace ITC81DB_0H.Controls } #endregion } - else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f21_Impinj_Speedway_R420) + else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f21_Impinj_Speedway_R420) { #region RFID Speedway R420 switch (temp) @@ -564,7 +827,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 4; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate = 4; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_SerialMode.f21_Impinj_Speedway_R420; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_CommMode.f21_Impinj_Speedway_R420; this.ParentForm.ParentForm.ChangeSerialCOM1FrameSeparateType(Define.E_SeparateType.ETXONLY); this.ParentForm.ParentForm.OpenSerialCOM1(); break; @@ -574,7 +837,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 4; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate = 4; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_SerialMode.f21_Impinj_Speedway_R420; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_CommMode.f21_Impinj_Speedway_R420; this.ParentForm.ParentForm.ChangeSerialCOM3FrameSeparateType(Define.E_SeparateType.ETXONLY); this.ParentForm.ParentForm.OpenSerialCOM3(); break; @@ -584,7 +847,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 4; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate = 4; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_SerialMode.f21_Impinj_Speedway_R420; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_CommMode.f21_Impinj_Speedway_R420; this.ParentForm.ParentForm.ChangeSerialCOM4FrameSeparateType(Define.E_SeparateType.ETXONLY); this.ParentForm.ParentForm.OpenSerialCOM4(); break; @@ -601,61 +864,31 @@ namespace ITC81DB_0H.Controls { case Define.E_MenuBottomConfiguration.SerialCOM1: this.ParentForm.ParentForm.CloseSerialCOM1(); - beforeBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate); this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate = baudrate; - afterBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate); - if (beforeBaudrate != afterBaudrate) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM1Baudrate, "", beforeBaudrate, afterBaudrate); - - beforeMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2) - this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_SerialMode.f23_STD2; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_CommMode.f23_STD2; else this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = mode; - afterMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode); - if (beforeMode != afterMode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM1Mode, "", beforeMode, afterMode); - this.ParentForm.ParentForm.ChangeSerialCOM1FrameSeparateType(Define.E_SeparateType.STXANDETX); this.ParentForm.ParentForm.OpenSerialCOM1(); break; case Define.E_MenuBottomConfiguration.SerialCOM3: this.ParentForm.ParentForm.CloseSerialCOM3(); - beforeBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate); this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate = baudrate; - afterBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate); - if (beforeBaudrate != afterBaudrate) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM3Baudrate, "", beforeBaudrate, afterBaudrate); - - beforeMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2) - this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_SerialMode.f23_STD2; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_CommMode.f23_STD2; else this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = mode; - afterMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode); - if (beforeMode != afterMode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM3Mode, "", beforeMode, afterMode); - this.ParentForm.ParentForm.ChangeSerialCOM3FrameSeparateType(Define.E_SeparateType.STXANDETX); this.ParentForm.ParentForm.OpenSerialCOM3(); break; case Define.E_MenuBottomConfiguration.SerialCOM4: this.ParentForm.ParentForm.CloseSerialCOM4(); - beforeBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate); this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate = baudrate; - afterBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate); - if (beforeBaudrate != afterBaudrate) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM4Baudrate, "", beforeBaudrate, afterBaudrate); - - beforeMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2) - this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_SerialMode.f23_STD2; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_CommMode.f23_STD2; else this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = mode; - afterMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode); - if (beforeMode != afterMode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM4Mode, "", beforeMode, afterMode); - this.ParentForm.ParentForm.ChangeSerialCOM4FrameSeparateType(Define.E_SeparateType.STXANDETX); this.ParentForm.ParentForm.OpenSerialCOM4(); break; @@ -663,15 +896,35 @@ namespace ITC81DB_0H.Controls break; } - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f22_Modbus_TCP) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f22_Modbus) this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(true); else this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(false); } + afterBaudrate[0] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate); + afterBaudrate[1] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate); + afterBaudrate[2] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate); + afterMode[0] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode); + afterMode[1] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode); + afterMode[2] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode); + + if (beforeBaudrate[0] != afterBaudrate[0]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM1Baudrate, "", beforeBaudrate[0], afterBaudrate[0]); + if (beforeBaudrate[1] != afterBaudrate[1]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM3Baudrate, "", beforeBaudrate[1], afterBaudrate[1]); + if (beforeBaudrate[2] != afterBaudrate[2]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM4Baudrate, "", beforeBaudrate[2], afterBaudrate[2]); + if (beforeMode[0] != afterMode[0]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM1Mode, "", beforeMode[0], afterMode[0]); + if (beforeMode[1] != afterMode[1]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM3Mode, "", beforeMode[1], afterMode[1]); + if (beforeMode[2] != afterMode[2]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM4Mode, "", beforeMode[2], afterMode[2]); + this.ParentForm.ParentForm.SaveSystemConfigurationFile1(this.ParentForm.ParentForm.SystemConfig1); } @@ -696,25 +949,31 @@ namespace ITC81DB_0H.Controls this.buttonTestSend.Enabled = true; - if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f9_Hitachi) + if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f9_Hitachi) { this.ControlHitachi.Visible = true; this.ControlHitachi.BringToFront(); this.ControlHitachi.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); } - else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f11_Markoprint) + else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f11_Markoprint) { this.ControlMarkoprint.Visible = true; this.ControlMarkoprint.BringToFront(); this.ControlMarkoprint.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); } - else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f16_OPC) + else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f22_Modbus + || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f16_OPC) { this.ControlModbusRTU.Visible = true; this.ControlModbusRTU.BringToFront(); this.ControlModbusRTU.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); } + else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f24_MULTi_JET) + { + this.ControlMultiJet.Visible = true; + this.ControlMultiJet.BringToFront(); + this.ControlMultiJet.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); + } else { diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs index 0d42534..d965f2c 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs @@ -554,15 +554,18 @@ namespace ITC81DB_0H.Controls if (myDlg.ShowDialog() == DialogResult.Yes) { if (this.buttonPart11.ButtonStatus == SmartButton.BUTSTATUS.UP) + { this.ParentForm.ParentForm.SystemConfig3.IsPart11 = false; + this.ParentForm.ParentForm.SystemConfig1.IsLogin = false; + this.ParentForm.LoginVisible(false); + } else { - if (this.ParentForm.ParentForm.SystemConfig1.IsLogin == false) - this.ParentForm.ParentForm.SystemConfig1.IsLogin = true; + this.ParentForm.ParentForm.SystemConfig1.IsLogin = true; this.ParentForm.ParentForm.SystemConfig3.IsPart11 = true; + this.ParentForm.LoginVisible(true); } - this.ParentForm.ParentForm.ChildFormMenu.CenterEquipUser.DisplayOnlyPart11Item(); this.ParentForm.ParentForm.SaveSystemConfigurationFile1(this.ParentForm.ParentForm.SystemConfig1); this.ParentForm.ParentForm.SaveSystemConfigurationFile3(this.ParentForm.ParentForm.SystemConfig3); diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs index fa21cac..5c7213e 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs @@ -840,7 +840,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PI6, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExInputPIN6Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExIn6Mode, "", before, after); } private void comboBoxPIN5_SelectedIndexChanged(object sender, EventArgs e) { @@ -856,7 +856,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PI5, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExInputPIN5Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExIn5Mode, "", before, after); } private void comboBoxPIN4_SelectedIndexChanged(object sender, EventArgs e) { @@ -872,7 +872,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PI4, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExInputPIN4Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExIn4Mode, "", before, after); } private void comboBoxPIN3_SelectedIndexChanged(object sender, EventArgs e) { @@ -888,7 +888,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PI3, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExInputPIN3Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExIn3Mode, "", before, after); } private void comboBoxPIN2_SelectedIndexChanged(object sender, EventArgs e) { @@ -904,7 +904,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PI2, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExInputPIN2Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExIn2Mode, "", before, after); } private void buttonLogin_Click(object sender, EventArgs e) @@ -913,10 +913,7 @@ namespace ITC81DB_0H.Controls string before = "", after = ""; if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) - { - this.buttonLogin.ButtonDown(); return; - } if (this.ParentForm.ParentForm.SystemConfig1.IsLogin == false) before = "OFF"; @@ -933,11 +930,13 @@ namespace ITC81DB_0H.Controls if (this.buttonLogin.ButtonStatus == SmartX.SmartButton.BUTSTATUS.UP) { this.ParentForm.ParentForm.SystemConfig1.IsLogin = false; + this.ParentForm.LoginVisible(false); after = "OFF"; } else { this.ParentForm.ParentForm.SystemConfig1.IsLogin = true; + this.ParentForm.LoginVisible(true); after = "ON"; } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipInitialize.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipInitialize.cs index d476dbb..564ac56 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipInitialize.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipInitialize.cs @@ -203,7 +203,7 @@ namespace ITC81DB_0H.Controls this.DeleteCounterFile(); this.progressBarInitialize.Value = 100; - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Initialization_LCD, ""); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Init_LCD, ""); this.InitializeStep = Define.E_Step3.Step3; this.UpdateLabelStatus(this.InitializeStep, this.ParentForm.ParentForm.SystemConfig1.Language); @@ -227,7 +227,7 @@ namespace ITC81DB_0H.Controls this.CopyFolder(this.ParentForm.ParentForm.PathFlashDiskSystemFile2Folder, this.ParentForm.ParentForm.PathSDCardSystemFile2Folder); this.progressBarInitialize.Value += 15; this.DeleteCounterFile(); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Initialization_LCD, ""); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Init_LCD, ""); this.progressBarInitialize.Value += 15; this.timer.Enabled = true; @@ -406,7 +406,7 @@ namespace ITC81DB_0H.Controls this.progressBarInitialize.Value = 100; - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Initialization_Main, ""); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Init_Main, ""); this.InitializeStep = Define.E_Step3.Step3; this.UpdateLabelStatus(this.InitializeStep, this.ParentForm.ParentForm.SystemConfig1.Language); diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs index 685f819..51ab4ce 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs @@ -30,20 +30,16 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterEquipUser)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.comboBoxAccessRight = new System.Windows.Forms.ComboBox(); + this.labelAccessRightAdmin = new SmartX.SmartLabel(); + this.smartSeparatorLine2 = new SmartX.SmartSeparatorLine(); + this.smartSeparatorLine1 = new SmartX.SmartSeparatorLine(); this.labelAutoLogoutWarning = new SmartX.SmartLabel(); this.labelTitlePassword = new SmartX.SmartLabel(); this.buttonNew = new SmartX.SmartButton(); this.smartKeyboard = new SmartX.SmartKeyboard(); this.buttonSave = new SmartX.SmartButton(); this.buttonDelete = new SmartX.SmartButton(); - this.buttonChangeLevelName = new SmartX.SmartButton(); - this.textBoxLevel2 = new System.Windows.Forms.TextBox(); - this.textBoxLevel1 = new System.Windows.Forms.TextBox(); - this.textBoxLevel3 = new System.Windows.Forms.TextBox(); - this.buttonLevel3 = new SmartX.SmartButton(); - this.buttonLevel2 = new SmartX.SmartButton(); - this.buttonLevel1 = new SmartX.SmartButton(); - this.labelAccessRight = new SmartX.SmartLabel(); this.labelTitleAccessRight = new SmartX.SmartLabel(); this.smartLabel11 = new SmartX.SmartLabel(); this.labelAutomaticLogoutTime = new SmartX.SmartLabel(); @@ -63,31 +59,7 @@ this.textBoxID = new System.Windows.Forms.TextBox(); this.buttonGroupEditor = new SmartX.SmartButton(); this.listBoxUserList = new SmartX.SmartListBox(); - this.groupBoxAccessRight = new SmartX.SmartGroupBox(); - this.checkBoxUser = new SmartX.SmartCheckBox(); - this.labelTitleMain = new SmartX.SmartLabel(); - this.labelTitleMenu = new SmartX.SmartLabel(); - this.checkBoxLog = new SmartX.SmartCheckBox(); - this.checkBoxFeature = new SmartX.SmartCheckBox(); - this.checkBoxInitialization = new SmartX.SmartCheckBox(); - this.checkBoxUpdate = new SmartX.SmartCheckBox(); - this.checkBoxExternalOutput = new SmartX.SmartCheckBox(); - this.checkBoxIOTest = new SmartX.SmartCheckBox(); - this.checkBoxAutoZero = new SmartX.SmartCheckBox(); - this.checkBoxSorter = new SmartX.SmartCheckBox(); - this.checkBoxJudgment = new SmartX.SmartCheckBox(); - this.checkBoxCalibration = new SmartX.SmartCheckBox(); - this.checkBoxEthernet = new SmartX.SmartCheckBox(); - this.checkBoxSerial = new SmartX.SmartCheckBox(); - this.checkBoxDataStat = new SmartX.SmartCheckBox(); - this.checkBoxProduct = new SmartX.SmartCheckBox(); - this.checkBoxTime = new SmartX.SmartCheckBox(); - this.checkBoxSubMenu = new SmartX.SmartCheckBox(); - this.checkBoxClear = new SmartX.SmartCheckBox(); - this.checkBoxChangeWeight = new SmartX.SmartCheckBox(); - this.checkBoxChangeNo = new SmartX.SmartCheckBox(); this.smartGroupBox1.SuspendLayout(); - this.groupBoxAccessRight.SuspendLayout(); this.SuspendLayout(); // // smartGroupBox1 @@ -95,20 +67,16 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.Black; this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.comboBoxAccessRight); + this.smartGroupBox1.Controls.Add(this.labelAccessRightAdmin); + this.smartGroupBox1.Controls.Add(this.smartSeparatorLine2); + this.smartGroupBox1.Controls.Add(this.smartSeparatorLine1); this.smartGroupBox1.Controls.Add(this.labelAutoLogoutWarning); this.smartGroupBox1.Controls.Add(this.labelTitlePassword); this.smartGroupBox1.Controls.Add(this.buttonNew); this.smartGroupBox1.Controls.Add(this.smartKeyboard); this.smartGroupBox1.Controls.Add(this.buttonSave); this.smartGroupBox1.Controls.Add(this.buttonDelete); - this.smartGroupBox1.Controls.Add(this.buttonChangeLevelName); - this.smartGroupBox1.Controls.Add(this.textBoxLevel2); - this.smartGroupBox1.Controls.Add(this.textBoxLevel1); - this.smartGroupBox1.Controls.Add(this.textBoxLevel3); - this.smartGroupBox1.Controls.Add(this.buttonLevel3); - this.smartGroupBox1.Controls.Add(this.buttonLevel2); - this.smartGroupBox1.Controls.Add(this.buttonLevel1); - this.smartGroupBox1.Controls.Add(this.labelAccessRight); this.smartGroupBox1.Controls.Add(this.labelTitleAccessRight); this.smartGroupBox1.Controls.Add(this.smartLabel11); this.smartGroupBox1.Controls.Add(this.labelAutomaticLogoutTime); @@ -128,7 +96,6 @@ this.smartGroupBox1.Controls.Add(this.textBoxID); this.smartGroupBox1.Controls.Add(this.buttonGroupEditor); this.smartGroupBox1.Controls.Add(this.listBoxUserList); - this.smartGroupBox1.Controls.Add(this.groupBoxAccessRight); this.smartGroupBox1.FrameLineColor1 = System.Drawing.Color.Black; this.smartGroupBox1.FrameLineColor2 = System.Drawing.Color.Black; this.smartGroupBox1.FrameLineThickness = 1; @@ -143,6 +110,66 @@ this.smartGroupBox1.Text = "smartGroupBox1"; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // comboBoxAccessRight + // + this.comboBoxAccessRight.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Regular); + this.comboBoxAccessRight.Location = new System.Drawing.Point(390, 76); + this.comboBoxAccessRight.Name = "comboBoxAccessRight"; + this.comboBoxAccessRight.Size = new System.Drawing.Size(250, 26); + this.comboBoxAccessRight.TabIndex = 206; + this.comboBoxAccessRight.SelectedIndexChanged += new System.EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); + // + // labelAccessRightAdmin + // + this.labelAccessRightAdmin.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelAccessRightAdmin.BackPictureBox = null; + this.labelAccessRightAdmin.BackPictureBox1 = null; + this.labelAccessRightAdmin.BackPictureBox2 = null; + this.labelAccessRightAdmin.BorderColor = System.Drawing.Color.White; + this.labelAccessRightAdmin.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelAccessRightAdmin.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Bold); + this.labelAccessRightAdmin.ForeColor = System.Drawing.Color.White; + this.labelAccessRightAdmin.InitVisible = true; + this.labelAccessRightAdmin.LineSpacing = 0F; + this.labelAccessRightAdmin.Location = new System.Drawing.Point(390, 76); + this.labelAccessRightAdmin.Name = "labelAccessRightAdmin"; + this.labelAccessRightAdmin.Size = new System.Drawing.Size(250, 26); + this.labelAccessRightAdmin.TabIndex = 209; + this.labelAccessRightAdmin.Text = "Administrator"; + this.labelAccessRightAdmin.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelAccessRightAdmin.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelAccessRightAdmin.Wordwrap = false; + // + // smartSeparatorLine2 + // + this.smartSeparatorLine2.InitVisible = true; + this.smartSeparatorLine2.Line1Color = System.Drawing.Color.DimGray; + this.smartSeparatorLine2.Line1Width = 1F; + this.smartSeparatorLine2.Line2Color = System.Drawing.Color.LightGray; + this.smartSeparatorLine2.Line2Visible = true; + this.smartSeparatorLine2.Line2Width = 1F; + this.smartSeparatorLine2.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal; + this.smartSeparatorLine2.Location = new System.Drawing.Point(263, 217); + this.smartSeparatorLine2.Name = "smartSeparatorLine2"; + this.smartSeparatorLine2.Size = new System.Drawing.Size(433, 2); + this.smartSeparatorLine2.TabIndex = 208; + this.smartSeparatorLine2.Text = "smartSeparatorLine2"; + // + // smartSeparatorLine1 + // + this.smartSeparatorLine1.InitVisible = true; + this.smartSeparatorLine1.Line1Color = System.Drawing.Color.DimGray; + this.smartSeparatorLine1.Line1Width = 1F; + this.smartSeparatorLine1.Line2Color = System.Drawing.Color.LightGray; + this.smartSeparatorLine1.Line2Visible = true; + this.smartSeparatorLine1.Line2Width = 1F; + this.smartSeparatorLine1.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal; + this.smartSeparatorLine1.Location = new System.Drawing.Point(263, 120); + this.smartSeparatorLine1.Name = "smartSeparatorLine1"; + this.smartSeparatorLine1.Size = new System.Drawing.Size(433, 2); + this.smartSeparatorLine1.TabIndex = 207; + this.smartSeparatorLine1.Text = "smartSeparatorLine1"; + // // labelAutoLogoutWarning // this.labelAutoLogoutWarning.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); @@ -155,7 +182,7 @@ this.labelAutoLogoutWarning.ForeColor = System.Drawing.Color.Red; this.labelAutoLogoutWarning.InitVisible = true; this.labelAutoLogoutWarning.LineSpacing = 0F; - this.labelAutoLogoutWarning.Location = new System.Drawing.Point(547, 372); + this.labelAutoLogoutWarning.Location = new System.Drawing.Point(547, 237); this.labelAutoLogoutWarning.Name = "labelAutoLogoutWarning"; this.labelAutoLogoutWarning.Size = new System.Drawing.Size(149, 26); this.labelAutoLogoutWarning.TabIndex = 205; @@ -197,7 +224,7 @@ this.buttonNew.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonNew.DownImage"))); this.buttonNew.GroupID = 0; this.buttonNew.InitVisible = true; - this.buttonNew.Location = new System.Drawing.Point(263, 406); + this.buttonNew.Location = new System.Drawing.Point(14, 405); this.buttonNew.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonNew.Name = "buttonNew"; this.buttonNew.NestedClickEventPrevent = false; @@ -218,10 +245,11 @@ // // smartKeyboard // + this.smartKeyboard.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(198)))), ((int)(((byte)(195)))), ((int)(((byte)(198))))); this.smartKeyboard.ControlKeyDisable = false; this.smartKeyboard.DesignMinimize = true; this.smartKeyboard.FontColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); - this.smartKeyboard.HanYoungKeyDisable = false; + this.smartKeyboard.HanYoungKeyDisable = true; this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; this.smartKeyboard.KeyFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); this.smartKeyboard.KeyOutLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(157)))), ((int)(((byte)(157)))), ((int)(((byte)(157))))); @@ -261,7 +289,7 @@ this.buttonSave.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonSave.DownImage"))); this.buttonSave.GroupID = 0; this.buttonSave.InitVisible = true; - this.buttonSave.Location = new System.Drawing.Point(375, 406); + this.buttonSave.Location = new System.Drawing.Point(207, 405); this.buttonSave.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonSave.Name = "buttonSave"; this.buttonSave.NestedClickEventPrevent = false; @@ -293,7 +321,7 @@ this.buttonDelete.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonDelete.DownImage"))); this.buttonDelete.GroupID = 0; this.buttonDelete.InitVisible = true; - this.buttonDelete.Location = new System.Drawing.Point(319, 406); + this.buttonDelete.Location = new System.Drawing.Point(70, 405); this.buttonDelete.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonDelete.Name = "buttonDelete"; this.buttonDelete.NestedClickEventPrevent = false; @@ -313,194 +341,6 @@ this.buttonDelete.Visible = false; this.buttonDelete.Click += new System.EventHandler(this.buttonDelete_Click); // - // buttonChangeLevelName - // - this.buttonChangeLevelName.BackPictureBox = null; - this.buttonChangeLevelName.BackPictureBox1 = null; - this.buttonChangeLevelName.BackPictureBox2 = null; - this.buttonChangeLevelName.ButtonColor = System.Drawing.Color.LightGray; - this.buttonChangeLevelName.ButtonImageAutoSize = true; - this.buttonChangeLevelName.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonChangeLevelName.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonChangeLevelName.DisableImage"))); - this.buttonChangeLevelName.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonChangeLevelName.DownImage"))); - this.buttonChangeLevelName.GroupID = 0; - this.buttonChangeLevelName.InitVisible = true; - this.buttonChangeLevelName.Location = new System.Drawing.Point(590, 405); - this.buttonChangeLevelName.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; - this.buttonChangeLevelName.Name = "buttonChangeLevelName"; - this.buttonChangeLevelName.NestedClickEventPrevent = false; - this.buttonChangeLevelName.OutlinePixel = 1; - this.buttonChangeLevelName.RepeatInterval = 200; - this.buttonChangeLevelName.RepeatIntervalAccelerate = null; - this.buttonChangeLevelName.SafeInterval = 200; - this.buttonChangeLevelName.Size = new System.Drawing.Size(50, 50); - this.buttonChangeLevelName.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonChangeLevelName.TabIndex = 200; - this.buttonChangeLevelName.TextColor = System.Drawing.Color.Black; - this.buttonChangeLevelName.TextDownColor = System.Drawing.Color.White; - this.buttonChangeLevelName.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonChangeLevelName.TextLocation = new System.Drawing.Point(0, 0); - this.buttonChangeLevelName.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonChangeLevelName.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonChangeLevelName.UpImage"))); - this.buttonChangeLevelName.Visible = false; - this.buttonChangeLevelName.Click += new System.EventHandler(this.buttonChangeLevelName_Click); - // - // textBoxLevel2 - // - this.textBoxLevel2.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); - this.textBoxLevel2.Location = new System.Drawing.Point(411, 110); - this.textBoxLevel2.Name = "textBoxLevel2"; - this.textBoxLevel2.Size = new System.Drawing.Size(140, 23); - this.textBoxLevel2.TabIndex = 198; - this.textBoxLevel2.Text = "Level2"; - this.textBoxLevel2.Visible = false; - this.textBoxLevel2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel2_KeyPress); - // - // textBoxLevel1 - // - this.textBoxLevel1.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); - this.textBoxLevel1.Location = new System.Drawing.Point(263, 110); - this.textBoxLevel1.Name = "textBoxLevel1"; - this.textBoxLevel1.Size = new System.Drawing.Size(140, 23); - this.textBoxLevel1.TabIndex = 195; - this.textBoxLevel1.Text = "Level1"; - this.textBoxLevel1.Visible = false; - this.textBoxLevel1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel1_KeyPress); - // - // textBoxLevel3 - // - this.textBoxLevel3.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); - this.textBoxLevel3.Location = new System.Drawing.Point(558, 110); - this.textBoxLevel3.Name = "textBoxLevel3"; - this.textBoxLevel3.Size = new System.Drawing.Size(140, 23); - this.textBoxLevel3.TabIndex = 197; - this.textBoxLevel3.Text = "Level3"; - this.textBoxLevel3.Visible = false; - this.textBoxLevel3.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel3_KeyPress); - // - // buttonLevel3 - // - this.buttonLevel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel3.BackPictureBox = null; - this.buttonLevel3.BackPictureBox1 = null; - this.buttonLevel3.BackPictureBox2 = null; - this.buttonLevel3.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel3.ButtonImageAutoSize = true; - this.buttonLevel3.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLevel3.DisableImage = null; - this.buttonLevel3.DownImage = null; - this.buttonLevel3.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); - this.buttonLevel3.GroupID = 0; - this.buttonLevel3.InitVisible = true; - this.buttonLevel3.Location = new System.Drawing.Point(558, 107); - this.buttonLevel3.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLevel3.Name = "buttonLevel3"; - this.buttonLevel3.NestedClickEventPrevent = false; - this.buttonLevel3.OutlinePixel = 1; - this.buttonLevel3.RepeatInterval = 200; - this.buttonLevel3.RepeatIntervalAccelerate = null; - this.buttonLevel3.SafeInterval = 200; - this.buttonLevel3.Size = new System.Drawing.Size(140, 30); - this.buttonLevel3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLevel3.TabIndex = 194; - this.buttonLevel3.Text = "Level3"; - this.buttonLevel3.TextColor = System.Drawing.Color.White; - this.buttonLevel3.TextDownColor = System.Drawing.Color.MidnightBlue; - this.buttonLevel3.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLevel3.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLevel3.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLevel3.UpImage = null; - this.buttonLevel3.Click += new System.EventHandler(this.buttonLevel_Click); - // - // buttonLevel2 - // - this.buttonLevel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel2.BackPictureBox = null; - this.buttonLevel2.BackPictureBox1 = null; - this.buttonLevel2.BackPictureBox2 = null; - this.buttonLevel2.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel2.ButtonImageAutoSize = true; - this.buttonLevel2.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLevel2.DisableImage = null; - this.buttonLevel2.DownImage = null; - this.buttonLevel2.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); - this.buttonLevel2.GroupID = 0; - this.buttonLevel2.InitVisible = true; - this.buttonLevel2.Location = new System.Drawing.Point(411, 107); - this.buttonLevel2.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLevel2.Name = "buttonLevel2"; - this.buttonLevel2.NestedClickEventPrevent = false; - this.buttonLevel2.OutlinePixel = 1; - this.buttonLevel2.RepeatInterval = 200; - this.buttonLevel2.RepeatIntervalAccelerate = null; - this.buttonLevel2.SafeInterval = 200; - this.buttonLevel2.Size = new System.Drawing.Size(140, 30); - this.buttonLevel2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLevel2.TabIndex = 193; - this.buttonLevel2.Text = "Level2"; - this.buttonLevel2.TextColor = System.Drawing.Color.White; - this.buttonLevel2.TextDownColor = System.Drawing.Color.MidnightBlue; - this.buttonLevel2.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLevel2.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLevel2.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLevel2.UpImage = null; - this.buttonLevel2.Click += new System.EventHandler(this.buttonLevel_Click); - // - // buttonLevel1 - // - this.buttonLevel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel1.BackPictureBox = null; - this.buttonLevel1.BackPictureBox1 = null; - this.buttonLevel1.BackPictureBox2 = null; - this.buttonLevel1.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel1.ButtonImageAutoSize = true; - this.buttonLevel1.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLevel1.DisableImage = null; - this.buttonLevel1.DownImage = null; - this.buttonLevel1.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); - this.buttonLevel1.GroupID = 0; - this.buttonLevel1.InitVisible = true; - this.buttonLevel1.Location = new System.Drawing.Point(263, 107); - this.buttonLevel1.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLevel1.Name = "buttonLevel1"; - this.buttonLevel1.NestedClickEventPrevent = false; - this.buttonLevel1.OutlinePixel = 1; - this.buttonLevel1.RepeatInterval = 200; - this.buttonLevel1.RepeatIntervalAccelerate = null; - this.buttonLevel1.SafeInterval = 200; - this.buttonLevel1.Size = new System.Drawing.Size(140, 30); - this.buttonLevel1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLevel1.TabIndex = 192; - this.buttonLevel1.Text = "Level1"; - this.buttonLevel1.TextColor = System.Drawing.Color.White; - this.buttonLevel1.TextDownColor = System.Drawing.Color.MidnightBlue; - this.buttonLevel1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLevel1.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLevel1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLevel1.UpImage = null; - this.buttonLevel1.Click += new System.EventHandler(this.buttonLevel_Click); - // - // labelAccessRight - // - this.labelAccessRight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.labelAccessRight.BackPictureBox = null; - this.labelAccessRight.BackPictureBox1 = null; - this.labelAccessRight.BackPictureBox2 = null; - this.labelAccessRight.BorderColor = System.Drawing.Color.White; - this.labelAccessRight.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelAccessRight.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); - this.labelAccessRight.ForeColor = System.Drawing.Color.White; - this.labelAccessRight.InitVisible = true; - this.labelAccessRight.LineSpacing = 0F; - this.labelAccessRight.Location = new System.Drawing.Point(390, 76); - this.labelAccessRight.Name = "labelAccessRight"; - this.labelAccessRight.Size = new System.Drawing.Size(161, 26); - this.labelAccessRight.TabIndex = 187; - this.labelAccessRight.Text = "Level1"; - this.labelAccessRight.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelAccessRight.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelAccessRight.Wordwrap = false; - // // labelTitleAccessRight // this.labelTitleAccessRight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); @@ -534,7 +374,7 @@ this.smartLabel11.ForeColor = System.Drawing.Color.White; this.smartLabel11.InitVisible = true; this.smartLabel11.LineSpacing = 0F; - this.smartLabel11.Location = new System.Drawing.Point(454, 372); + this.smartLabel11.Location = new System.Drawing.Point(454, 237); this.smartLabel11.Name = "smartLabel11"; this.smartLabel11.Size = new System.Drawing.Size(90, 26); this.smartLabel11.TabIndex = 185; @@ -555,7 +395,7 @@ this.labelAutomaticLogoutTime.ForeColor = System.Drawing.Color.Black; this.labelAutomaticLogoutTime.InitVisible = true; this.labelAutomaticLogoutTime.LineSpacing = 0F; - this.labelAutomaticLogoutTime.Location = new System.Drawing.Point(390, 372); + this.labelAutomaticLogoutTime.Location = new System.Drawing.Point(390, 237); this.labelAutomaticLogoutTime.Name = "labelAutomaticLogoutTime"; this.labelAutomaticLogoutTime.Size = new System.Drawing.Size(62, 26); this.labelAutomaticLogoutTime.TabIndex = 184; @@ -577,7 +417,7 @@ this.labelTitleAutomaticLogoutTime.ForeColor = System.Drawing.Color.White; this.labelTitleAutomaticLogoutTime.InitVisible = true; this.labelTitleAutomaticLogoutTime.LineSpacing = 0F; - this.labelTitleAutomaticLogoutTime.Location = new System.Drawing.Point(263, 372); + this.labelTitleAutomaticLogoutTime.Location = new System.Drawing.Point(263, 237); this.labelTitleAutomaticLogoutTime.Name = "labelTitleAutomaticLogoutTime"; this.labelTitleAutomaticLogoutTime.Size = new System.Drawing.Size(121, 26); this.labelTitleAutomaticLogoutTime.TabIndex = 183; @@ -598,7 +438,7 @@ this.labelExpiryDateOfPassword2.ForeColor = System.Drawing.Color.White; this.labelExpiryDateOfPassword2.InitVisible = true; this.labelExpiryDateOfPassword2.LineSpacing = 0F; - this.labelExpiryDateOfPassword2.Location = new System.Drawing.Point(549, 341); + this.labelExpiryDateOfPassword2.Location = new System.Drawing.Point(549, 172); this.labelExpiryDateOfPassword2.Name = "labelExpiryDateOfPassword2"; this.labelExpiryDateOfPassword2.Size = new System.Drawing.Size(149, 27); this.labelExpiryDateOfPassword2.TabIndex = 182; @@ -620,7 +460,7 @@ this.smartLabel8.ForeColor = System.Drawing.Color.White; this.smartLabel8.InitVisible = true; this.smartLabel8.LineSpacing = 0F; - this.smartLabel8.Location = new System.Drawing.Point(454, 341); + this.smartLabel8.Location = new System.Drawing.Point(454, 172); this.smartLabel8.Name = "smartLabel8"; this.smartLabel8.Size = new System.Drawing.Size(90, 26); this.smartLabel8.TabIndex = 181; @@ -641,7 +481,7 @@ this.labelExpiryDateOfPassword.ForeColor = System.Drawing.Color.Black; this.labelExpiryDateOfPassword.InitVisible = true; this.labelExpiryDateOfPassword.LineSpacing = 0F; - this.labelExpiryDateOfPassword.Location = new System.Drawing.Point(390, 341); + this.labelExpiryDateOfPassword.Location = new System.Drawing.Point(390, 172); this.labelExpiryDateOfPassword.Name = "labelExpiryDateOfPassword"; this.labelExpiryDateOfPassword.Size = new System.Drawing.Size(62, 26); this.labelExpiryDateOfPassword.TabIndex = 180; @@ -663,7 +503,7 @@ this.labelTitleExpiryDateOfPassword.ForeColor = System.Drawing.Color.White; this.labelTitleExpiryDateOfPassword.InitVisible = true; this.labelTitleExpiryDateOfPassword.LineSpacing = 0F; - this.labelTitleExpiryDateOfPassword.Location = new System.Drawing.Point(263, 341); + this.labelTitleExpiryDateOfPassword.Location = new System.Drawing.Point(263, 172); this.labelTitleExpiryDateOfPassword.Name = "labelTitleExpiryDateOfPassword"; this.labelTitleExpiryDateOfPassword.Size = new System.Drawing.Size(121, 26); this.labelTitleExpiryDateOfPassword.TabIndex = 179; @@ -684,7 +524,7 @@ this.labelExpiryDateOfAccount2.ForeColor = System.Drawing.Color.White; this.labelExpiryDateOfAccount2.InitVisible = true; this.labelExpiryDateOfAccount2.LineSpacing = 0F; - this.labelExpiryDateOfAccount2.Location = new System.Drawing.Point(549, 309); + this.labelExpiryDateOfAccount2.Location = new System.Drawing.Point(549, 140); this.labelExpiryDateOfAccount2.Name = "labelExpiryDateOfAccount2"; this.labelExpiryDateOfAccount2.Size = new System.Drawing.Size(149, 26); this.labelExpiryDateOfAccount2.TabIndex = 178; @@ -706,7 +546,7 @@ this.smartLabel3.ForeColor = System.Drawing.Color.White; this.smartLabel3.InitVisible = true; this.smartLabel3.LineSpacing = 0F; - this.smartLabel3.Location = new System.Drawing.Point(454, 309); + this.smartLabel3.Location = new System.Drawing.Point(454, 140); this.smartLabel3.Name = "smartLabel3"; this.smartLabel3.Size = new System.Drawing.Size(90, 26); this.smartLabel3.TabIndex = 177; @@ -727,7 +567,7 @@ this.labelExpiryDateOfAccount.ForeColor = System.Drawing.Color.Black; this.labelExpiryDateOfAccount.InitVisible = true; this.labelExpiryDateOfAccount.LineSpacing = 0F; - this.labelExpiryDateOfAccount.Location = new System.Drawing.Point(390, 309); + this.labelExpiryDateOfAccount.Location = new System.Drawing.Point(390, 140); this.labelExpiryDateOfAccount.Name = "labelExpiryDateOfAccount"; this.labelExpiryDateOfAccount.Size = new System.Drawing.Size(62, 26); this.labelExpiryDateOfAccount.TabIndex = 176; @@ -749,7 +589,7 @@ this.labelTitleExpiryDateOfAccount.ForeColor = System.Drawing.Color.White; this.labelTitleExpiryDateOfAccount.InitVisible = true; this.labelTitleExpiryDateOfAccount.LineSpacing = 0F; - this.labelTitleExpiryDateOfAccount.Location = new System.Drawing.Point(263, 309); + this.labelTitleExpiryDateOfAccount.Location = new System.Drawing.Point(263, 140); this.labelTitleExpiryDateOfAccount.Name = "labelTitleExpiryDateOfAccount"; this.labelTitleExpiryDateOfAccount.Size = new System.Drawing.Size(121, 26); this.labelTitleExpiryDateOfAccount.TabIndex = 175; @@ -921,7 +761,7 @@ this.listBoxUserList.InitVisible = true; this.listBoxUserList.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxUserList.ItemOffsetGap = 10; - this.listBoxUserList.ItemOffsetX = 0; + this.listBoxUserList.ItemOffsetX = 5; this.listBoxUserList.ItemOffsetY = 0; this.listBoxUserList.Location = new System.Drawing.Point(14, 12); this.listBoxUserList.MouseMoveEventSpace = 3; @@ -937,593 +777,11 @@ this.listBoxUserList.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxUserList.SeparationlineVisibleBottom = true; this.listBoxUserList.SeparationlineVisibleTop = true; - this.listBoxUserList.Size = new System.Drawing.Size(243, 444); + this.listBoxUserList.Size = new System.Drawing.Size(243, 386); this.listBoxUserList.TabIndex = 171; this.listBoxUserList.Text = "smartListBox1"; this.listBoxUserList.SelectedIndexChanged += new System.EventHandler(this.listBoxUserList_SelectedIndexChanged); // - // groupBoxAccessRight - // - this.groupBoxAccessRight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.groupBoxAccessRight.BackPictureBox = null; - this.groupBoxAccessRight.BackPictureBox1 = null; - this.groupBoxAccessRight.Controls.Add(this.checkBoxUser); - this.groupBoxAccessRight.Controls.Add(this.labelTitleMain); - this.groupBoxAccessRight.Controls.Add(this.labelTitleMenu); - this.groupBoxAccessRight.Controls.Add(this.checkBoxLog); - this.groupBoxAccessRight.Controls.Add(this.checkBoxFeature); - this.groupBoxAccessRight.Controls.Add(this.checkBoxInitialization); - this.groupBoxAccessRight.Controls.Add(this.checkBoxUpdate); - this.groupBoxAccessRight.Controls.Add(this.checkBoxExternalOutput); - this.groupBoxAccessRight.Controls.Add(this.checkBoxIOTest); - this.groupBoxAccessRight.Controls.Add(this.checkBoxAutoZero); - this.groupBoxAccessRight.Controls.Add(this.checkBoxSorter); - this.groupBoxAccessRight.Controls.Add(this.checkBoxJudgment); - this.groupBoxAccessRight.Controls.Add(this.checkBoxCalibration); - this.groupBoxAccessRight.Controls.Add(this.checkBoxEthernet); - this.groupBoxAccessRight.Controls.Add(this.checkBoxSerial); - this.groupBoxAccessRight.Controls.Add(this.checkBoxDataStat); - this.groupBoxAccessRight.Controls.Add(this.checkBoxProduct); - this.groupBoxAccessRight.Controls.Add(this.checkBoxTime); - this.groupBoxAccessRight.Controls.Add(this.checkBoxSubMenu); - this.groupBoxAccessRight.Controls.Add(this.checkBoxClear); - this.groupBoxAccessRight.Controls.Add(this.checkBoxChangeWeight); - this.groupBoxAccessRight.Controls.Add(this.checkBoxChangeNo); - this.groupBoxAccessRight.FrameLineColor1 = System.Drawing.Color.White; - this.groupBoxAccessRight.FrameLineColor2 = System.Drawing.Color.Black; - this.groupBoxAccessRight.FrameLineThickness = 1; - this.groupBoxAccessRight.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.Rectangle; - this.groupBoxAccessRight.Image = null; - this.groupBoxAccessRight.InitVisible = true; - this.groupBoxAccessRight.Location = new System.Drawing.Point(254, 129); - this.groupBoxAccessRight.Name = "groupBoxAccessRight"; - this.groupBoxAccessRight.RoundRadius = 5; - this.groupBoxAccessRight.Size = new System.Drawing.Size(453, 185); - this.groupBoxAccessRight.TabIndex = 188; - this.groupBoxAccessRight.TextColor = System.Drawing.Color.Black; - // - // checkBoxUser - // - this.checkBoxUser.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxUser.BackPictureBox = null; - this.checkBoxUser.BackPictureBox1 = null; - this.checkBoxUser.BackPictureBox2 = null; - this.checkBoxUser.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxUser.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxUser.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxUser.CheckBoxSymbolSize = 14; - this.checkBoxUser.Checked = false; - this.checkBoxUser.CheckLineWidth = 3; - this.checkBoxUser.Enabled = false; - this.checkBoxUser.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxUser.ForeColor = System.Drawing.Color.Silver; - this.checkBoxUser.ImageCheckBox = null; - this.checkBoxUser.ImageUnCheckBox = null; - this.checkBoxUser.InitVisible = true; - this.checkBoxUser.Location = new System.Drawing.Point(302, 52); - this.checkBoxUser.Name = "checkBoxUser"; - this.checkBoxUser.Size = new System.Drawing.Size(135, 14); - this.checkBoxUser.TabIndex = 194; - this.checkBoxUser.Text = "유저설정권한"; - this.checkBoxUser.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // labelTitleMain - // - this.labelTitleMain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.labelTitleMain.BackPictureBox = null; - this.labelTitleMain.BackPictureBox1 = null; - this.labelTitleMain.BackPictureBox2 = null; - this.labelTitleMain.BorderColor = System.Drawing.Color.White; - this.labelTitleMain.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleMain.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); - this.labelTitleMain.ForeColor = System.Drawing.Color.White; - this.labelTitleMain.InitVisible = true; - this.labelTitleMain.LineSpacing = 0F; - this.labelTitleMain.Location = new System.Drawing.Point(16, 18); - this.labelTitleMain.Name = "labelTitleMain"; - this.labelTitleMain.Size = new System.Drawing.Size(135, 14); - this.labelTitleMain.TabIndex = 193; - this.labelTitleMain.Text = "Main"; - this.labelTitleMain.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; - this.labelTitleMain.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleMain.Wordwrap = false; - // - // labelTitleMenu - // - this.labelTitleMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.labelTitleMenu.BackPictureBox = null; - this.labelTitleMenu.BackPictureBox1 = null; - this.labelTitleMenu.BackPictureBox2 = null; - this.labelTitleMenu.BorderColor = System.Drawing.Color.White; - this.labelTitleMenu.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleMenu.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); - this.labelTitleMenu.ForeColor = System.Drawing.Color.White; - this.labelTitleMenu.InitVisible = true; - this.labelTitleMenu.LineSpacing = 0F; - this.labelTitleMenu.Location = new System.Drawing.Point(16, 103); - this.labelTitleMenu.Name = "labelTitleMenu"; - this.labelTitleMenu.Size = new System.Drawing.Size(135, 14); - this.labelTitleMenu.TabIndex = 192; - this.labelTitleMenu.Text = "Menu"; - this.labelTitleMenu.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; - this.labelTitleMenu.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleMenu.Wordwrap = false; - // - // checkBoxLog - // - this.checkBoxLog.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxLog.BackPictureBox = null; - this.checkBoxLog.BackPictureBox1 = null; - this.checkBoxLog.BackPictureBox2 = null; - this.checkBoxLog.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxLog.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxLog.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxLog.CheckBoxSymbolSize = 14; - this.checkBoxLog.Checked = false; - this.checkBoxLog.CheckLineWidth = 3; - this.checkBoxLog.Enabled = false; - this.checkBoxLog.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxLog.ForeColor = System.Drawing.Color.Silver; - this.checkBoxLog.ImageCheckBox = null; - this.checkBoxLog.ImageUnCheckBox = null; - this.checkBoxLog.InitVisible = true; - this.checkBoxLog.Location = new System.Drawing.Point(302, 69); - this.checkBoxLog.Name = "checkBoxLog"; - this.checkBoxLog.Size = new System.Drawing.Size(135, 14); - this.checkBoxLog.TabIndex = 21; - this.checkBoxLog.Text = "로그"; - this.checkBoxLog.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxFeature - // - this.checkBoxFeature.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxFeature.BackPictureBox = null; - this.checkBoxFeature.BackPictureBox1 = null; - this.checkBoxFeature.BackPictureBox2 = null; - this.checkBoxFeature.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxFeature.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxFeature.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxFeature.CheckBoxSymbolSize = 14; - this.checkBoxFeature.Checked = false; - this.checkBoxFeature.CheckLineWidth = 3; - this.checkBoxFeature.Enabled = false; - this.checkBoxFeature.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxFeature.ForeColor = System.Drawing.Color.Silver; - this.checkBoxFeature.ImageCheckBox = null; - this.checkBoxFeature.ImageUnCheckBox = null; - this.checkBoxFeature.InitVisible = true; - this.checkBoxFeature.Location = new System.Drawing.Point(302, 35); - this.checkBoxFeature.Name = "checkBoxFeature"; - this.checkBoxFeature.Size = new System.Drawing.Size(135, 14); - this.checkBoxFeature.TabIndex = 20; - this.checkBoxFeature.Text = "기능설정"; - this.checkBoxFeature.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxInitialization - // - this.checkBoxInitialization.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxInitialization.BackPictureBox = null; - this.checkBoxInitialization.BackPictureBox1 = null; - this.checkBoxInitialization.BackPictureBox2 = null; - this.checkBoxInitialization.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxInitialization.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxInitialization.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxInitialization.CheckBoxSymbolSize = 14; - this.checkBoxInitialization.Checked = false; - this.checkBoxInitialization.CheckLineWidth = 3; - this.checkBoxInitialization.Enabled = false; - this.checkBoxInitialization.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxInitialization.ForeColor = System.Drawing.Color.Silver; - this.checkBoxInitialization.ImageCheckBox = null; - this.checkBoxInitialization.ImageUnCheckBox = null; - this.checkBoxInitialization.InitVisible = true; - this.checkBoxInitialization.Location = new System.Drawing.Point(302, 18); - this.checkBoxInitialization.Name = "checkBoxInitialization"; - this.checkBoxInitialization.Size = new System.Drawing.Size(135, 14); - this.checkBoxInitialization.TabIndex = 19; - this.checkBoxInitialization.Text = "공장초기화"; - this.checkBoxInitialization.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxUpdate - // - this.checkBoxUpdate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxUpdate.BackPictureBox = null; - this.checkBoxUpdate.BackPictureBox1 = null; - this.checkBoxUpdate.BackPictureBox2 = null; - this.checkBoxUpdate.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxUpdate.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxUpdate.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxUpdate.CheckBoxSymbolSize = 14; - this.checkBoxUpdate.Checked = false; - this.checkBoxUpdate.CheckLineWidth = 3; - this.checkBoxUpdate.Enabled = false; - this.checkBoxUpdate.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxUpdate.ForeColor = System.Drawing.Color.Silver; - this.checkBoxUpdate.ImageCheckBox = null; - this.checkBoxUpdate.ImageUnCheckBox = null; - this.checkBoxUpdate.InitVisible = true; - this.checkBoxUpdate.Location = new System.Drawing.Point(161, 154); - this.checkBoxUpdate.Name = "checkBoxUpdate"; - this.checkBoxUpdate.Size = new System.Drawing.Size(135, 14); - this.checkBoxUpdate.TabIndex = 18; - this.checkBoxUpdate.Text = "업데이트"; - this.checkBoxUpdate.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxExternalOutput - // - this.checkBoxExternalOutput.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxExternalOutput.BackPictureBox = null; - this.checkBoxExternalOutput.BackPictureBox1 = null; - this.checkBoxExternalOutput.BackPictureBox2 = null; - this.checkBoxExternalOutput.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxExternalOutput.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxExternalOutput.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxExternalOutput.CheckBoxSymbolSize = 14; - this.checkBoxExternalOutput.Checked = false; - this.checkBoxExternalOutput.CheckLineWidth = 3; - this.checkBoxExternalOutput.Enabled = false; - this.checkBoxExternalOutput.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxExternalOutput.ForeColor = System.Drawing.Color.Silver; - this.checkBoxExternalOutput.ImageCheckBox = null; - this.checkBoxExternalOutput.ImageUnCheckBox = null; - this.checkBoxExternalOutput.InitVisible = true; - this.checkBoxExternalOutput.Location = new System.Drawing.Point(161, 137); - this.checkBoxExternalOutput.Name = "checkBoxExternalOutput"; - this.checkBoxExternalOutput.Size = new System.Drawing.Size(135, 14); - this.checkBoxExternalOutput.TabIndex = 16; - this.checkBoxExternalOutput.Text = "외부출력"; - this.checkBoxExternalOutput.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxIOTest - // - this.checkBoxIOTest.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxIOTest.BackPictureBox = null; - this.checkBoxIOTest.BackPictureBox1 = null; - this.checkBoxIOTest.BackPictureBox2 = null; - this.checkBoxIOTest.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxIOTest.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxIOTest.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxIOTest.CheckBoxSymbolSize = 14; - this.checkBoxIOTest.Checked = false; - this.checkBoxIOTest.CheckLineWidth = 3; - this.checkBoxIOTest.Enabled = false; - this.checkBoxIOTest.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxIOTest.ForeColor = System.Drawing.Color.Silver; - this.checkBoxIOTest.ImageCheckBox = null; - this.checkBoxIOTest.ImageUnCheckBox = null; - this.checkBoxIOTest.InitVisible = true; - this.checkBoxIOTest.Location = new System.Drawing.Point(161, 120); - this.checkBoxIOTest.Name = "checkBoxIOTest"; - this.checkBoxIOTest.Size = new System.Drawing.Size(135, 14); - this.checkBoxIOTest.TabIndex = 15; - this.checkBoxIOTest.Text = "I/O테스트"; - this.checkBoxIOTest.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxAutoZero - // - this.checkBoxAutoZero.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxAutoZero.BackPictureBox = null; - this.checkBoxAutoZero.BackPictureBox1 = null; - this.checkBoxAutoZero.BackPictureBox2 = null; - this.checkBoxAutoZero.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxAutoZero.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxAutoZero.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxAutoZero.CheckBoxSymbolSize = 14; - this.checkBoxAutoZero.Checked = false; - this.checkBoxAutoZero.CheckLineWidth = 3; - this.checkBoxAutoZero.Enabled = false; - this.checkBoxAutoZero.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxAutoZero.ForeColor = System.Drawing.Color.Silver; - this.checkBoxAutoZero.ImageCheckBox = null; - this.checkBoxAutoZero.ImageUnCheckBox = null; - this.checkBoxAutoZero.InitVisible = true; - this.checkBoxAutoZero.Location = new System.Drawing.Point(161, 103); - this.checkBoxAutoZero.Name = "checkBoxAutoZero"; - this.checkBoxAutoZero.Size = new System.Drawing.Size(135, 14); - this.checkBoxAutoZero.TabIndex = 14; - this.checkBoxAutoZero.Text = "자동영점"; - this.checkBoxAutoZero.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxSorter - // - this.checkBoxSorter.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxSorter.BackPictureBox = null; - this.checkBoxSorter.BackPictureBox1 = null; - this.checkBoxSorter.BackPictureBox2 = null; - this.checkBoxSorter.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxSorter.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxSorter.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxSorter.CheckBoxSymbolSize = 14; - this.checkBoxSorter.Checked = false; - this.checkBoxSorter.CheckLineWidth = 3; - this.checkBoxSorter.Enabled = false; - this.checkBoxSorter.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxSorter.ForeColor = System.Drawing.Color.Silver; - this.checkBoxSorter.ImageCheckBox = null; - this.checkBoxSorter.ImageUnCheckBox = null; - this.checkBoxSorter.InitVisible = true; - this.checkBoxSorter.Location = new System.Drawing.Point(161, 86); - this.checkBoxSorter.Name = "checkBoxSorter"; - this.checkBoxSorter.Size = new System.Drawing.Size(135, 14); - this.checkBoxSorter.TabIndex = 13; - this.checkBoxSorter.Text = "선별기설정"; - this.checkBoxSorter.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxJudgment - // - this.checkBoxJudgment.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxJudgment.BackPictureBox = null; - this.checkBoxJudgment.BackPictureBox1 = null; - this.checkBoxJudgment.BackPictureBox2 = null; - this.checkBoxJudgment.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxJudgment.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxJudgment.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxJudgment.CheckBoxSymbolSize = 14; - this.checkBoxJudgment.Checked = false; - this.checkBoxJudgment.CheckLineWidth = 3; - this.checkBoxJudgment.Enabled = false; - this.checkBoxJudgment.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxJudgment.ForeColor = System.Drawing.Color.Silver; - this.checkBoxJudgment.ImageCheckBox = null; - this.checkBoxJudgment.ImageUnCheckBox = null; - this.checkBoxJudgment.InitVisible = true; - this.checkBoxJudgment.Location = new System.Drawing.Point(161, 69); - this.checkBoxJudgment.Name = "checkBoxJudgment"; - this.checkBoxJudgment.Size = new System.Drawing.Size(135, 14); - this.checkBoxJudgment.TabIndex = 12; - this.checkBoxJudgment.Text = "판정설정"; - this.checkBoxJudgment.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxCalibration - // - this.checkBoxCalibration.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxCalibration.BackPictureBox = null; - this.checkBoxCalibration.BackPictureBox1 = null; - this.checkBoxCalibration.BackPictureBox2 = null; - this.checkBoxCalibration.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxCalibration.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxCalibration.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxCalibration.CheckBoxSymbolSize = 14; - this.checkBoxCalibration.Checked = false; - this.checkBoxCalibration.CheckLineWidth = 3; - this.checkBoxCalibration.Enabled = false; - this.checkBoxCalibration.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxCalibration.ForeColor = System.Drawing.Color.Silver; - this.checkBoxCalibration.ImageCheckBox = null; - this.checkBoxCalibration.ImageUnCheckBox = null; - this.checkBoxCalibration.InitVisible = true; - this.checkBoxCalibration.Location = new System.Drawing.Point(161, 52); - this.checkBoxCalibration.Name = "checkBoxCalibration"; - this.checkBoxCalibration.Size = new System.Drawing.Size(135, 14); - this.checkBoxCalibration.TabIndex = 11; - this.checkBoxCalibration.Text = "중량조정"; - this.checkBoxCalibration.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxEthernet - // - this.checkBoxEthernet.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxEthernet.BackPictureBox = null; - this.checkBoxEthernet.BackPictureBox1 = null; - this.checkBoxEthernet.BackPictureBox2 = null; - this.checkBoxEthernet.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxEthernet.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxEthernet.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxEthernet.CheckBoxSymbolSize = 14; - this.checkBoxEthernet.Checked = false; - this.checkBoxEthernet.CheckLineWidth = 3; - this.checkBoxEthernet.Enabled = false; - this.checkBoxEthernet.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxEthernet.ForeColor = System.Drawing.Color.Silver; - this.checkBoxEthernet.ImageCheckBox = null; - this.checkBoxEthernet.ImageUnCheckBox = null; - this.checkBoxEthernet.InitVisible = true; - this.checkBoxEthernet.Location = new System.Drawing.Point(161, 35); - this.checkBoxEthernet.Name = "checkBoxEthernet"; - this.checkBoxEthernet.Size = new System.Drawing.Size(135, 14); - this.checkBoxEthernet.TabIndex = 8; - this.checkBoxEthernet.Text = "이더넷통신"; - this.checkBoxEthernet.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxSerial - // - this.checkBoxSerial.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxSerial.BackPictureBox = null; - this.checkBoxSerial.BackPictureBox1 = null; - this.checkBoxSerial.BackPictureBox2 = null; - this.checkBoxSerial.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxSerial.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxSerial.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxSerial.CheckBoxSymbolSize = 14; - this.checkBoxSerial.Checked = false; - this.checkBoxSerial.CheckLineWidth = 3; - this.checkBoxSerial.Enabled = false; - this.checkBoxSerial.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxSerial.ForeColor = System.Drawing.Color.Silver; - this.checkBoxSerial.ImageCheckBox = null; - this.checkBoxSerial.ImageUnCheckBox = null; - this.checkBoxSerial.InitVisible = true; - this.checkBoxSerial.Location = new System.Drawing.Point(161, 18); - this.checkBoxSerial.Name = "checkBoxSerial"; - this.checkBoxSerial.Size = new System.Drawing.Size(135, 14); - this.checkBoxSerial.TabIndex = 7; - this.checkBoxSerial.Text = "시리얼통신"; - this.checkBoxSerial.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxDataStat - // - this.checkBoxDataStat.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxDataStat.BackPictureBox = null; - this.checkBoxDataStat.BackPictureBox1 = null; - this.checkBoxDataStat.BackPictureBox2 = null; - this.checkBoxDataStat.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxDataStat.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxDataStat.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxDataStat.CheckBoxSymbolSize = 14; - this.checkBoxDataStat.Checked = false; - this.checkBoxDataStat.CheckLineWidth = 3; - this.checkBoxDataStat.Enabled = false; - this.checkBoxDataStat.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxDataStat.ForeColor = System.Drawing.Color.Silver; - this.checkBoxDataStat.ImageCheckBox = null; - this.checkBoxDataStat.ImageUnCheckBox = null; - this.checkBoxDataStat.InitVisible = true; - this.checkBoxDataStat.Location = new System.Drawing.Point(16, 154); - this.checkBoxDataStat.Name = "checkBoxDataStat"; - this.checkBoxDataStat.Size = new System.Drawing.Size(135, 14); - this.checkBoxDataStat.TabIndex = 6; - this.checkBoxDataStat.Text = "데이터집계"; - this.checkBoxDataStat.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxProduct - // - this.checkBoxProduct.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxProduct.BackPictureBox = null; - this.checkBoxProduct.BackPictureBox1 = null; - this.checkBoxProduct.BackPictureBox2 = null; - this.checkBoxProduct.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxProduct.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxProduct.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxProduct.CheckBoxSymbolSize = 14; - this.checkBoxProduct.Checked = false; - this.checkBoxProduct.CheckLineWidth = 3; - this.checkBoxProduct.Enabled = false; - this.checkBoxProduct.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxProduct.ForeColor = System.Drawing.Color.Silver; - this.checkBoxProduct.ImageCheckBox = null; - this.checkBoxProduct.ImageUnCheckBox = null; - this.checkBoxProduct.InitVisible = true; - this.checkBoxProduct.Location = new System.Drawing.Point(16, 137); - this.checkBoxProduct.Name = "checkBoxProduct"; - this.checkBoxProduct.Size = new System.Drawing.Size(135, 14); - this.checkBoxProduct.TabIndex = 5; - this.checkBoxProduct.Text = "품목설정"; - this.checkBoxProduct.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxTime - // - this.checkBoxTime.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxTime.BackPictureBox = null; - this.checkBoxTime.BackPictureBox1 = null; - this.checkBoxTime.BackPictureBox2 = null; - this.checkBoxTime.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxTime.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxTime.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxTime.CheckBoxSymbolSize = 14; - this.checkBoxTime.Checked = false; - this.checkBoxTime.CheckLineWidth = 3; - this.checkBoxTime.Enabled = false; - this.checkBoxTime.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxTime.ForeColor = System.Drawing.Color.Silver; - this.checkBoxTime.ImageCheckBox = null; - this.checkBoxTime.ImageUnCheckBox = null; - this.checkBoxTime.InitVisible = true; - this.checkBoxTime.Location = new System.Drawing.Point(16, 120); - this.checkBoxTime.Name = "checkBoxTime"; - this.checkBoxTime.Size = new System.Drawing.Size(135, 14); - this.checkBoxTime.TabIndex = 4; - this.checkBoxTime.Text = "시간설정"; - this.checkBoxTime.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxSubMenu - // - this.checkBoxSubMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxSubMenu.BackPictureBox = null; - this.checkBoxSubMenu.BackPictureBox1 = null; - this.checkBoxSubMenu.BackPictureBox2 = null; - this.checkBoxSubMenu.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxSubMenu.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxSubMenu.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxSubMenu.CheckBoxSymbolSize = 14; - this.checkBoxSubMenu.Checked = false; - this.checkBoxSubMenu.CheckLineWidth = 3; - this.checkBoxSubMenu.Enabled = false; - this.checkBoxSubMenu.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxSubMenu.ForeColor = System.Drawing.Color.Silver; - this.checkBoxSubMenu.ImageCheckBox = null; - this.checkBoxSubMenu.ImageUnCheckBox = null; - this.checkBoxSubMenu.InitVisible = true; - this.checkBoxSubMenu.Location = new System.Drawing.Point(16, 86); - this.checkBoxSubMenu.Name = "checkBoxSubMenu"; - this.checkBoxSubMenu.Size = new System.Drawing.Size(135, 14); - this.checkBoxSubMenu.TabIndex = 3; - this.checkBoxSubMenu.Text = "서브메뉴"; - this.checkBoxSubMenu.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxClear - // - this.checkBoxClear.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxClear.BackPictureBox = null; - this.checkBoxClear.BackPictureBox1 = null; - this.checkBoxClear.BackPictureBox2 = null; - this.checkBoxClear.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxClear.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxClear.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxClear.CheckBoxSymbolSize = 14; - this.checkBoxClear.Checked = false; - this.checkBoxClear.CheckLineWidth = 3; - this.checkBoxClear.Enabled = false; - this.checkBoxClear.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxClear.ForeColor = System.Drawing.Color.Silver; - this.checkBoxClear.ImageCheckBox = null; - this.checkBoxClear.ImageUnCheckBox = null; - this.checkBoxClear.InitVisible = true; - this.checkBoxClear.Location = new System.Drawing.Point(16, 69); - this.checkBoxClear.Name = "checkBoxClear"; - this.checkBoxClear.Size = new System.Drawing.Size(135, 14); - this.checkBoxClear.TabIndex = 2; - this.checkBoxClear.Text = "소거"; - this.checkBoxClear.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxChangeWeight - // - this.checkBoxChangeWeight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxChangeWeight.BackPictureBox = null; - this.checkBoxChangeWeight.BackPictureBox1 = null; - this.checkBoxChangeWeight.BackPictureBox2 = null; - this.checkBoxChangeWeight.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxChangeWeight.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxChangeWeight.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxChangeWeight.CheckBoxSymbolSize = 14; - this.checkBoxChangeWeight.Checked = false; - this.checkBoxChangeWeight.CheckLineWidth = 3; - this.checkBoxChangeWeight.Enabled = false; - this.checkBoxChangeWeight.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxChangeWeight.ForeColor = System.Drawing.Color.Silver; - this.checkBoxChangeWeight.ImageCheckBox = null; - this.checkBoxChangeWeight.ImageUnCheckBox = null; - this.checkBoxChangeWeight.InitVisible = true; - this.checkBoxChangeWeight.Location = new System.Drawing.Point(16, 52); - this.checkBoxChangeWeight.Name = "checkBoxChangeWeight"; - this.checkBoxChangeWeight.Size = new System.Drawing.Size(135, 14); - this.checkBoxChangeWeight.TabIndex = 1; - this.checkBoxChangeWeight.Text = "중량설정"; - this.checkBoxChangeWeight.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxChangeNo - // - this.checkBoxChangeNo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxChangeNo.BackPictureBox = null; - this.checkBoxChangeNo.BackPictureBox1 = null; - this.checkBoxChangeNo.BackPictureBox2 = null; - this.checkBoxChangeNo.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxChangeNo.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxChangeNo.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxChangeNo.CheckBoxSymbolSize = 14; - this.checkBoxChangeNo.Checked = false; - this.checkBoxChangeNo.CheckLineWidth = 3; - this.checkBoxChangeNo.Enabled = false; - this.checkBoxChangeNo.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxChangeNo.ForeColor = System.Drawing.Color.Silver; - this.checkBoxChangeNo.ImageCheckBox = null; - this.checkBoxChangeNo.ImageUnCheckBox = null; - this.checkBoxChangeNo.InitVisible = true; - this.checkBoxChangeNo.Location = new System.Drawing.Point(16, 35); - this.checkBoxChangeNo.Name = "checkBoxChangeNo"; - this.checkBoxChangeNo.Size = new System.Drawing.Size(135, 14); - this.checkBoxChangeNo.TabIndex = 0; - this.checkBoxChangeNo.Text = "품번번경"; - this.checkBoxChangeNo.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // // ControlCenterEquipUser // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -1532,7 +790,6 @@ this.Name = "ControlCenterEquipUser"; this.Size = new System.Drawing.Size(710, 470); this.smartGroupBox1.ResumeLayout(false); - this.groupBoxAccessRight.ResumeLayout(false); this.ResumeLayout(false); } @@ -1549,37 +806,7 @@ private SmartX.SmartKeyboard smartKeyboard; private SmartX.SmartButton buttonPasswordEdit; public SmartX.SmartLabel labelTitleAccessRight; - public SmartX.SmartLabel labelAccessRight; - private SmartX.SmartGroupBox groupBoxAccessRight; - private SmartX.SmartCheckBox checkBoxChangeNo; - private SmartX.SmartCheckBox checkBoxCalibration; - private SmartX.SmartCheckBox checkBoxEthernet; - private SmartX.SmartCheckBox checkBoxSerial; - private SmartX.SmartCheckBox checkBoxDataStat; - private SmartX.SmartCheckBox checkBoxProduct; - private SmartX.SmartCheckBox checkBoxTime; - private SmartX.SmartCheckBox checkBoxSubMenu; - private SmartX.SmartCheckBox checkBoxClear; - private SmartX.SmartCheckBox checkBoxChangeWeight; - private SmartX.SmartCheckBox checkBoxLog; - private SmartX.SmartCheckBox checkBoxFeature; - private SmartX.SmartCheckBox checkBoxInitialization; - private SmartX.SmartCheckBox checkBoxUpdate; - private SmartX.SmartCheckBox checkBoxExternalOutput; - private SmartX.SmartCheckBox checkBoxIOTest; - private SmartX.SmartCheckBox checkBoxAutoZero; - private SmartX.SmartCheckBox checkBoxSorter; - private SmartX.SmartCheckBox checkBoxJudgment; - public SmartX.SmartLabel labelTitleMain; - public SmartX.SmartLabel labelTitleMenu; - private SmartX.SmartButton buttonLevel1; - private SmartX.SmartButton buttonLevel3; - private SmartX.SmartButton buttonLevel2; - private System.Windows.Forms.TextBox textBoxLevel2; - private System.Windows.Forms.TextBox textBoxLevel1; - private System.Windows.Forms.TextBox textBoxLevel3; private SmartX.SmartButton buttonDelete; - private SmartX.SmartButton buttonChangeLevelName; public SmartX.SmartLabel smartLabel11; public SmartX.SmartLabel labelAutomaticLogoutTime; public SmartX.SmartLabel labelTitleAutomaticLogoutTime; @@ -1595,6 +822,9 @@ private SmartX.SmartButton buttonNew; public SmartX.SmartLabel labelTitlePassword; public SmartX.SmartLabel labelAutoLogoutWarning; - private SmartX.SmartCheckBox checkBoxUser; + private System.Windows.Forms.ComboBox comboBoxAccessRight; + private SmartX.SmartSeparatorLine smartSeparatorLine2; + private SmartX.SmartSeparatorLine smartSeparatorLine1; + public SmartX.SmartLabel labelAccessRightAdmin; } } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs index 1c2fa14..4980679 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs @@ -8,12 +8,12 @@ using System.Text; using System.Windows.Forms; using System.Threading; -using ITC81DB_0H.Forms; using ITC81DB_0H.Controls; using ITC81DB_0H.DialogForms; using ITC81DB_2H_ImageDll; using ITC81DB_2H.Datastore; using ITC81DB_0H.Part11_UserManager; +using ITC81DB_0H.Forms; namespace ITC81DB_0H.Controls { @@ -25,8 +25,11 @@ namespace ITC81DB_0H.Controls private bool IsNew; private object LockObject = new object(); private bool PasswordChar; - + private UserItem m_SelectedUserItem; + + private string BeforeID; + private string BeforePassword; #endregion #region Constructor @@ -72,31 +75,6 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Text = "Auto Logout"; this.labelAutoLogoutWarning.Text = "* Applies to all ID"; this.labelTitleAccessRight.Text = "Access right"; - - this.labelTitleMain.Text = "Main"; - this.labelTitleMenu.Text = "Menu"; - - this.checkBoxChangeNo.Text = "Change No."; - this.checkBoxChangeWeight.Text = "Change Weight"; - this.checkBoxClear.Text = "Clear"; - this.checkBoxSubMenu.Text = "SubMenu"; - - this.checkBoxTime.Text = "Time setting"; - this.checkBoxProduct.Text = "Product settings"; - this.checkBoxDataStat.Text = "Data stats"; - this.checkBoxSerial.Text = "Serial port"; - this.checkBoxEthernet.Text = "Ethernet"; - this.checkBoxCalibration.Text = "Calibration"; - this.checkBoxJudgment.Text = "Judgment"; - this.checkBoxSorter.Text = "Sorter settings"; - this.checkBoxAutoZero.Text = "Auto zero"; - this.checkBoxIOTest.Text = "I/O test"; - this.checkBoxExternalOutput.Text = "External output"; - this.checkBoxUpdate.Text = "Update"; - this.checkBoxInitialization.Text = "Initialization"; - this.checkBoxFeature.Text = "Feature settings"; - this.checkBoxUser.Text = "User setting permission"; - this.checkBoxLog.Text = "Log"; } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) { @@ -109,31 +87,6 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Text = "自动注销"; this.labelAutoLogoutWarning.Text = "* 适用于所有身份证"; this.labelTitleAccessRight.Text = "访问权"; - - this.labelTitleMain.Text = "主屏幕"; - this.labelTitleMenu.Text = "菜单"; - - this.checkBoxChangeNo.Text = "产品变化"; - this.checkBoxChangeWeight.Text = "体重设定"; - this.checkBoxClear.Text = "消除"; - this.checkBoxSubMenu.Text = "子菜单"; - - this.checkBoxTime.Text = "时间设定"; - this.checkBoxProduct.Text = "产品设置"; - this.checkBoxDataStat.Text = "数据统计"; - this.checkBoxSerial.Text = "串行端口"; - this.checkBoxEthernet.Text = "以太网"; - this.checkBoxCalibration.Text = "校准"; - this.checkBoxJudgment.Text = "判断设置"; - this.checkBoxSorter.Text = "筛选设定"; - this.checkBoxAutoZero.Text = "自动零点跟踪"; - this.checkBoxIOTest.Text = "I/O测试"; - this.checkBoxExternalOutput.Text = "外部输出"; - this.checkBoxUpdate.Text = "更新"; - this.checkBoxInitialization.Text = "工厂初期化"; - this.checkBoxFeature.Text = "功能设定"; - this.checkBoxUser.Text = "用户设置权限"; - this.checkBoxLog.Text = "日志"; } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Czech) { @@ -149,31 +102,6 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Text = "Автоматический выход"; this.labelAutoLogoutWarning.Text = "* Все идентификаторы"; this.labelTitleAccessRight.Text = "Право доступа"; - - this.labelTitleMain.Text = "Зернистый"; - this.labelTitleMenu.Text = "Меню"; - - this.checkBoxChangeNo.Text = "Изменять товар"; - this.checkBoxChangeWeight.Text = "Настройки вектора"; - this.checkBoxClear.Text = "Сброс"; - this.checkBoxSubMenu.Text = "Подменю"; - - this.checkBoxTime.Text = "Настройки времени"; - this.checkBoxProduct.Text = "Настройки продукта"; - this.checkBoxDataStat.Text = "Статистика данных"; - this.checkBoxSerial.Text = "Послед. порт"; - this.checkBoxEthernet.Text = "Локальная сеть"; - this.checkBoxCalibration.Text = "Калибровка"; - this.checkBoxJudgment.Text = "Oтбраковки"; - this.checkBoxSorter.Text = "Cортировки"; - this.checkBoxAutoZero.Text = "Автоотслеживание нуля"; - this.checkBoxIOTest.Text = "Тест ввода/вывода"; - this.checkBoxExternalOutput.Text = "Внешний выход"; - this.checkBoxUpdate.Text = "Обновить"; - this.checkBoxInitialization.Text = "Инициализация"; - this.checkBoxFeature.Text = "Функция"; - this.checkBoxUser.Text = "Пользователь"; - this.checkBoxLog.Text = "Бревно"; } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) { @@ -186,31 +114,6 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Text = "Automatische Abmeldung"; this.labelAutoLogoutWarning.Text = "* Gilt für alle ID"; this.labelTitleAccessRight.Text = "Zugangsberechtigung"; - - this.labelTitleMain.Text = "Hauptbildschirm"; - this.labelTitleMenu.Text = "Menü"; - - this.checkBoxChangeNo.Text = "Warenwechsel"; - this.checkBoxChangeWeight.Text = "Gewichts-Einstellungen"; - this.checkBoxClear.Text = "Löschen"; - this.checkBoxSubMenu.Text = "Untermenü"; - - this.checkBoxTime.Text = "Zeiteinstellung"; - this.checkBoxProduct.Text = "Produkt"; - this.checkBoxDataStat.Text = "Statistik"; - this.checkBoxSerial.Text = "Seriell"; - this.checkBoxEthernet.Text = "Ethernet"; - this.checkBoxCalibration.Text = "Kalibrierung"; - this.checkBoxJudgment.Text = "Beurteilung"; - this.checkBoxSorter.Text = "Sorter"; - this.checkBoxAutoZero.Text = "Automatische Nullung"; - this.checkBoxIOTest.Text = "I/O Test"; - this.checkBoxExternalOutput.Text = "Externer Ausgang"; - this.checkBoxUpdate.Text = "Aktualisierung"; - this.checkBoxInitialization.Text = "Werkseinstellung"; - this.checkBoxFeature.Text = "Besonderheit"; - this.checkBoxUser.Text = "Benutzer"; - this.checkBoxLog.Text = "Protokoll"; } else { @@ -223,38 +126,20 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Text = "자동 로그아웃"; this.labelAutoLogoutWarning.Text = "* 모든 ID에 적용됨"; this.labelTitleAccessRight.Text = "접근 권한"; - - this.labelTitleMain.Text = "메인화면"; - this.labelTitleMenu.Text = "메뉴화면"; - - this.checkBoxChangeNo.Text = "품번변경"; - this.checkBoxChangeWeight.Text = "중량설정"; - this.checkBoxClear.Text = "소거"; - this.checkBoxSubMenu.Text = "서브메뉴"; - - this.checkBoxTime.Text = "시간설정"; - this.checkBoxProduct.Text = "품목설정"; - this.checkBoxDataStat.Text = "데이터집계"; - this.checkBoxSerial.Text = "시리얼통신"; - this.checkBoxEthernet.Text = "이더넷통신"; - this.checkBoxCalibration.Text = "중량조정"; - this.checkBoxJudgment.Text = "판정설정"; - this.checkBoxSorter.Text = "선별기설정"; - this.checkBoxAutoZero.Text = "자동영점"; - this.checkBoxIOTest.Text = "I/O테스트"; - this.checkBoxExternalOutput.Text = "외부출력"; - this.checkBoxUpdate.Text = "업데이트"; - this.checkBoxInitialization.Text = "공장초기화"; - this.checkBoxFeature.Text = "기능설정"; - this.checkBoxUser.Text = "유저설정권한"; - this.checkBoxLog.Text = "로그"; } } private void DefaultSetting() { this.IsNew = false; this.PasswordChar = false; - this.DisplayOnlyPart11Item(); + this.BeforeID = ""; + this.BeforePassword = ""; + this.DisplayOnlyPart11Item(this.ParentForm.ParentForm.SystemConfig3.IsPart11); + + this.UpdateAccessRightComboBox(); + this.comboBoxAccessRight.SelectedIndexChanged -= new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); + this.comboBoxAccessRight.SelectedIndex = 0; + this.comboBoxAccessRight.SelectedIndexChanged += new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; this.smartKeyboard.Show(); @@ -284,9 +169,9 @@ namespace ITC81DB_0H.Controls } } - public void DisplayOnlyPart11Item() + public void DisplayOnlyPart11Item(bool bValue) { - if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) + if (bValue == true) { this.labelTitleExpiryDateOfAccount.Visible = true; this.labelExpiryDateOfAccount.Visible = true; @@ -301,6 +186,9 @@ namespace ITC81DB_0H.Controls this.smartLabel8.Visible = true; this.smartLabel11.Visible = true; this.labelAutoLogoutWarning.Visible = true; + + this.smartSeparatorLine1.Visible = true; + this.smartSeparatorLine2.Visible = true; } else { @@ -317,8 +205,18 @@ namespace ITC81DB_0H.Controls this.smartLabel8.Visible = false; this.smartLabel11.Visible = false; this.labelAutoLogoutWarning.Visible = false; + + this.smartSeparatorLine1.Visible = false; + this.smartSeparatorLine2.Visible = false; } } + public void UpdateAccessRightComboBox() + { + this.comboBoxAccessRight.Items.Clear(); + this.comboBoxAccessRight.Items.Add(this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name); + this.comboBoxAccessRight.Items.Add(this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name); + this.comboBoxAccessRight.Items.Add(this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name); + } private void SetTextBoxPasswordChar(bool bValue) { @@ -353,16 +251,7 @@ namespace ITC81DB_0H.Controls else this.textBoxPassword.BackColor = Color.Silver; } - private void SetEnableAccessRightButton(bool value) - { - this.buttonLevel1.Enabled = value; - this.buttonLevel2.Enabled = value; - this.buttonLevel3.Enabled = value; - this.buttonLevel1.ButtonUp(); - this.buttonLevel2.ButtonUp(); - this.buttonLevel3.ButtonUp(); - } private void SetEnableOnlyPart11Value(bool value) { this.labelExpiryDateOfAccount.Enabled = value; @@ -383,15 +272,10 @@ namespace ITC81DB_0H.Controls { this.listBoxUserList.Enabled = value; - this.buttonLevel1.Enabled = value; - this.buttonLevel2.Enabled = value; - this.buttonLevel3.Enabled = value; - this.buttonNew.Enabled = value; this.buttonDelete.Enabled = value; this.buttonSave.Enabled = value; - this.buttonChangeLevelName.Enabled = value; this.buttonGroupEditor.Enabled = value; this.SetEnableOnlyPart11Value(value); @@ -522,33 +406,6 @@ namespace ITC81DB_0H.Controls return; } - - if (this.labelAccessRight.Text == "") - { - // 필수 설정 항목을 설정해 주십시오 - DialogFormMessage msg = new DialogFormMessage(null, 16, this.ParentForm.ParentForm.SystemConfig1.Language); - msg.ShowDialog(); - - return; - } - - if (this.labelExpiryDateOfAccount.Text == "000") - { - // 필수 설정 항목을 설정해 주십시오 - DialogFormMessage msg = new DialogFormMessage(null, 16, this.ParentForm.ParentForm.SystemConfig1.Language); - msg.ShowDialog(); - - return; - } - - if (this.labelExpiryDateOfPassword.Text == "00") - { - // 필수 설정 항목을 설정해 주십시오 - DialogFormMessage msg = new DialogFormMessage(null, 16, this.ParentForm.ParentForm.SystemConfig1.Language); - msg.ShowDialog(); - - return; - } #endregion item.ID = this.textBoxID.Text; @@ -556,17 +413,15 @@ namespace ITC81DB_0H.Controls item.ExpireAccount = int.Parse(this.labelExpiryDateOfAccount.Text); item.ExpirePassword = int.Parse(this.labelExpiryDateOfPassword.Text); - if (this.buttonLevel1.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - item.ActiveLevel = 1; - else if (this.buttonLevel2.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - item.ActiveLevel = 2; - else if (this.buttonLevel3.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - item.ActiveLevel = 3; - else if (this.SelectedUserItem.Group == Define.E_UserGroup.Admin) + if (this.SelectedUserItem.Group == Define.E_UserGroup.Admin) { - if(this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) item.ActiveLevel = 9; } + else + { + item.ActiveLevel = this.comboBoxAccessRight.SelectedIndex + 1; + } menuId.fMenu = new bool[UserManager.USER_MENU_ID_MAX]; for (int i = 0; i < UserManager.USER_MENU_ID_MAX; i++) @@ -611,14 +466,8 @@ namespace ITC81DB_0H.Controls this.buttonSave.Visible = false; } - } - - public void UpdateLevelNameDisplay(SystemConfigurationItem2 system) - { - this.buttonLevel1.Text = this.textBoxLevel1.Text = system.UserGroupLevel1Name; - this.buttonLevel2.Text = this.textBoxLevel2.Text = system.UserGroupLevel2Name; - this.buttonLevel3.Text = this.textBoxLevel3.Text = system.UserGroupLevel3Name; - } + } + private void UpdateInitializeUserDisplay(SystemConfigurationItem2 system) { this.SelectedUserItem = new UserItem(); @@ -629,43 +478,22 @@ namespace ITC81DB_0H.Controls this.textBoxPassword.Text = ""; this.labelExpiryDateOfAccount.Text = "180"; this.labelExpiryDateOfPassword.Text = "90"; - this.labelExpiryDateOfAccount2.Text = "yyyy.mm.DD"; - this.labelExpiryDateOfPassword2.Text = "yyyy.mm.DD"; - this.labelAccessRight.Text = ""; + this.labelExpiryDateOfAccount2.Text = "-"; + this.labelExpiryDateOfPassword2.Text = "-"; this.labelExpiryDateOfAccount2.ForeColor = Color.White; this.labelExpiryDateOfPassword2.ForeColor = Color.White; - this.checkBoxChangeNo.Checked = false; - this.checkBoxChangeWeight.Checked = false; - this.checkBoxClear.Checked = false; - this.checkBoxSubMenu.Checked = false; - - this.checkBoxTime.Checked = false; - this.checkBoxProduct.Checked = false; - this.checkBoxDataStat.Checked = false; - this.checkBoxSerial.Checked = false; - this.checkBoxEthernet.Checked = false; - this.checkBoxCalibration.Checked = false; - this.checkBoxJudgment.Checked = false; - this.checkBoxSorter.Checked = false; - this.checkBoxAutoZero.Checked = false; - this.checkBoxIOTest.Checked = false; - this.checkBoxExternalOutput.Checked = false; - this.checkBoxUpdate.Checked = false; - this.checkBoxInitialization.Checked = false; - this.checkBoxFeature.Checked = false; - this.checkBoxUser.Checked = false; - this.checkBoxLog.Checked = false; + this.comboBoxAccessRight.SelectedIndexChanged -= new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); + this.comboBoxAccessRight.SelectedIndex = 0; + this.comboBoxAccessRight.SelectedIndexChanged += new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); this.KeyboardClose(); this.SetEnableID(true); - this.SetEnableAccessRightButton(true); this.SetTextBoxPasswordChar(this.PasswordChar); this.buttonDelete.Visible = false; this.buttonSave.Visible = false; - this.buttonChangeLevelName.Visible = false; this.listBoxUserList.SelectedIndexChanged -= new EventHandler(this.listBoxUserList_SelectedIndexChanged); this.listBoxUserList.SelectItemIndex = -1; @@ -785,8 +613,7 @@ namespace ITC81DB_0H.Controls this.labelExpiryDateOfPassword2.ForeColor = Color.White; this.buttonDelete.Visible = false; - - this.SetEnableAccessRightButton(false); + this.comboBoxAccessRight.Visible = false; this.SetEnableOnlyPart11Value(false); if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.Admin @@ -797,17 +624,9 @@ namespace ITC81DB_0H.Controls } else { + #region 만료일 this.labelExpiryDateOfAccount.Text = item.ExpireAccount.ToString(); this.labelExpiryDateOfPassword.Text = item.ExpirePassword.ToString(); - this.SetEnableOnlyPart11Value(true); - - if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel < item.ActiveLevel) - { - this.buttonDelete.Visible = false; - this.SetEnableAccessRightButton(false); - this.SetEnableOnlyPart11Value(false); - this.SetEnablePassword(false); - } if (item.IsLockAccount == true) { @@ -874,9 +693,28 @@ namespace ITC81DB_0H.Controls this.labelExpiryDateOfPassword2.ForeColor = Color.White; this.labelExpiryDateOfPassword2.Text = string.Format("{0:yy/MM/dd} ~ {1:yy/MM/dd}", item.DateRegister, item.DateExpireRegister); } - } + #endregion - this.CheckBoxCheckedAsLevel(item.Group); + this.comboBoxAccessRight.Visible = true; + this.comboBoxAccessRight.BringToFront(); + this.comboBoxAccessRight.SelectedIndexChanged -= new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); + this.comboBoxAccessRight.SelectedIndex = item.ActiveLevel - 1; + this.comboBoxAccessRight.SelectedIndexChanged += new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); + + if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel < item.ActiveLevel) + { + this.buttonDelete.Visible = false; + this.comboBoxAccessRight.Enabled = false; + this.SetEnableOnlyPart11Value(false); + + this.SetEnablePassword(false); + } + else + { + this.SetEnableOnlyPart11Value(true); + this.comboBoxAccessRight.Enabled = true; + } + } //this.cbAdministrator.Visible = true; //this.cbAdministrator.Checked = item.IsAdmin; @@ -888,181 +726,6 @@ namespace ITC81DB_0H.Controls this.listBoxUserList.AddItem(items[i]); } - private void CheckBoxCheckedAsLevel(Define.E_UserGroup level) - { - switch (level) - { - case Define.E_UserGroup.Level1: - this.buttonLevel1.ButtonDown(); - this.buttonLevel2.ButtonUp(); - this.buttonLevel3.ButtonUp(); - - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name; - - this.checkBoxChangeNo.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMainDisplayProductNo; - this.checkBoxChangeWeight.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMainDisplayWeightSetting; - this.checkBoxClear.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMainDisplayClear; - this.checkBoxSubMenu.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMainDisplaySubMenu; - - this.checkBoxTime.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsBasicTime; - this.checkBoxProduct.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsBasicProduct; - this.checkBoxDataStat.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsBasicDataStatistics; - this.checkBoxSerial.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsConfiSerial; - this.checkBoxEthernet.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsConfiEthernet; - this.checkBoxCalibration.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemCalibration; - this.checkBoxJudgment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemJudgmentSetting; - this.checkBoxSorter.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemSorterSetting; - this.checkBoxAutoZero.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemAutoZero; - this.checkBoxIOTest.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemIOTest; - this.checkBoxExternalOutput.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemExternalOutput; - this.checkBoxUpdate.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsEquipUpdate; - this.checkBoxInitialization.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsEquipInitialize; - this.checkBoxFeature.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsEquipFunctionSetting; - this.checkBoxUser.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsEquipUserSetting; - this.checkBoxLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsLogEnable; - break; - case Define.E_UserGroup.Level2: - this.buttonLevel1.ButtonUp(); - this.buttonLevel2.ButtonDown(); - this.buttonLevel3.ButtonUp(); - - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name; - - this.checkBoxChangeNo.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMainDisplayProductNo; - this.checkBoxChangeWeight.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMainDisplayWeightSetting; - this.checkBoxClear.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMainDisplayClear; - this.checkBoxSubMenu.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMainDisplaySubMenu; - - this.checkBoxTime.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsBasicTime; - this.checkBoxProduct.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsBasicProduct; - this.checkBoxDataStat.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsBasicDataStatistics; - this.checkBoxSerial.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsConfiSerial; - this.checkBoxEthernet.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsConfiEthernet; - this.checkBoxCalibration.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemCalibration; - this.checkBoxJudgment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemJudgmentSetting; - this.checkBoxSorter.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemSorterSetting; - this.checkBoxAutoZero.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemAutoZero; - this.checkBoxIOTest.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemIOTest; - this.checkBoxExternalOutput.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemExternalOutput; - this.checkBoxUpdate.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsEquipUpdate; - this.checkBoxInitialization.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsEquipInitialize; - this.checkBoxFeature.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsEquipFunctionSetting; - this.checkBoxUser.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsEquipUserSetting; - this.checkBoxLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsLogEnable; - break; - case Define.E_UserGroup.Level3: - this.buttonLevel1.ButtonUp(); - this.buttonLevel2.ButtonUp(); - this.buttonLevel3.ButtonDown(); - - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name; - - this.checkBoxChangeNo.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMainDisplayProductNo; - this.checkBoxChangeWeight.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMainDisplayWeightSetting; - this.checkBoxClear.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMainDisplayClear; - this.checkBoxSubMenu.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMainDisplaySubMenu; - - this.checkBoxTime.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsBasicTime; - this.checkBoxProduct.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsBasicProduct; - this.checkBoxDataStat.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsBasicDataStatistics; - this.checkBoxSerial.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsConfiSerial; - this.checkBoxEthernet.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsConfiEthernet; - this.checkBoxCalibration.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemCalibration; - this.checkBoxJudgment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemJudgmentSetting; - this.checkBoxSorter.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemSorterSetting; - this.checkBoxAutoZero.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemAutoZero; - this.checkBoxIOTest.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemIOTest; - this.checkBoxExternalOutput.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemExternalOutput; - this.checkBoxUpdate.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsEquipUpdate; - this.checkBoxInitialization.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsEquipInitialize; - this.checkBoxFeature.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsEquipFunctionSetting; - this.checkBoxUser.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsEquipUserSetting; - this.checkBoxLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsLogEnable; - break; - case Define.E_UserGroup.Admin: - this.SetEnableAccessRightButton(false); - - this.labelAccessRight.Text = "Administrator"; - - this.checkBoxChangeNo.Checked = true; - this.checkBoxChangeWeight.Checked = true; - this.checkBoxClear.Checked = true; - this.checkBoxSubMenu.Checked = true; - - this.checkBoxTime.Checked = true; - this.checkBoxProduct.Checked = true; - this.checkBoxDataStat.Checked = true; - this.checkBoxSerial.Checked = true; - this.checkBoxEthernet.Checked = true; - this.checkBoxCalibration.Checked = true; - this.checkBoxJudgment.Checked = true; - this.checkBoxSorter.Checked = true; - this.checkBoxAutoZero.Checked = true; - this.checkBoxIOTest.Checked = true; - this.checkBoxExternalOutput.Checked = true; - this.checkBoxUpdate.Checked = true; - this.checkBoxInitialization.Checked = true; - this.checkBoxFeature.Checked = true; - this.checkBoxUser.Checked = true; - this.checkBoxLog.Checked = true; - break; - case Define.E_UserGroup.Developer: - this.SetEnableAccessRightButton(false); - - this.labelAccessRight.Text = "Developer"; - - this.checkBoxChangeNo.Checked = true; - this.checkBoxChangeWeight.Checked = true; - this.checkBoxClear.Checked = true; - this.checkBoxSubMenu.Checked = true; - - this.checkBoxTime.Checked = true; - this.checkBoxProduct.Checked = true; - this.checkBoxDataStat.Checked = true; - this.checkBoxSerial.Checked = true; - this.checkBoxEthernet.Checked = true; - this.checkBoxCalibration.Checked = true; - this.checkBoxJudgment.Checked = true; - this.checkBoxSorter.Checked = true; - this.checkBoxAutoZero.Checked = true; - this.checkBoxIOTest.Checked = true; - this.checkBoxExternalOutput.Checked = true; - this.checkBoxUpdate.Checked = true; - this.checkBoxInitialization.Checked = true; - this.checkBoxFeature.Checked = true; - this.checkBoxUser.Checked = true; - this.checkBoxLog.Checked = true; - break; - default: - this.SetEnableAccessRightButton(false); - - this.labelAccessRight.Text = ""; - - this.checkBoxChangeNo.Checked = false; - this.checkBoxChangeWeight.Checked = false; - this.checkBoxClear.Checked = false; - this.checkBoxSubMenu.Checked = false; - - this.checkBoxTime.Checked = false; - this.checkBoxProduct.Checked = false; - this.checkBoxDataStat.Checked = false; - this.checkBoxSerial.Checked = false; - this.checkBoxEthernet.Checked = false; - this.checkBoxCalibration.Checked = false; - this.checkBoxJudgment.Checked = false; - this.checkBoxSorter.Checked = false; - this.checkBoxAutoZero.Checked = false; - this.checkBoxIOTest.Checked = false; - this.checkBoxExternalOutput.Checked = false; - this.checkBoxUpdate.Checked = false; - this.checkBoxInitialization.Checked = false; - this.checkBoxFeature.Checked = false; - this.checkBoxUser.Checked = false; - this.checkBoxLog.Checked = false; - break; - } - } - public void CallBackGetUserData(UserManager.UserMgr_user_list_t user) { this.UpdateCurrentUserItem(user); @@ -1126,7 +789,6 @@ namespace ITC81DB_0H.Controls this.SetEnableID(false); this.SetEnablePassword(false); this.SetEnableOnlyPart11Value(false); - this.buttonLevel1.Enabled = this.buttonLevel2.Enabled = this.buttonLevel3.Enabled = false; this.labelAutomaticLogoutTime.Enabled = false; DialogFormMessage dlg = new DialogFormMessage(Define.E_MessageBoxIcon.Asterisk, code, message1, message2, 0); @@ -1355,7 +1017,6 @@ namespace ITC81DB_0H.Controls this.labelAutomaticLogoutTime.Enabled = true; this.UpdateUserListBoxDisplay(this.ParentForm.ParentForm.ListDllUserName); - this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); this.UpdateInitializeUserDisplay(this.ParentForm.ParentForm.SystemConfig2); } #endregion @@ -1366,7 +1027,6 @@ namespace ITC81DB_0H.Controls int index = this.listBoxUserList.SelectItemIndex; this.IsNew = false; - this.SetEnableAccessRightButton(true); this.SetEnablePassword(true); this.SetTextBoxPasswordChar(this.PasswordChar); this.labelAutomaticLogoutTime.Enabled = true; @@ -1374,8 +1034,6 @@ namespace ITC81DB_0H.Controls if (index == 0) { UserManager.UserManager_GetUserListID(this.listBoxUserList.Items[index]); - - this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Admin); } else if (index < 0) { @@ -1423,7 +1081,7 @@ namespace ITC81DB_0H.Controls { e.Handled = true; - this.textBoxID.Text = this.SelectedUserItem.ID; + this.textBoxID.Text = this.BeforeID; this.KeyboardClose(); } else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' @@ -1456,7 +1114,7 @@ namespace ITC81DB_0H.Controls this.SetTextBoxPasswordChar(this.PasswordChar); if (this.IsNew == true) this.SetEnableID(true); - this.textBoxPassword.Text = this.SelectedUserItem.Password; + this.textBoxPassword.Text = this.BeforePassword; this.KeyboardClose(); } else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' @@ -1465,33 +1123,20 @@ namespace ITC81DB_0H.Controls e.Handled = true; } } + private void smartKeyboard_OnXKeyClick(object sender, EventArgs e) { if (this.smartKeyboard.TargetInputObject == this.textBoxPassword) { - this.textBoxPassword.Text = this.SelectedUserItem.Password; + this.textBoxPassword.Text = this.BeforePassword; if (this.PasswordChar == false) this.SetTextBoxPasswordChar(this.PasswordChar); + this.textBoxPassword.Select(this.textBoxPassword.Text.Length, 0); } - else if (this.smartKeyboard.TargetInputObject == this.textBoxLevel1 - || this.smartKeyboard.TargetInputObject == this.textBoxLevel2 - || this.smartKeyboard.TargetInputObject == this.textBoxLevel3) + else if (this.smartKeyboard.TargetInputObject == this.textBoxID) { - if (this.buttonLevel1.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel1.Visible = false; - } - else if (this.buttonLevel2.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel2.Visible = false; - } - else if (this.buttonLevel3.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel3.Visible = false; - } - - this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); - this.buttonChangeLevelName.Visible = true; + this.textBoxID.Text = this.BeforeID; + this.textBoxID.Select(this.textBoxID.Text.Length, 0); } this.KeyboardClose(); @@ -1499,130 +1144,9 @@ namespace ITC81DB_0H.Controls if (this.IsNew == true) this.SetEnableID(true); } - - private void textBoxLevel1_KeyPress(object sender, KeyPressEventArgs e) + + private void comboBoxAccessRight_SelectedIndexChanged(object sender, EventArgs e) { - if (e.KeyChar == '\r') - { - e.Handled = true; - this.KeyboardClose(); - - this.textBoxLevel1.Visible = false; - - if (this.textBoxLevel1.Text == "" - || this.textBoxLevel1.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name - || this.textBoxLevel1.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name) - { - this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); - this.buttonChangeLevelName.Visible = true; - } - else - { - this.buttonLevel1.Text = this.textBoxLevel1.Text; - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name = this.buttonLevel1.Text; - this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); - - this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - } - } - else if (e.KeyChar == 27) - { - e.Handled = true; - - this.textBoxLevel1.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name; - this.KeyboardClose(); - } - else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' - || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') - { - e.Handled = true; - } - } - private void textBoxLevel2_KeyPress(object sender, KeyPressEventArgs e) - { - if (e.KeyChar == '\r') - { - e.Handled = true; - this.KeyboardClose(); - - this.textBoxLevel2.Visible = false; - - if (this.textBoxLevel2.Text == "" - || this.textBoxLevel2.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name - || this.textBoxLevel2.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name) - { - this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); - this.buttonChangeLevelName.Visible = true; - } - else - { - this.buttonLevel2.Text = this.textBoxLevel2.Text; - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name = this.buttonLevel2.Text; - this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); - - this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - } - } - else if (e.KeyChar == 27) - { - e.Handled = true; - - this.textBoxLevel2.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name; - this.KeyboardClose(); - } - else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' - || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') - { - e.Handled = true; - } - } - private void textBoxLevel3_KeyPress(object sender, KeyPressEventArgs e) - { - if (e.KeyChar == '\r') - { - e.Handled = true; - this.KeyboardClose(); - - this.textBoxLevel3.Visible = false; - - if (this.textBoxLevel3.Text == "" - || this.textBoxLevel3.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name - || this.textBoxLevel3.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name) - { - this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); - this.buttonChangeLevelName.Visible = true; - } - else - { - this.buttonLevel3.Text = this.textBoxLevel3.Text; - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name = this.buttonLevel3.Text; - this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); - - this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - } - } - else if (e.KeyChar == 27) - { - e.Handled = true; - - this.textBoxLevel3.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name; - this.KeyboardClose(); - } - else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' - || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') - { - e.Handled = true; - } - } - - private void buttonPassword_Click(object sender, EventArgs e) - { - this.SetTextBoxPasswordChar(true); - this.textBoxPassword.Text = "user1004!"; - if (this.buttonSave.Visible == false) this.buttonSave.Visible = true; } @@ -1665,6 +1189,8 @@ namespace ITC81DB_0H.Controls this.smartKeyboard.Size = new Size(704, 276); this.smartKeyboard.Hide(); + this.BeforeID = this.textBoxID.Text; + this.smartKeyboard.TargetInputObject = this.textBoxID; this.smartKeyboard.Show(); @@ -1681,6 +1207,8 @@ namespace ITC81DB_0H.Controls this.smartKeyboard.Size = new Size(704, 276); this.smartKeyboard.Hide(); + this.BeforePassword = this.textBoxPassword.Text; + this.smartKeyboard.TargetInputObject = this.textBoxPassword; this.smartKeyboard.Show(); @@ -1792,7 +1320,7 @@ namespace ITC81DB_0H.Controls UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, true, false); // Part 11 - detail = string.Format("Extension of ID expiry date : {0}", this.SelectedUserItem.ID); + detail = string.Format("Extend EXP date(ID) : {0}", this.SelectedUserItem.ID); this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail); } else @@ -1839,7 +1367,7 @@ namespace ITC81DB_0H.Controls UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, true, false); // Part 11 - detail = string.Format("ID Release : {0}", this.SelectedUserItem.ID); + detail = string.Format("Release ID : {0}", this.SelectedUserItem.ID); this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail); } } @@ -1857,7 +1385,7 @@ namespace ITC81DB_0H.Controls UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, false, true); // Part 11 - detail = string.Format("Extension of PW expiry date : {0}", this.SelectedUserItem.ID); + detail = string.Format("Extend EXP date(PW) : {0}", this.SelectedUserItem.ID); this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail); } else @@ -1904,7 +1432,7 @@ namespace ITC81DB_0H.Controls UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, false, true); // Part 11 - detail = string.Format("PW Release : {0}", this.SelectedUserItem.ID); + detail = string.Format("Release PW: {0}", this.SelectedUserItem.ID); this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail); } } @@ -1916,68 +1444,6 @@ namespace ITC81DB_0H.Controls this.ParentForm.CenterEquipUserGroupEditor.BringToFront(); this.ParentForm.CenterEquipUserGroupEditor.DisplayRefresh(this.ParentForm.ParentForm.CurrentSystemStatus); } - - private void buttonLevel_Click(object sender, EventArgs e) - { - SmartX.SmartButton button = sender as SmartX.SmartButton; - - if (button == this.buttonLevel1) - { - this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Level1); - } - else if (button == this.buttonLevel2) - { - this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Level2); - } - else if (button == this.buttonLevel3) - { - this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Level3); - } - - this.buttonChangeLevelName.Visible = true; - - if (this.buttonSave.Visible == false) - this.buttonSave.Visible = true; - } - private void buttonChangeLevelName_Click(object sender, EventArgs e) - { - this.SetEnableID(false); - this.SetEnablePassword(false); - this.SetEnableControl(false); - - if(this.buttonSave.Visible == true) - this.buttonSave.Visible = false; - - this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; - this.smartKeyboard.Location = new Point(3, 137); - this.smartKeyboard.Size = new Size(704, 276); - this.smartKeyboard.Hide(); - - if (this.buttonLevel1.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel1.Visible = true; - this.textBoxLevel1.BringToFront(); - this.smartKeyboard.TargetInputObject = this.textBoxLevel1; - this.textBoxLevel1.Select(this.textBoxLevel1.Text.Length, 0); - } - else if (this.buttonLevel2.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel2.Visible = true; - this.textBoxLevel2.BringToFront(); - this.smartKeyboard.TargetInputObject = this.textBoxLevel2; - this.textBoxLevel2.Select(this.textBoxLevel2.Text.Length, 0); - } - else if (this.buttonLevel3.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel3.Visible = true; - this.textBoxLevel3.BringToFront(); - this.smartKeyboard.TargetInputObject = this.textBoxLevel3; - this.textBoxLevel3.Select(this.textBoxLevel3.Text.Length, 0); - } - - this.smartKeyboard.Show(); - this.buttonChangeLevelName.Visible = false; - } #endregion } } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.resx b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.resx index 8da3f05..04e0040 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.resx +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.resx @@ -165,40 +165,34 @@ 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 - SUVORK5CYII= + 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 + RK5CYII= @@ -248,50 +242,39 @@ XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAACdlJREFUaEPVWvlTldcZ - /v4ORdBM28kPnXTaOo6JzdhmYmpcABFQUXELCMYlEU1BjVZFTVzQGKOpgiCrsqososa4sygo4BI1KqLC - ZRf1D3j6PgcPvfe7B7iX2xnbH57hcs973vM+73beg1r+/v6wY+Q772BcyEyEb0zCksxSxBVXYvWp628F - ccUViE0vQej67Xg/MBQBI0e52Uu4EaFwbNpJxBZWIzKnCuHplQhJq8C01LcDnk0bIo9WYUlRNRanFGLM - xEAXm4k+IgEjR2LKijWIFeGIrEqj0v8FzMmuxKrSakyMWQn/gAB3IpOFRFR+Faa/Re97itAjFcrWT6JW - uBJ5PygcMQX/HyQ0woRMXHEVRn8ypZdIwKhRUkyliMj0LZ1CNMQZdAgReqRSQf/ONS1n0uEtZksJRCUX - IkBSzBo3PQLR+UMn4Ww8jWZhzsyowqzMKnFOL/iZ33FNE9OkTDq9weKCSoyZFAwrdONuYWYWGgyahCZA - o+dmVWN+zjUsPHoNi471gp/5Hdcoown9N8jMza5AUPwWWNGpJ1S+mYQGAg2gZ8PEoFni7bnZ1crgxXnX - sbSwBiuO1+KL4zcU+JnfcY0ylOUe7lXRsen2BjPSKzD/h2xYy/IveK3IhYR4eF5ONaLFyOVFtdh1/i7O - 33uOpvZu9Lx8ha6el3jc1qW+4xplKMs93OsrmVDZG5NRBmt50RWjQH/ggUwJTYIpE5Nfg4TSOlz5tRmv - X78eEJShLPdwryYz1DSjE2Kzz0hECi8bBfoDD2N+s3jpVRq0vrwevzo68erVK4/wUGS5h3upg7pUzdjO - 8gQkEpN1GtbSgktGgf5Az7FY50jhRuVex6rim3jQ0mE0eCBwD/dSB3VRJ3WbzhwIJLI4sxzW53kXjQIm - 6GiwUBdI0S4trEXZ7SajoZ6Ae6mDuqhzKFEhkej0U7CW5F4wCpjAQ5jPOhpry+rQ+aIHL1++HBK4lzp0 - VFSt2M4cDIxiVLoUe+yx80YBE7hphqQA83pJQQ2O1T4yGugNqIO6qJO6vU0vyn92pBRWzNFzRgETGEad - VmyjNY0Oo3HegDqoS6cXzzCd3R9C0q5iUVoxrMU5PxkFTGAO82bmbc2L7ll7J3p6enwCdVAXdVI3zzCd - 3R9CUq9iYepJudmzzhoFTNBEPpOcXnniBrpfvDAa5w2og7qoc8hEUoRIVOYZo4AJdiLtXd14IYb4gq7u - bp+JLEg+AWtRxmmjgAmaiE6tRkeH0Thv8LTN99Sad+g4rIXp5UYBE+zFXvu4Gd3iUV9AHT4VuxCJPFgE - a0FamVHABOf2+7m0zDxpnSbjvEGur+1XiMz9sQDW/NRSo4AJPISjBMfwGJlgvz5Vj7aOTnR1dQ0J3LtG - BkiXC3EIROYcyIc173CJUcAO3rgMuybCUZxFWnar0WikJyhueKzSioVOIjMktUiGdaLBM0mO55tufRKZ - vT8PVmRysduiCVRGxcxjpgEjQiIbZIq909SCzs5Oj9DV1RvBu08diC+pUw+u6LwaVSN0EAnNzqrCbCl8 - 4xPZbpcQidiXC2vuoZMuCyZwMxUxh/lcZYf5SibXlIr7Kr2+OXcLd4VMR0eHEa3t7Si6+Qjbf76Nf56u - x7pTdYrE6uIb+FI6FustVkDnMNIE043n0GkkRwcyWnYyJDLr+2Ow5hw87mK0CYwGldBLfKouEy82NDaj - rb0DKZX31Nsi8WwDLv7SZCRCEl+LDAdE1gTBz2vlZ0LpTfxDSH1VclM5h6P9qpM3VLT5RGYjICkSMr0o - SWTm3hxYEf8qcjPcDhJhNCLfFHlm9X20i5cJR1sbMqofKDLEvkvy1L37BA+etag1YvOZBhWBeDF814U7 - uPGkVT2BTS9IZ1CmprFV9t9S731FRiLD7HAmEr5X3uyzDhS6GW4HPaDvD74fGhqf9xHRuHyvCd+eu91H - iNggaUTP09P0+M7zd9DR3WN8mwwE7kk8c7uvu7k+wq4ibE8WrJn7C1yMNoEecL7Rmx2taBNP29HS2opL - vzzBkar72CH1sEnSjYRIgtGofeIwGuoJrj929N03bAB0rrLv8FWE7s6ENeOHfDfD7SAR1gc9Eif5ayLR - HxgtRmWdNIWO7hfGUd4TdMpe1gydyVqhTcq+w1cwPSkDVvi+PDfD7VBEpCWym7AYW8XznoJkGBV2K9P0 - q5FQ1qBgWtNgA6Az6VRnIiG70mGF7c11M9wOX4lskmLffPaWcWjUCMuUm11gWtNgN6MNtMWFyA4hEvrd - UTfD7VBEnFLL4XB4jLa2VmyRWkkUIqZZS0MTMa1p0IkkwoJ3JjJtexqs6Xty3Ay3g5t0sX8p4W1ukdZq - MNoEEtkq3WzbT7dcxhMiobS+j4AdXLPLrxYibMN2IsHfpsIK2Z3tZrgdzu2Xs1Hdw6dGo01wJmIfVwYi - Ei9rdvn+iAR9cxjWtKQsN8PtcL4QY/NrkHPtPlokKp6gtdWhbn2mlunW19AETGsa/aVW4LYUWMG7Mt0M - t8N5RGF6sXs0PHpqNNwORmXjm2K3X6LO0ERMaxr9FfvUrcmwgnZmuBluhx4aeRExKgzverkXPCFDIhws - ecs73y92xJfUq5nLtKbRX/udsuUQrMmJB9UvduPtYFS4mZcRb1eSoeIcmbvqHjah6dlzNDc3u4FkeLNz - UHza4nBrz57imew1XogplzBx/V5YExJ2Ijh58D+bMioseqYYFTEyVMqaYQNgN2NrZh7zJ0cZfr9MZjO+ - OUj6qowvzo3AG1yRvaYRJfjgz/hoZSKscYtWIuiAZ39J0WR0mjHEJMRuRlIMO3OYP/nqWyjfceznZ743 - tsgU2/isN0regHs2lzcovfahMWj/KYydswTW7/86EYF7Bh8cNUhGpxmjw27G1sx7hsTU646Qz+o7OZiH - k2xM/nVl0OW7jWh6PjghylB2k+zh88E0xk9NysW7Y8fDGuHvjwkJSQj60fO/OBKaEKGjZAeJ8t8n6UGS - mi+G0KtMEeY7042diOnIO4LgZ08fVkEHyvFR3Db4+Y0QIiNG4N0P/oZJW1MQLIVjMtoX6HRUtSXeZHRo - lHMqEmwehP6da5ShLPdwrzOJ4EMX8OmWZPx29AcgB0XEz88PfwyMwJQ9hULGu3+K8wSaDKPE6LC+6F2d - ijTUGTo1KUNZ+x8fgpMvKlvf+/s0ZXvff+EgmeHD/fCnkEjFMtDD4vcGNEBBjNGkPIEy/g0BInB/OT5N - TMYfJoeLzcOV7X1E/kNmOH435kOM/2IzJu3IwdR9pQiS9sYovU3QhqnflyibPly6Ab/581gXEi5ENBmG - apgi9BeMnhGF8Ss24+O132HCur1vBR+v2YPxyzdidNhCVQ/Dhg1XNjqT8Pf3x78BhaXMi3iVyBgAAAAA - SUVORK5CYII= + 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 @@ -341,43 +324,43 @@ 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 - eo2GJkxMTPAf+yfKnQHgovQAAAAASUVORK5CYII= + 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 + SUVORK5CYII= @@ -427,39 +410,36 @@ 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 @@ -509,50 +489,40 @@ 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 @@ -602,50 +572,46 @@ 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 @@ -695,42 +661,28 @@ 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 - SUVORK5CYII= + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAABOJJREFUaEPdmtlLlG0Y + xt//I7fyTPFMBEUkCDpWMElcUNwQwt1Ky303t1zKPfc109Lcd1NLKvUgyANBQf+O++N3x/i5zMHAJ+nz + HVxzMPO+81zXXM993fczM5aLi4tchru7u8TFxUlfX5/s7u7K8fGxnJ6eysnJyV8Fax4dHcmPHz/k3bt3 + EhUVJXfv3r3CF1wRwsU7OztyeHgov379UiHfv3/X524CrA0HuMBpa2tLQkNDL3AGZ0JQ+urVK714b29P + b1hZWZHFxUWZm5uT2dnZGwFrw2F1dVW2t7dlf39fORYWFoqrq+tVIZWVlfL792/59u2bLC0tyczMjExO + TsrHjx9lYmJCxsfHbwSsDQe4wGl5eVk5HhwcSG5u7kUh0dHRKgIX+BQ+ffqkb/Lhw4dbBTjBDZfgCudH + jx79EXLv3j21DCCCT2BsbOzWAkFwhOvXr191+7u5uYkVGxsrP3/+lIWFBbXQ3s23DYiBK7VDPVP8Vnt7 + u2xsbOge5KL3798bAbhOTU3J5uamvH79WixUAfbf6OioUWCLEUzUjUVtkAaoHBkZMQpwplZIMouCwSJe + GB4eNgpw/vz5sxa8RYxhzdDQkHFADLXN9rK+fPmiCTA4OGgcEIMJ1LhFYlHo/f39xmFgYEALntbx/xGy + vr6umdzb22scOGZgAiOLtba2pjHW09NjHBBDl1chjMc0l+7ubuOAGHYTvUSFkMddXV3GATG2pmjRFcnj + zs5O48DxFxOmp6f/CCGPOzo6jANiMEGF0EyIsba2NuPA5I4JjFgqhExubW11GMnJyeLj4yMeHh7i6el5 + bfDy8pL79+9Ldna23XUvAzF0eBVCMyGPW1paHEJaWpp4e3tLUFCQxMTESEJCwrUhPj5eIiMjJSQkRIqL + i+2ufx6IYTcxb1nz8/MaY2/fvnUIDx8+VBH2iFwX+IBevHhhd/3zaG5uVhP0PEJ0EWNNTU0O4cGDB9fu + xGU8efJEysrK7K5/Hm/evFETGHpVCJnc2NjoEB4/fiyJiYl2CVwX2FaQtLf+eSAGE1QI0UWM1dfXO4SC + ggJJTU1VXLegpKQkKSkpOatZe+ufR0NDg5rAvKVCyGQO8I6iqqpKE4O0u3xG+C+wHV8d5YMYmqIKIbog + VVtbaxzq6upUNIOjCiHGampqjANiaIoMjhbRxX5ku5iG6upqNYHtqELIY76JNw2IQQjHEIujIlFXUVFh + HPgFARMICYuKJ5NpQKahvLxcTWBwtKh4Yoz8Ng2lpaVqAtFtUfEIoZuaBsTQFBkcLSqePOanLNNQVFSk + JtCYLQqFTM7PzzcOjEuYwEhzJiQvL884IIamqEIYg8ljfljMyckxCojBBEYsi1GYDskLHGZMApxt44r1 + 8uVLtYcnOSubBHYRU3BmZqZYgYGBmsXY9Pz5c2OQlZWlnGmIHL8t/j3A1iLKuODp06dGAK70Ebq7s7Oz + WDygiH3GvuMirLrNgKOtJAICAv4V4uTkJOHh4dryUZqRkSHp6em3EnCDI7NWcHCwcj/7C4dNTEREhLZ+ + LuQmvsOync9vGnCBk21L8d3XnTt3lPuZEJsYXsAq7CMRnj17pjfzRikpKTcC1sYFuMAJQb6+vhdEXBBi + E4MzXOTv768OcaMt7kiKvwnbmogJCwsTPz8/5QbH8yJcXFzkHy+tNzQzINeKAAAAAElFTkSuQmCC @@ -780,49 +732,30 @@ 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 @@ -872,312 +805,36 @@ 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 - SUVORK5CYII= - - - - - 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 - KacAAAAASUVORK5CYII= - - - - - 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 - NBeN7Ndd9m8AAAAASUVORK5CYII= - - - - - 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 + aHkAAAAASUVORK5CYII= diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.Designer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.Designer.cs index 8d376b5..1d68027 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.Designer.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.Designer.cs @@ -30,6 +30,14 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterEquipUserGroupEditor)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.smartKeyboard = new SmartX.SmartKeyboard(); + this.buttonEditLevel3 = new SmartX.SmartButton(); + this.buttonEditLevel2 = new SmartX.SmartButton(); + this.buttonEditLevel1 = new SmartX.SmartButton(); + this.textBoxLevel2 = new System.Windows.Forms.TextBox(); + this.textBoxLevel1 = new System.Windows.Forms.TextBox(); + this.textBoxLevel3 = new System.Windows.Forms.TextBox(); + this.labelTitleChangeName = new SmartX.SmartLabel(); this.checkBoxL3Log = new SmartX.SmartCheckBox(); this.checkBoxNotLoginLog = new SmartX.SmartCheckBox(); this.checkBoxL2Log = new SmartX.SmartCheckBox(); @@ -158,6 +166,14 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.Black; this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.smartKeyboard); + this.smartGroupBox1.Controls.Add(this.buttonEditLevel3); + this.smartGroupBox1.Controls.Add(this.buttonEditLevel2); + this.smartGroupBox1.Controls.Add(this.buttonEditLevel1); + this.smartGroupBox1.Controls.Add(this.textBoxLevel2); + this.smartGroupBox1.Controls.Add(this.textBoxLevel1); + this.smartGroupBox1.Controls.Add(this.textBoxLevel3); + this.smartGroupBox1.Controls.Add(this.labelTitleChangeName); this.smartGroupBox1.Controls.Add(this.checkBoxL3Log); this.smartGroupBox1.Controls.Add(this.checkBoxNotLoginLog); this.smartGroupBox1.Controls.Add(this.checkBoxL2Log); @@ -292,6 +308,199 @@ this.smartGroupBox1.Text = "smartGroupBox1"; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // smartKeyboard + // + this.smartKeyboard.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(198)))), ((int)(((byte)(195)))), ((int)(((byte)(198))))); + this.smartKeyboard.ControlKeyDisable = true; + this.smartKeyboard.DesignMinimize = true; + this.smartKeyboard.FontColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.smartKeyboard.HanYoungKeyDisable = true; + this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; + this.smartKeyboard.KeyFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.smartKeyboard.KeyOutLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(157)))), ((int)(((byte)(157)))), ((int)(((byte)(157))))); + this.smartKeyboard.KeyOutLineWidth = 1; + this.smartKeyboard.KeyPressImage1 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyPressImage1"))); + this.smartKeyboard.KeyPressImage2 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyPressImage2"))); + this.smartKeyboard.KeyPressImage3 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyPressImage3"))); + this.smartKeyboard.KeyUpImage1 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage1"))); + this.smartKeyboard.KeyUpImage2 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage2"))); + this.smartKeyboard.KeyUpImage3 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage3"))); + this.smartKeyboard.LeftMargin = 5; + this.smartKeyboard.Location = new System.Drawing.Point(12, 3); + this.smartKeyboard.Name = "smartKeyboard"; + this.smartKeyboard.PressFontColor = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(37)))), ((int)(((byte)(37))))); + this.smartKeyboard.PressKeyFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(146)))), ((int)(((byte)(146)))), ((int)(((byte)(146))))); + this.smartKeyboard.PressKeyOutLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(41)))), ((int)(((byte)(41))))); + this.smartKeyboard.RoundedCorners = true; + this.smartKeyboard.SetBackimage = null; + this.smartKeyboard.Size = new System.Drawing.Size(16, 11); + this.smartKeyboard.TabIndex = 730; + this.smartKeyboard.TABKeyDisable = false; + this.smartKeyboard.TargetInputObject = null; + this.smartKeyboard.Text = "smartKeyboard1"; + this.smartKeyboard.ThemeStyle = SmartX.SmartKeyboard.KEYBOARDTHEMESTYLE.STANDARD8; + this.smartKeyboard.TopMargin = 110; + this.smartKeyboard.OnXKeyClick += new System.EventHandler(this.smartKeyboard_OnXKeyClick); + // + // buttonEditLevel3 + // + this.buttonEditLevel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel3.BackPictureBox = null; + this.buttonEditLevel3.BackPictureBox1 = null; + this.buttonEditLevel3.BackPictureBox2 = null; + this.buttonEditLevel3.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel3.ButtonImageAutoSize = true; + this.buttonEditLevel3.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonEditLevel3.DisableImage = null; + this.buttonEditLevel3.DownImage = null; + this.buttonEditLevel3.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.buttonEditLevel3.GroupID = 0; + this.buttonEditLevel3.InitVisible = true; + this.buttonEditLevel3.Location = new System.Drawing.Point(302, 436); + this.buttonEditLevel3.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonEditLevel3.Name = "buttonEditLevel3"; + this.buttonEditLevel3.NestedClickEventPrevent = false; + this.buttonEditLevel3.OutlinePixel = 1; + this.buttonEditLevel3.RepeatInterval = 200; + this.buttonEditLevel3.RepeatIntervalAccelerate = null; + this.buttonEditLevel3.SafeInterval = 200; + this.buttonEditLevel3.Size = new System.Drawing.Size(50, 23); + this.buttonEditLevel3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonEditLevel3.TabIndex = 728; + this.buttonEditLevel3.Text = "Edit"; + this.buttonEditLevel3.TextColor = System.Drawing.Color.White; + this.buttonEditLevel3.TextDownColor = System.Drawing.Color.MidnightBlue; + this.buttonEditLevel3.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonEditLevel3.TextLocation = new System.Drawing.Point(0, 0); + this.buttonEditLevel3.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonEditLevel3.UpImage = null; + this.buttonEditLevel3.Click += new System.EventHandler(this.buttonEdit_Click); + // + // buttonEditLevel2 + // + this.buttonEditLevel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel2.BackPictureBox = null; + this.buttonEditLevel2.BackPictureBox1 = null; + this.buttonEditLevel2.BackPictureBox2 = null; + this.buttonEditLevel2.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel2.ButtonImageAutoSize = true; + this.buttonEditLevel2.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonEditLevel2.DisableImage = null; + this.buttonEditLevel2.DownImage = null; + this.buttonEditLevel2.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.buttonEditLevel2.GroupID = 0; + this.buttonEditLevel2.InitVisible = true; + this.buttonEditLevel2.Location = new System.Drawing.Point(302, 411); + this.buttonEditLevel2.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonEditLevel2.Name = "buttonEditLevel2"; + this.buttonEditLevel2.NestedClickEventPrevent = false; + this.buttonEditLevel2.OutlinePixel = 1; + this.buttonEditLevel2.RepeatInterval = 200; + this.buttonEditLevel2.RepeatIntervalAccelerate = null; + this.buttonEditLevel2.SafeInterval = 200; + this.buttonEditLevel2.Size = new System.Drawing.Size(50, 23); + this.buttonEditLevel2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonEditLevel2.TabIndex = 727; + this.buttonEditLevel2.Text = "Edit"; + this.buttonEditLevel2.TextColor = System.Drawing.Color.White; + this.buttonEditLevel2.TextDownColor = System.Drawing.Color.MidnightBlue; + this.buttonEditLevel2.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonEditLevel2.TextLocation = new System.Drawing.Point(0, 0); + this.buttonEditLevel2.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonEditLevel2.UpImage = null; + this.buttonEditLevel2.Click += new System.EventHandler(this.buttonEdit_Click); + // + // buttonEditLevel1 + // + this.buttonEditLevel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel1.BackPictureBox = null; + this.buttonEditLevel1.BackPictureBox1 = null; + this.buttonEditLevel1.BackPictureBox2 = null; + this.buttonEditLevel1.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel1.ButtonImageAutoSize = true; + this.buttonEditLevel1.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonEditLevel1.DisableImage = null; + this.buttonEditLevel1.DownImage = null; + this.buttonEditLevel1.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.buttonEditLevel1.GroupID = 0; + this.buttonEditLevel1.InitVisible = true; + this.buttonEditLevel1.Location = new System.Drawing.Point(302, 386); + this.buttonEditLevel1.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonEditLevel1.Name = "buttonEditLevel1"; + this.buttonEditLevel1.NestedClickEventPrevent = false; + this.buttonEditLevel1.OutlinePixel = 1; + this.buttonEditLevel1.RepeatInterval = 200; + this.buttonEditLevel1.RepeatIntervalAccelerate = null; + this.buttonEditLevel1.SafeInterval = 200; + this.buttonEditLevel1.Size = new System.Drawing.Size(50, 23); + this.buttonEditLevel1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonEditLevel1.TabIndex = 726; + this.buttonEditLevel1.Text = "Edit"; + this.buttonEditLevel1.TextColor = System.Drawing.Color.White; + this.buttonEditLevel1.TextDownColor = System.Drawing.Color.MidnightBlue; + this.buttonEditLevel1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonEditLevel1.TextLocation = new System.Drawing.Point(0, 0); + this.buttonEditLevel1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonEditLevel1.UpImage = null; + this.buttonEditLevel1.Click += new System.EventHandler(this.buttonEdit_Click); + // + // textBoxLevel2 + // + this.textBoxLevel2.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); + this.textBoxLevel2.Location = new System.Drawing.Point(125, 411); + this.textBoxLevel2.MaxLength = 15; + this.textBoxLevel2.Name = "textBoxLevel2"; + this.textBoxLevel2.Size = new System.Drawing.Size(171, 23); + this.textBoxLevel2.TabIndex = 725; + this.textBoxLevel2.Text = "Level2"; + this.textBoxLevel2.GotFocus += new System.EventHandler(this.textBoxLevel2_GotFocus); + this.textBoxLevel2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel2_KeyPress); + // + // textBoxLevel1 + // + this.textBoxLevel1.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); + this.textBoxLevel1.Location = new System.Drawing.Point(125, 386); + this.textBoxLevel1.MaxLength = 15; + this.textBoxLevel1.Name = "textBoxLevel1"; + this.textBoxLevel1.Size = new System.Drawing.Size(171, 23); + this.textBoxLevel1.TabIndex = 723; + this.textBoxLevel1.Text = "Level1"; + this.textBoxLevel1.GotFocus += new System.EventHandler(this.textBoxLevel1_GotFocus); + this.textBoxLevel1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel1_KeyPress); + // + // textBoxLevel3 + // + this.textBoxLevel3.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); + this.textBoxLevel3.Location = new System.Drawing.Point(125, 436); + this.textBoxLevel3.MaxLength = 15; + this.textBoxLevel3.Name = "textBoxLevel3"; + this.textBoxLevel3.Size = new System.Drawing.Size(171, 23); + this.textBoxLevel3.TabIndex = 724; + this.textBoxLevel3.Text = "Level3"; + this.textBoxLevel3.GotFocus += new System.EventHandler(this.textBoxLevel3_GotFocus); + this.textBoxLevel3.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel3_KeyPress); + // + // labelTitleChangeName + // + this.labelTitleChangeName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.labelTitleChangeName.BackPictureBox = null; + this.labelTitleChangeName.BackPictureBox1 = null; + this.labelTitleChangeName.BackPictureBox2 = null; + this.labelTitleChangeName.BorderColor = System.Drawing.Color.Wheat; + this.labelTitleChangeName.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleChangeName.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleChangeName.ForeColor = System.Drawing.Color.White; + this.labelTitleChangeName.InitVisible = true; + this.labelTitleChangeName.LineSpacing = 0F; + this.labelTitleChangeName.Location = new System.Drawing.Point(12, 386); + this.labelTitleChangeName.Name = "labelTitleChangeName"; + this.labelTitleChangeName.Size = new System.Drawing.Size(107, 73); + this.labelTitleChangeName.TabIndex = 729; + this.labelTitleChangeName.Text = "레벨명변경"; + this.labelTitleChangeName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleChangeName.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleChangeName.Wordwrap = true; + // // checkBoxL3Log // this.checkBoxL3Log.BackPictureBox = null; @@ -462,7 +671,7 @@ this.checkBoxL3EquipmentEngineer.ImageCheckBox = null; this.checkBoxL3EquipmentEngineer.ImageUnCheckBox = null; this.checkBoxL3EquipmentEngineer.InitVisible = true; - this.checkBoxL3EquipmentEngineer.Location = new System.Drawing.Point(292, 441); + this.checkBoxL3EquipmentEngineer.Location = new System.Drawing.Point(636, 356); this.checkBoxL3EquipmentEngineer.Name = "checkBoxL3EquipmentEngineer"; this.checkBoxL3EquipmentEngineer.Size = new System.Drawing.Size(20, 20); this.checkBoxL3EquipmentEngineer.TabIndex = 694; @@ -886,7 +1095,7 @@ this.checkBoxNotLoginEquipmentEngineer.ImageCheckBox = null; this.checkBoxNotLoginEquipmentEngineer.ImageUnCheckBox = null; this.checkBoxNotLoginEquipmentEngineer.InitVisible = true; - this.checkBoxNotLoginEquipmentEngineer.Location = new System.Drawing.Point(321, 441); + this.checkBoxNotLoginEquipmentEngineer.Location = new System.Drawing.Point(665, 356); this.checkBoxNotLoginEquipmentEngineer.Name = "checkBoxNotLoginEquipmentEngineer"; this.checkBoxNotLoginEquipmentEngineer.Size = new System.Drawing.Size(20, 20); this.checkBoxNotLoginEquipmentEngineer.TabIndex = 664; @@ -905,7 +1114,7 @@ this.labelTitleEngineer.ForeColor = System.Drawing.Color.White; this.labelTitleEngineer.InitVisible = true; this.labelTitleEngineer.LineSpacing = 0F; - this.labelTitleEngineer.Location = new System.Drawing.Point(12, 441); + this.labelTitleEngineer.Location = new System.Drawing.Point(356, 356); this.labelTitleEngineer.Name = "labelTitleEngineer"; this.labelTitleEngineer.Size = new System.Drawing.Size(219, 20); this.labelTitleEngineer.TabIndex = 663; @@ -930,7 +1139,7 @@ this.checkBoxL2EquipmentEngineer.ImageCheckBox = null; this.checkBoxL2EquipmentEngineer.ImageUnCheckBox = null; this.checkBoxL2EquipmentEngineer.InitVisible = true; - this.checkBoxL2EquipmentEngineer.Location = new System.Drawing.Point(265, 441); + this.checkBoxL2EquipmentEngineer.Location = new System.Drawing.Point(609, 356); this.checkBoxL2EquipmentEngineer.Name = "checkBoxL2EquipmentEngineer"; this.checkBoxL2EquipmentEngineer.Size = new System.Drawing.Size(20, 20); this.checkBoxL2EquipmentEngineer.TabIndex = 662; @@ -953,7 +1162,7 @@ this.checkBoxL1EquipmentEngineer.ImageCheckBox = null; this.checkBoxL1EquipmentEngineer.ImageUnCheckBox = null; this.checkBoxL1EquipmentEngineer.InitVisible = true; - this.checkBoxL1EquipmentEngineer.Location = new System.Drawing.Point(237, 441); + this.checkBoxL1EquipmentEngineer.Location = new System.Drawing.Point(581, 356); this.checkBoxL1EquipmentEngineer.Name = "checkBoxL1EquipmentEngineer"; this.checkBoxL1EquipmentEngineer.Size = new System.Drawing.Size(20, 20); this.checkBoxL1EquipmentEngineer.TabIndex = 661; @@ -2952,5 +3161,13 @@ private SmartX.SmartCheckBox checkBoxL2Log; private SmartX.SmartCheckBox checkBoxL1Log; private SmartX.SmartLabel labelTitleLog; + private SmartX.SmartButton buttonEditLevel3; + private SmartX.SmartButton buttonEditLevel2; + private SmartX.SmartButton buttonEditLevel1; + private System.Windows.Forms.TextBox textBoxLevel2; + private System.Windows.Forms.TextBox textBoxLevel1; + private System.Windows.Forms.TextBox textBoxLevel3; + private SmartX.SmartLabel labelTitleChangeName; + private SmartX.SmartKeyboard smartKeyboard; } } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.cs index 1545ce7..19c9a07 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.cs @@ -11,6 +11,7 @@ using ITC81DB_0H.Forms; using ITC81DB_0H.DialogForms; using ITC81DB_2H_ImageDll; using ITC81DB_2H.Datastore; +using SmartX; namespace ITC81DB_0H.Controls { @@ -18,6 +19,10 @@ namespace ITC81DB_0H.Controls { #region Field private FormMenu m_ParentForm; + + private string BeforeTextBox1; + private string BeforeTextBox2; + private string BeforeTextBox3; #endregion #region Constructor @@ -79,6 +84,7 @@ namespace ITC81DB_0H.Controls this.labelTitleEngineer.Text = "Engineer settings"; this.labelTitleLog.Text = "Log"; + this.labelTitleChangeName.Text = "Change Lv Name"; #endregion } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) @@ -115,6 +121,7 @@ namespace ITC81DB_0H.Controls this.labelTitleEngineer.Text = "工程师设置"; this.labelTitleLog.Text = "日志"; + this.labelTitleChangeName.Text = "更改级别名称"; #endregion } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Czech) @@ -154,6 +161,7 @@ namespace ITC81DB_0H.Controls this.labelTitleEngineer.Text = "Инженерные настройки"; this.labelTitleLog.Text = "Системный журнал"; + this.labelTitleChangeName.Text = "Изменить имя уровня"; #endregion } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) @@ -190,6 +198,7 @@ namespace ITC81DB_0H.Controls this.labelTitleEngineer.Text = "Ingenieur-Einstellungen"; this.labelTitleLog.Text = "Systemprotokoll"; + this.labelTitleChangeName.Text = "Ebenennamen ändern"; #endregion } else @@ -226,11 +235,15 @@ namespace ITC81DB_0H.Controls this.labelTitleEngineer.Text = "엔지니어설정"; this.labelTitleLog.Text = "로그"; + this.labelTitleChangeName.Text = "레벨명변경"; #endregion } } private void DefaultSetting() { + this.BeforeTextBox1 = ""; + this.BeforeTextBox2 = ""; + this.BeforeTextBox3 = ""; } private void UpdateDisplay(UserGroup group) @@ -407,6 +420,13 @@ namespace ITC81DB_0H.Controls this.ParentForm.BottomLog.UpdateMenuDisplay(status); } + public void UpdateLevelNameDisplay(SystemConfigurationItem2 system) + { + this.textBoxLevel1.Text = system.UserGroupLevel1Name; + this.textBoxLevel2.Text = system.UserGroupLevel2Name; + this.textBoxLevel3.Text = system.UserGroupLevel3Name; + } + public void DisplayRefresh(SystemStatus status) { if(this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.Developer) @@ -414,6 +434,7 @@ namespace ITC81DB_0H.Controls else this.UpdateNotLoginVisible(false); this.UpdateDisplay(this.ParentForm.ParentForm.CurrentUserGroup); + this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); } #endregion @@ -424,6 +445,182 @@ namespace ITC81DB_0H.Controls this.buttonSave.Visible = true; } + + private void textBoxLevel1_GotFocus(object sender, EventArgs e) + { + this.smartKeyboard.TargetInputObject = this.textBoxLevel1; + this.textBoxLevel1.Select(this.textBoxLevel1.Text.Length, 0); + } + private void textBoxLevel2_GotFocus(object sender, EventArgs e) + { + this.smartKeyboard.TargetInputObject = this.textBoxLevel2; + this.textBoxLevel2.Select(this.textBoxLevel2.Text.Length, 0); + } + private void textBoxLevel3_GotFocus(object sender, EventArgs e) + { + this.smartKeyboard.TargetInputObject = this.textBoxLevel3; + this.textBoxLevel3.Select(this.textBoxLevel3.Text.Length, 0); + } + + private void buttonEdit_Click(object sender, EventArgs e) + { + SmartButton button = sender as SmartButton; + + this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; + this.smartKeyboard.Location = new Point(8, 0); + this.smartKeyboard.Size = new Size(695, 377); + this.smartKeyboard.KeyFillColor = Color.Black; + this.smartKeyboard.BackColor = Color.FromArgb(30, 30, 30); + + if (button == this.buttonEditLevel1) + { + this.BeforeTextBox1 = this.textBoxLevel1.Text; + this.smartKeyboard.TargetInputObject = this.textBoxLevel1; + this.textBoxLevel1.Select(this.textBoxLevel1.Text.Length, 0); + } + else if (button == this.buttonEditLevel2) + { + this.BeforeTextBox2 = this.textBoxLevel2.Text; + this.smartKeyboard.TargetInputObject = this.textBoxLevel2; + this.textBoxLevel2.Select(this.textBoxLevel2.Text.Length, 0); + } + else if (button == this.buttonEditLevel3) + { + this.BeforeTextBox3 = this.textBoxLevel3.Text; + this.smartKeyboard.TargetInputObject = this.textBoxLevel3; + this.textBoxLevel3.Select(this.textBoxLevel3.Text.Length, 0); + } + + this.smartKeyboard.Show(); + } + + private void textBoxLevel1_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + e.Handled = true; + this.smartKeyboard.Hide(); + + if (this.textBoxLevel1.Text == "" + || this.textBoxLevel1.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name + || this.textBoxLevel1.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name) + { + this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); + } + else + { + this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name = this.textBoxLevel1.Text; + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + + this.ParentForm.ParentForm.ChildFormMenu.CenterEquipUser.UpdateAccessRightComboBox(); + this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + } + } + else if (e.KeyChar == 27) + { + e.Handled = true; + + this.textBoxLevel1.Text = this.BeforeTextBox1; + this.smartKeyboard.Hide(); + } + else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' + || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') + { + e.Handled = true; + } + } + private void textBoxLevel2_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + e.Handled = true; + this.smartKeyboard.Hide(); + + if (this.textBoxLevel2.Text == "" + || this.textBoxLevel2.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name + || this.textBoxLevel2.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name) + { + this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); + } + else + { + this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name = this.textBoxLevel2.Text; + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + + this.ParentForm.ParentForm.ChildFormMenu.CenterEquipUser.UpdateAccessRightComboBox(); + this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + } + } + else if (e.KeyChar == 27) + { + e.Handled = true; + + this.textBoxLevel2.Text = this.BeforeTextBox2; + this.smartKeyboard.Hide(); + } + else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' + || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') + { + e.Handled = true; + } + } + private void textBoxLevel3_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + e.Handled = true; + this.smartKeyboard.Hide(); + + if (this.textBoxLevel3.Text == "" + || this.textBoxLevel3.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name + || this.textBoxLevel3.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name) + { + this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); + } + else + { + this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name = this.textBoxLevel3.Text; + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + + this.ParentForm.ParentForm.ChildFormMenu.CenterEquipUser.UpdateAccessRightComboBox(); + this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + } + } + else if (e.KeyChar == 27) + { + e.Handled = true; + + this.textBoxLevel3.Text = this.BeforeTextBox3; + this.smartKeyboard.Hide(); + } + else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' + || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') + { + e.Handled = true; + } + } + + private void smartKeyboard_OnXKeyClick(object sender, EventArgs e) + { + if (this.smartKeyboard.TargetInputObject == this.textBoxLevel1) + { + this.textBoxLevel1.Text = this.BeforeTextBox1; + } + else if (this.smartKeyboard.TargetInputObject == this.textBoxLevel2) + { + this.textBoxLevel2.Text = this.BeforeTextBox2; + } + else if (this.smartKeyboard.TargetInputObject == this.textBoxLevel3) + { + this.textBoxLevel3.Text = this.BeforeTextBox3; + } + + this.smartKeyboard.Hide(); + } + private void buttonSave_Click(object sender, EventArgs e) { #region Level1 diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.resx b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.resx index 8ccd266..2d82866 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.resx +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.resx @@ -118,6 +118,420 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + 6nc2xOg6Bq4AAAAASUVORK5CYII= + + + + + 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 + vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L + Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA + bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z + llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW + ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s + xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 + eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw + YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR + XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm + WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl + xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 + dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 + V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za + Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v + Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb + PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ + 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h + /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr + XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS + fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ + tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAABPlJREFUeF7t2UkvbFsY + xnFfQN+Uvi19T+m7KkX0QogIMWFCCGIkrkQIMyYGxEATEQOJb6BvDkEIX+AkZ2J+v8B777OSXaWoe+6Z + KLXkGfxSp2ST/drnX2vtzUf+9hEi0suHcMvKyiQ7O1vMZrMkJCRIXFycxMbGSkxMjDZwvvHx8er8k5KS + JDk5WVJSUiQ1NdUB7/F1zJmYmKjVrNHR0Q7GrL+bV+dZ3/vO19a4ppGRkRIeHi6hoaESFRUllZWVLo2C + S7iFhYWSmZkpGRkZ6heA4fHLMYb3VsZ/XOOCAs4ZcP64gL9jzOjtcxr+a17M8X/zfpdZjXndzfiWTvMa + c+JDBgEjWpPJJP7+/lJeXu4+XIvF4og2PT1d8vPzpbi42KGoqEgdQ0SfB4tnQUGB5Obmqg4RckhIiAQE + BMjg4KBruHZ7rWO7gYMrKiqkvr5e6urqxGazSXV1tVRVVRGRB2BrXFpaquJFuNg2BwYGSnBwsGxsbDjD + ReU4ICcnR0Xa2toq7e3t0tTU5IjXarWSF8K1ec/dceT9ampqHLA1RrjY7mPbjGj9/Pxcw0WwWHFROVba + trY2aWlpkdraWvUJgBUYD63Iu+DiuuPuWNILbk3xkBi3r+jTuI1dX193hltUZJG0tDT1DYgV8eITAO/f + 7r2J6POhNzxjysrKUqsuFlR8IGMBdVlxESjCLSkpUcs0tltYafFQyt0PJqLPZYSbl5en7nmxoNrtdtnc + 3HSGi5qxVUaoCBbxom4s1+5+KBF9LiNcvOK5E541NTY2yvb2tmu4+JstQkXdOJDhEn0dhkukIYZLpCGG + S6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGG + S6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGG + S6QhhkukIYZLpCGGS6ShPw7XbDYzXCIv8Yfhlqlw8Q0ItqqqiuESfSEEm5mZKXl5eapHhNvQ0CBbW1vO + cCsqyiUpKUkKCgrU6osD8cpwib4GgkW4CBg9Itrm5mbZ2dlxhoulOC4uTrKzs1WspaWlisViUTETkWcg + VECL6enp6t82m01aWlqks7NT9vb2nOHa7XYxmUySmJgoqampqnR8I/bYRORZ6A/RokXEjNW2q6tL+vr6 + 5ODgwBluR0eHBAUFSUREhMTGxqqA8ZQZcO9LRJ6BW1bjFeHiYXF3d7cMDQ3J6OiobGxsOMOdnf1L/Pz8 + VLxhYWGSkJCg9tjvl3Ei+lzGVhm3rFarVXp7e2ViYuLfRmdlbm7ONVxA2b6+vhIaGqrubZuamtSeGrUT + kef09PRIf3+/DA8Pq2BXVlZkdXVVDg8PVasu4f74canuc7FM49HzwMCAjIyMyPj4uExOThKRh0xNTcn0 + 9LQsLS3J2tqa+tvt/v6+PDw8fAwXfv36qWJF9WNjYzIzMyPz8/OysLBARB6yuLgoy8vLsr6+Lru7u3J6 + euoSLbiEC6+vr/L09CSXl5cOFxcXcn5+rpydnXk1nCPO9/r6Wm5vb+X+/l4eHx/l+flZXl5eHPAec+IX + cnd3Jzc3N3J1deUyqw7z4nxx7oB5MQ/mejvvd5kV5/jdr+3JyYkcHx/L0dGResUM8L7TD+ESkbfzkX8A + aDYV804BSLEAAAAASUVORK5CYII= + + + + + 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 + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA7NJREFUaEPtm0kvZGEU + hm3M8zzPhJjnGBfmeWZhShAWBDGEIIZE0MQsodHSId3KtLLwA/yyt70nubhdtejlR39JPdetiu/me845 + 99bmLTvg9fWf8Ho0f2CxWPDy8iJ/Ly8vcXp6iqOjI+zv72Nvb08Zdnd3sbOzI2xtbWFtbQ1zc3MYGxvD + 6uqq8Lfb6/H9DQWfn5/x9PSE+/t7XF1d4ezsDMfHxzg8PMTBwYFSGA2g+ObmJpaWljA6OoqWlhZkZGRg + amrKtixFHx8fRfL6+lo6yqqxYsvLy1hcXMTCwoKSzM/PY3Z2FuPj4+jt7UVZWRni4uIQHBwsXTfJUvT8 + /BwXFxc4OTnB9va2VGliYgLDw8Po7+9HX1+f0vT09KCzsxPV1dVIS0tDVFQU/P39RdgYaZF9eLjH+vo6 + NjY2pIuTk5MYGBiQxY2NjaitrUVNTY2SUM6AHc3Ly0NiYiLCw8Ph6+sLDw8Psyw7OzMzg+npaYyMjEiV + mpqaUF5ejpKSEhQVFaGgoEB5cnNzpavx8fEICQmBt7c33N3d8e3bprmzQ0NDGBwcRHd3t3SztLRULpCT + kyNkZ2crDfeYmZmJlJSUt/vVy8sLbm5u1mNMya6uLrS2tqKqqko6ypGwdWFVMWRjY2PfZF1dXbGysvIu + e3dnkfuTcHwrKipkdDkWti6qKv8ke3t7g/b2dnR0dMgI81790rJtbW0i/OVlLRYtq2VVRstqWS2rZZVF + y2pZLatllUXLalktq2WVRctqWS2rZZVFy2pZLatllUXLalktq2WVRcv+97KMBH01WU9PT2vZm5vfkuRk + dxsaGiQW91llk5OTERMTg6CgIJF1cXGRiOKb7K9f16ivr0dzczPq6uok3VZYWPjpZBm7TUpKQnR0NAIC + AiS3aCX78+elCDLsyBEuLi5Gfn6+ROSysrI+Bewqc4sJCQmIiIiAn5+fRPmcnZ3Nst+/nyA1NVWqw4Ws + UHp6uiwmPFcZ7pH7ZxqVI2yENNlVR0dHc3bxx48Lyecy4MhEJ6tjwAuojLFP7pvjGxoaKl1lGtXJyQkO + Dg4Sp3+TZVAzMDBQKsJ/DgsLk7xuZGSkwEKoCvfHseWe+VAyMsYcX4ra29ubZQkfTj4+PgIXsDpMYvNG + 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 + vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp + vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L + Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA + bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z + llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW + ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s + xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 + eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw + YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR + XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm + WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl + xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 + dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 + V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za + Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v + 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 + rkJggg== + + iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH diff --git a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.Designer.cs b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.Designer.cs index 61b666f..57b297b 100644 --- a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.Designer.cs +++ b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.Designer.cs @@ -30,6 +30,10 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterInforSystem)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.labelTitleDllAes128 = new SmartX.SmartLabel(); + this.labelTitleDllUserMgr = new SmartX.SmartLabel(); + this.labelAes128Ver = new SmartX.SmartLabel(); + this.labelUserMgrVer = new SmartX.SmartLabel(); this.buttonNext = new SmartX.SmartButton(); this.smartLabel1 = new SmartX.SmartLabel(); this.smartLabel3 = new SmartX.SmartLabel(); @@ -55,6 +59,10 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(46)))), ((int)(((byte)(46))))); this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.labelTitleDllAes128); + this.smartGroupBox1.Controls.Add(this.labelTitleDllUserMgr); + this.smartGroupBox1.Controls.Add(this.labelAes128Ver); + this.smartGroupBox1.Controls.Add(this.labelUserMgrVer); this.smartGroupBox1.Controls.Add(this.buttonNext); this.smartGroupBox1.Controls.Add(this.smartLabel1); this.smartGroupBox1.Controls.Add(this.smartLabel3); @@ -85,6 +93,94 @@ this.smartGroupBox1.TabIndex = 176; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // labelTitleDllAes128 + // + this.labelTitleDllAes128.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleDllAes128.BackPictureBox = null; + this.labelTitleDllAes128.BackPictureBox1 = null; + this.labelTitleDllAes128.BackPictureBox2 = null; + this.labelTitleDllAes128.BorderColor = System.Drawing.Color.Black; + this.labelTitleDllAes128.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleDllAes128.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelTitleDllAes128.ForeColor = System.Drawing.Color.White; + this.labelTitleDllAes128.InitVisible = true; + this.labelTitleDllAes128.LineSpacing = 0F; + this.labelTitleDllAes128.Location = new System.Drawing.Point(385, 327); + this.labelTitleDllAes128.Name = "labelTitleDllAes128"; + this.labelTitleDllAes128.Size = new System.Drawing.Size(150, 33); + this.labelTitleDllAes128.TabIndex = 200; + this.labelTitleDllAes128.Text = "DllAes128 Ver."; + this.labelTitleDllAes128.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleDllAes128.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleDllAes128.Visible = false; + this.labelTitleDllAes128.Wordwrap = false; + // + // labelTitleDllUserMgr + // + this.labelTitleDllUserMgr.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleDllUserMgr.BackPictureBox = null; + this.labelTitleDllUserMgr.BackPictureBox1 = null; + this.labelTitleDllUserMgr.BackPictureBox2 = null; + this.labelTitleDllUserMgr.BorderColor = System.Drawing.Color.Black; + this.labelTitleDllUserMgr.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleDllUserMgr.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelTitleDllUserMgr.ForeColor = System.Drawing.Color.White; + this.labelTitleDllUserMgr.InitVisible = true; + this.labelTitleDllUserMgr.LineSpacing = 0F; + this.labelTitleDllUserMgr.Location = new System.Drawing.Point(61, 327); + this.labelTitleDllUserMgr.Name = "labelTitleDllUserMgr"; + this.labelTitleDllUserMgr.Size = new System.Drawing.Size(150, 33); + this.labelTitleDllUserMgr.TabIndex = 199; + this.labelTitleDllUserMgr.Text = "DllUserMgr Ver."; + this.labelTitleDllUserMgr.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleDllUserMgr.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleDllUserMgr.Visible = false; + this.labelTitleDllUserMgr.Wordwrap = false; + // + // labelAes128Ver + // + this.labelAes128Ver.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelAes128Ver.BackPictureBox = null; + this.labelAes128Ver.BackPictureBox1 = null; + this.labelAes128Ver.BackPictureBox2 = null; + this.labelAes128Ver.BorderColor = System.Drawing.Color.Black; + this.labelAes128Ver.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelAes128Ver.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelAes128Ver.ForeColor = System.Drawing.Color.White; + this.labelAes128Ver.InitVisible = true; + this.labelAes128Ver.LineSpacing = 0F; + this.labelAes128Ver.Location = new System.Drawing.Point(541, 327); + this.labelAes128Ver.Name = "labelAes128Ver"; + this.labelAes128Ver.Size = new System.Drawing.Size(139, 33); + this.labelAes128Ver.TabIndex = 198; + this.labelAes128Ver.Text = "1.0"; + this.labelAes128Ver.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelAes128Ver.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelAes128Ver.Visible = false; + this.labelAes128Ver.Wordwrap = false; + // + // labelUserMgrVer + // + this.labelUserMgrVer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelUserMgrVer.BackPictureBox = null; + this.labelUserMgrVer.BackPictureBox1 = null; + this.labelUserMgrVer.BackPictureBox2 = null; + this.labelUserMgrVer.BorderColor = System.Drawing.Color.Black; + this.labelUserMgrVer.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelUserMgrVer.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelUserMgrVer.ForeColor = System.Drawing.Color.White; + this.labelUserMgrVer.InitVisible = true; + this.labelUserMgrVer.LineSpacing = 0F; + this.labelUserMgrVer.Location = new System.Drawing.Point(216, 327); + this.labelUserMgrVer.Name = "labelUserMgrVer"; + this.labelUserMgrVer.Size = new System.Drawing.Size(163, 33); + this.labelUserMgrVer.TabIndex = 197; + this.labelUserMgrVer.Text = "1.0"; + this.labelUserMgrVer.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelUserMgrVer.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelUserMgrVer.Visible = false; + this.labelUserMgrVer.Wordwrap = false; + // // buttonNext // this.buttonNext.BackPictureBox = null; @@ -126,7 +222,7 @@ this.smartLabel1.BackPictureBox2 = null; this.smartLabel1.BorderColor = System.Drawing.Color.Black; this.smartLabel1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel1.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel1.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel1.ForeColor = System.Drawing.Color.White; this.smartLabel1.InitVisible = true; this.smartLabel1.LineSpacing = 0F; @@ -147,7 +243,7 @@ this.smartLabel3.BackPictureBox2 = null; this.smartLabel3.BorderColor = System.Drawing.Color.Black; this.smartLabel3.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel3.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel3.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel3.ForeColor = System.Drawing.Color.White; this.smartLabel3.InitVisible = true; this.smartLabel3.LineSpacing = 0F; @@ -168,7 +264,7 @@ this.smartLabel4.BackPictureBox2 = null; this.smartLabel4.BorderColor = System.Drawing.Color.Black; this.smartLabel4.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel4.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel4.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel4.ForeColor = System.Drawing.Color.White; this.smartLabel4.InitVisible = true; this.smartLabel4.LineSpacing = 0F; @@ -255,7 +351,7 @@ this.labelSerialNo.BackPictureBox2 = null; this.labelSerialNo.BorderColor = System.Drawing.Color.Black; this.labelSerialNo.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelSerialNo.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelSerialNo.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.labelSerialNo.ForeColor = System.Drawing.Color.White; this.labelSerialNo.InitVisible = true; this.labelSerialNo.LineSpacing = 0F; @@ -263,7 +359,7 @@ this.labelSerialNo.Name = "labelSerialNo"; this.labelSerialNo.Size = new System.Drawing.Size(139, 33); this.labelSerialNo.TabIndex = 61; - this.labelSerialNo.Text = "18G0000"; + this.labelSerialNo.Text = "23G0000"; this.labelSerialNo.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; this.labelSerialNo.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelSerialNo.Wordwrap = false; @@ -278,7 +374,7 @@ this.smartLabel2.BackPictureBox2 = null; this.smartLabel2.BorderColor = System.Drawing.Color.Black; this.smartLabel2.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel2.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel2.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel2.ForeColor = System.Drawing.Color.White; this.smartLabel2.InitVisible = true; this.smartLabel2.LineSpacing = 0F; @@ -299,7 +395,7 @@ this.smartLabel34.BackPictureBox2 = null; this.smartLabel34.BorderColor = System.Drawing.Color.Black; this.smartLabel34.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel34.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel34.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel34.ForeColor = System.Drawing.Color.White; this.smartLabel34.InitVisible = true; this.smartLabel34.LineSpacing = 0F; @@ -320,7 +416,7 @@ this.smartLabel35.BackPictureBox2 = null; this.smartLabel35.BorderColor = System.Drawing.Color.Black; this.smartLabel35.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel35.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel35.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel35.ForeColor = System.Drawing.Color.White; this.smartLabel35.InitVisible = true; this.smartLabel35.LineSpacing = 0F; @@ -341,7 +437,7 @@ this.smartLabel36.BackPictureBox2 = null; this.smartLabel36.BorderColor = System.Drawing.Color.Black; this.smartLabel36.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel36.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel36.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel36.ForeColor = System.Drawing.Color.White; this.smartLabel36.InitVisible = true; this.smartLabel36.LineSpacing = 0F; @@ -362,7 +458,7 @@ this.labelModel.BackPictureBox2 = null; this.labelModel.BorderColor = System.Drawing.Color.Black; this.labelModel.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelModel.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelModel.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.labelModel.ForeColor = System.Drawing.Color.White; this.labelModel.InitVisible = true; this.labelModel.LineSpacing = 0F; @@ -383,11 +479,11 @@ this.labelDisplayVer.BackPictureBox2 = null; this.labelDisplayVer.BorderColor = System.Drawing.Color.Black; this.labelDisplayVer.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelDisplayVer.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelDisplayVer.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.labelDisplayVer.ForeColor = System.Drawing.Color.White; this.labelDisplayVer.InitVisible = true; this.labelDisplayVer.LineSpacing = 0F; - this.labelDisplayVer.Location = new System.Drawing.Point(542, 289); + this.labelDisplayVer.Location = new System.Drawing.Point(542, 288); this.labelDisplayVer.Name = "labelDisplayVer"; this.labelDisplayVer.Size = new System.Drawing.Size(139, 33); this.labelDisplayVer.TabIndex = 55; @@ -404,11 +500,11 @@ this.labelControlVer.BackPictureBox2 = null; this.labelControlVer.BorderColor = System.Drawing.Color.Black; this.labelControlVer.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelControlVer.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelControlVer.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.labelControlVer.ForeColor = System.Drawing.Color.White; this.labelControlVer.InitVisible = true; this.labelControlVer.LineSpacing = 0F; - this.labelControlVer.Location = new System.Drawing.Point(217, 289); + this.labelControlVer.Location = new System.Drawing.Point(217, 288); this.labelControlVer.Name = "labelControlVer"; this.labelControlVer.Size = new System.Drawing.Size(163, 33); this.labelControlVer.TabIndex = 54; @@ -492,5 +588,9 @@ public SmartX.SmartLabel smartLabel4; public SmartX.SmartLabel smartLabel5; private SmartX.SmartButton buttonNext; + private SmartX.SmartLabel labelTitleDllAes128; + private SmartX.SmartLabel labelTitleDllUserMgr; + public SmartX.SmartLabel labelAes128Ver; + public SmartX.SmartLabel labelUserMgrVer; } } diff --git a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs index 90f4da2..7caf617 100644 --- a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs +++ b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs @@ -11,6 +11,8 @@ using ITC81DB_0H.DialogForms; using ITC81DB_0H.Forms; using ITC81DB_2H_ImageDll; using ITC81DB_2H.Datastore; +using ITC81DB_0H.Part11_UserManager; +using ITC81DB_0H.Part11_Encryption; namespace ITC81DB_0H.Controls { @@ -66,10 +68,25 @@ namespace ITC81DB_0H.Controls } private void DefaultSetting() { + this.labelUserMgrVer.Text = ""; + this.labelAes128Ver.Text = ""; this.labelSerialNo.Text = this.ParentForm.ParentForm.SystemConfig1.SerialNumber; this.labelDisplayVer.Text = FormMain.DisplayVersion; } + public void UpdatePart11UserManagerVersionDisplay(string ver) + { + this.labelUserMgrVer.Text = ver; + this.labelTitleDllUserMgr.Visible = true; + this.labelUserMgrVer.Visible = true; + } + public void UpdatePart11AesEncryptionVersionDisplay(string ver) + { + this.labelAes128Ver.Text = ver; + this.labelTitleDllAes128.Visible = true; + this.labelAes128Ver.Visible = true; + } + public void UpdateMainBoardVersionDisplay(string version) { if (version.Length < 8) @@ -95,6 +112,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SetDisplayMode(Define.E_DisplayMode.Menu); this.ParentForm.DisplayTitleRoot(this.ParentForm.ParentForm.CurrentSystemStatus); + if (this.ParentForm.ParentForm.SystemConfig1.IsLogin == true) + UserManager.UserManager_GetVersion(); + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) + Encryption.AesEncryption_GetVersion(); + this.smartKeyboard.Hide(); this.textBoxSerialNo.Text = this.labelSerialNo.Text; diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHelp.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHelp.cs index 107beb6..d487dfc 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHelp.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHelp.cs @@ -55,9 +55,9 @@ namespace ITC81DB_0H.Controls this.buttonLogHistory.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryDisable)); this.buttonLogHistory.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryDown)); this.buttonLogHistory.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryUp)); - this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDisable)); - this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDown)); - this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersUp)); + this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersDisable)); + this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersDown)); + this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersUp)); } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) { @@ -67,9 +67,9 @@ namespace ITC81DB_0H.Controls this.buttonLogHistory.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogHistoryDisable)); this.buttonLogHistory.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogHistoryDown)); this.buttonLogHistory.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogHistoryUp)); - this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDisable)); - this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDown)); - this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersUp)); + this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogOthersDisable)); + this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogOthersDown)); + this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogOthersUp)); } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Czech) { @@ -82,9 +82,9 @@ namespace ITC81DB_0H.Controls this.buttonLogHistory.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogHistoryDisable)); this.buttonLogHistory.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogHistoryDown)); this.buttonLogHistory.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogHistoryUp)); - this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDisable)); - this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDown)); - this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersUp)); + this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogOthersDisable)); + this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogOthersDown)); + this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogOthersUp)); } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) { @@ -94,9 +94,9 @@ namespace ITC81DB_0H.Controls this.buttonLogHistory.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogHistoryDisable)); this.buttonLogHistory.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogHistoryDown)); this.buttonLogHistory.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogHistoryUp)); - this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDisable)); - this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDown)); - this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersUp)); + this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogOthersDisable)); + this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogOthersDown)); + this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogOthersUp)); } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) { @@ -106,9 +106,9 @@ namespace ITC81DB_0H.Controls this.buttonLogHistory.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryDisable)); this.buttonLogHistory.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryDown)); this.buttonLogHistory.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryUp)); - this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDisable)); - this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDown)); - this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersUp)); + this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersDisable)); + this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersDown)); + this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersUp)); } else { diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.cs index 8d9ea77..ed0d479 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.cs @@ -38,6 +38,8 @@ namespace ITC81DB_0H.Controls private List ListLoginID; private List ListEvent; private List ListDetail; + private List ListBefore; + private List ListAfter; #endregion #region Constructor @@ -103,7 +105,7 @@ namespace ITC81DB_0H.Controls { this.labelTitleFileList.Text = "파일 목록"; this.labelTitleFileName.Text = "파일 이름"; - this.labelTitleFind.Text = "Search line"; + this.labelTitleFind.Text = "데이터 검색(Line)"; } } private void DefaultSetting() @@ -119,6 +121,8 @@ namespace ITC81DB_0H.Controls this.ListLoginID = new List(); this.ListEvent = new List(); this.ListDetail = new List(); + this.ListBefore = new List(); + this.ListAfter = new List(); this.CollectionListBox = new Collection(); this.CollectionListBox.Clear(); @@ -126,6 +130,8 @@ namespace ITC81DB_0H.Controls this.CollectionListBox.Add(this.listBoxLoginID); this.CollectionListBox.Add(this.listBoxEvent); this.CollectionListBox.Add(this.listBoxDetail); + this.CollectionListBox.Add(this.listBoxBefore); + this.CollectionListBox.Add(this.listBoxAfter); } private void UpdateInitialStatus() { @@ -263,6 +269,17 @@ namespace ITC81DB_0H.Controls } } + private void SearchLineEnabled(bool bValue) + { + if (bValue == false) + this.labelFind.BackColor = Color.Gray; + else + this.labelFind.BackColor = Color.White; + + this.labelFind.Enabled = bValue; + this.buttonFind.Enabled = bValue; + } + public void ClearData() { this.CollectionData.Clear(); @@ -271,6 +288,8 @@ namespace ITC81DB_0H.Controls this.ListLoginID.Clear(); this.ListEvent.Clear(); this.ListDetail.Clear(); + this.ListBefore.Clear(); + this.ListAfter.Clear(); } public void ClearListBox() { @@ -357,6 +376,8 @@ namespace ITC81DB_0H.Controls this.ListLoginID.Add(this.CollectionData[i][2]); this.ListEvent.Add(this.CollectionData[i][3]); this.ListDetail.Add(this.CollectionData[i][4]); + this.ListBefore.Add(this.CollectionData[i][5]); + this.ListAfter.Add(this.CollectionData[i][6]); } } private void UpdateListBoxDataDisplay() @@ -367,6 +388,8 @@ namespace ITC81DB_0H.Controls this.listBoxLoginID.AddItem(this.ListLoginID[i]); this.listBoxEvent.AddItem(this.ListEvent[i]); this.listBoxDetail.AddItem(this.ListDetail[i]); + this.listBoxBefore.AddItem(this.ListBefore[i]); + this.listBoxAfter.AddItem(this.ListAfter[i]); } } @@ -387,8 +410,8 @@ namespace ITC81DB_0H.Controls bool bValue = this.smartFile1.ReadStringAllBuffer(); if (bValue == false) { - this.smartFile1.Close(); - this.IsFileOpen = false; + this.FileClose(); + return; } @@ -409,14 +432,18 @@ namespace ITC81DB_0H.Controls this.TotalCount = (int)lineNum - 1; // 맨 첫 줄 제외 this.CurrentCount = this.TotalCount; - this.labelFind.Text = this.CurrentCount.ToString(); + if (this.TotalCount < ListBoxLineCount) + this.SearchLineEnabled(false); + else + this.SearchLineEnabled(true); + this.labelFind.Text = this.CurrentCount.ToString(); + this.UpdateData(startIndex, endIndex); + // File Name string[] data = fullFilePath.Split('\\'); this.labelFileName.Text = data[data.Length - 1]; - this.UpdateData(startIndex, endIndex); - this.ParentForm.SplashFinish(); this.Enabled = true; @@ -426,8 +453,7 @@ namespace ITC81DB_0H.Controls DialogFormMessage myMsg = new DialogFormMessage(16, this.ParentForm.ParentForm.SystemConfig1.Language); myMsg.ShowDialog(); this.ParentForm.SplashFinish(); - this.smartFile1.Close(); - this.IsFileOpen = false; + this.FileClose(); this.Enabled = true; } } @@ -529,6 +555,50 @@ namespace ITC81DB_0H.Controls else { this.labelFind.Text = myKeyPad.StringValue; + + if (this.labelFind.Text == "" || this.labelFind.Text == null || this.listBoxTime.ItemCount == 0) + return; + + int startIndex = 0, endIndex = 0; + int index = int.Parse(this.labelFind.Text); + + try + { + this.ClearData(); + this.ClearListBox(); + + if (this.TotalCount > ListBoxLineCount) + { + if (index - ListBoxLineCount < 0) + { + startIndex = 0 + 1; + endIndex = ListBoxLineCount + 1; + + this.CurrentCount = ListBoxLineCount; + } + else + { + startIndex = index - ListBoxLineCount; + endIndex = index; + + this.CurrentCount = index; + } + } + else + { + startIndex = 0 + 1; + endIndex = this.TotalCount + 1; + + this.CurrentCount = this.TotalCount; + } + + this.UpdateData(startIndex, endIndex); + } + catch + { + DialogFormMessage myMsg = new DialogFormMessage(16, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } } } } @@ -582,7 +652,6 @@ namespace ITC81DB_0H.Controls private void buttonBackup_Click(object sender, EventArgs e) { this.FileClose(); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.DataBackup, "History"); this.ParentForm.Backup(Define.E_DataType.History, this.treeView); } @@ -594,6 +663,13 @@ namespace ITC81DB_0H.Controls { this.ListBoxScrollDown(ListBoxLineCount); } + + private void listBox_Click(object sender, EventArgs e) + { + SmartX.SmartListBox listBox = sender as SmartX.SmartListBox; + + listBox.SelectItemIndex = -1; + } #endregion } } diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.designer.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.designer.cs index 8ed0d31..02c36ac 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.designer.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.designer.cs @@ -30,6 +30,10 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterLogHistory)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.listBoxAfter = new SmartX.SmartListBox(); + this.smartLabel6 = new SmartX.SmartLabel(); + this.listBoxBefore = new SmartX.SmartListBox(); + this.smartLabel5 = new SmartX.SmartLabel(); this.listBoxLoginID = new SmartX.SmartListBox(); this.smartLabel1 = new SmartX.SmartLabel(); this.labelTitleFind = new SmartX.SmartLabel(); @@ -62,6 +66,10 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(46)))), ((int)(((byte)(46))))); this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.listBoxAfter); + this.smartGroupBox1.Controls.Add(this.smartLabel6); + this.smartGroupBox1.Controls.Add(this.listBoxBefore); + this.smartGroupBox1.Controls.Add(this.smartLabel5); this.smartGroupBox1.Controls.Add(this.listBoxLoginID); this.smartGroupBox1.Controls.Add(this.smartLabel1); this.smartGroupBox1.Controls.Add(this.labelTitleFind); @@ -98,6 +106,118 @@ this.smartGroupBox1.TabIndex = 173; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // listBoxAfter + // + this.listBoxAfter.BackColor = System.Drawing.Color.White; + this.listBoxAfter.BackPictureBox = null; + this.listBoxAfter.BackPictureBox1 = null; + this.listBoxAfter.BackPictureBox2 = null; + this.listBoxAfter.ColumnAlign = SmartX.SmartListBox.COLUMNALIGNS.CENTER; + this.listBoxAfter.ColumnDelimiter = '\0'; + this.listBoxAfter.ColumnOffsets = null; + this.listBoxAfter.Enabled = false; + this.listBoxAfter.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular); + this.listBoxAfter.FontColor = System.Drawing.Color.Black; + this.listBoxAfter.InitVisible = true; + this.listBoxAfter.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; + this.listBoxAfter.ItemOffsetGap = 8; + this.listBoxAfter.ItemOffsetX = 5; + this.listBoxAfter.ItemOffsetY = 0; + this.listBoxAfter.Location = new System.Drawing.Point(596, 141); + this.listBoxAfter.MouseMoveEventSpace = 3; + this.listBoxAfter.MouseMoveSpace = 10; + this.listBoxAfter.Name = "listBoxAfter"; + this.listBoxAfter.OutLineColor = System.Drawing.SystemColors.ControlText; + this.listBoxAfter.SelectColor = System.Drawing.Color.Blue; + this.listBoxAfter.SelectFilled = true; + this.listBoxAfter.SelectFontColor = System.Drawing.Color.DarkBlue; + this.listBoxAfter.SelectItemIndex = -1; + this.listBoxAfter.SeparationlineColor1 = System.Drawing.Color.Gray; + this.listBoxAfter.SeparationlineColor2 = System.Drawing.Color.LightGray; + this.listBoxAfter.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; + this.listBoxAfter.SeparationlineVisibleBottom = true; + this.listBoxAfter.SeparationlineVisibleTop = true; + this.listBoxAfter.Size = new System.Drawing.Size(50, 318); + this.listBoxAfter.TabIndex = 257; + this.listBoxAfter.Text = "smartListBox2"; + // + // smartLabel6 + // + this.smartLabel6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.smartLabel6.BackPictureBox = null; + this.smartLabel6.BackPictureBox1 = null; + this.smartLabel6.BackPictureBox2 = null; + this.smartLabel6.BorderColor = System.Drawing.Color.Black; + this.smartLabel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.smartLabel6.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.smartLabel6.ForeColor = System.Drawing.Color.White; + this.smartLabel6.InitVisible = true; + this.smartLabel6.LineSpacing = 0F; + this.smartLabel6.Location = new System.Drawing.Point(596, 118); + this.smartLabel6.Name = "smartLabel6"; + this.smartLabel6.Size = new System.Drawing.Size(50, 23); + this.smartLabel6.TabIndex = 256; + this.smartLabel6.Text = "After"; + this.smartLabel6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.smartLabel6.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.smartLabel6.Wordwrap = false; + // + // listBoxBefore + // + this.listBoxBefore.BackColor = System.Drawing.Color.White; + this.listBoxBefore.BackPictureBox = null; + this.listBoxBefore.BackPictureBox1 = null; + this.listBoxBefore.BackPictureBox2 = null; + this.listBoxBefore.ColumnAlign = SmartX.SmartListBox.COLUMNALIGNS.CENTER; + this.listBoxBefore.ColumnDelimiter = '\0'; + this.listBoxBefore.ColumnOffsets = null; + this.listBoxBefore.Enabled = false; + this.listBoxBefore.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular); + this.listBoxBefore.FontColor = System.Drawing.Color.Black; + this.listBoxBefore.InitVisible = true; + this.listBoxBefore.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; + this.listBoxBefore.ItemOffsetGap = 8; + this.listBoxBefore.ItemOffsetX = 5; + this.listBoxBefore.ItemOffsetY = 0; + this.listBoxBefore.Location = new System.Drawing.Point(545, 141); + this.listBoxBefore.MouseMoveEventSpace = 3; + this.listBoxBefore.MouseMoveSpace = 10; + this.listBoxBefore.Name = "listBoxBefore"; + this.listBoxBefore.OutLineColor = System.Drawing.SystemColors.ControlText; + this.listBoxBefore.SelectColor = System.Drawing.Color.Blue; + this.listBoxBefore.SelectFilled = true; + this.listBoxBefore.SelectFontColor = System.Drawing.Color.DarkBlue; + this.listBoxBefore.SelectItemIndex = -1; + this.listBoxBefore.SeparationlineColor1 = System.Drawing.Color.Gray; + this.listBoxBefore.SeparationlineColor2 = System.Drawing.Color.LightGray; + this.listBoxBefore.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; + this.listBoxBefore.SeparationlineVisibleBottom = true; + this.listBoxBefore.SeparationlineVisibleTop = true; + this.listBoxBefore.Size = new System.Drawing.Size(50, 318); + this.listBoxBefore.TabIndex = 255; + this.listBoxBefore.Text = "smartListBox1"; + // + // smartLabel5 + // + this.smartLabel5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.smartLabel5.BackPictureBox = null; + this.smartLabel5.BackPictureBox1 = null; + this.smartLabel5.BackPictureBox2 = null; + this.smartLabel5.BorderColor = System.Drawing.Color.Black; + this.smartLabel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.smartLabel5.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.smartLabel5.ForeColor = System.Drawing.Color.White; + this.smartLabel5.InitVisible = true; + this.smartLabel5.LineSpacing = 0F; + this.smartLabel5.Location = new System.Drawing.Point(545, 118); + this.smartLabel5.Name = "smartLabel5"; + this.smartLabel5.Size = new System.Drawing.Size(50, 23); + this.smartLabel5.TabIndex = 254; + this.smartLabel5.Text = "Before"; + this.smartLabel5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.smartLabel5.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.smartLabel5.Wordwrap = false; + // // listBoxLoginID // this.listBoxLoginID.BackColor = System.Drawing.Color.White; @@ -115,7 +235,7 @@ this.listBoxLoginID.ItemOffsetGap = 8; this.listBoxLoginID.ItemOffsetX = 2; this.listBoxLoginID.ItemOffsetY = 0; - this.listBoxLoginID.Location = new System.Drawing.Point(301, 141); + this.listBoxLoginID.Location = new System.Drawing.Point(267, 141); this.listBoxLoginID.MouseMoveEventSpace = 3; this.listBoxLoginID.MouseMoveSpace = 10; this.listBoxLoginID.Name = "listBoxLoginID"; @@ -129,9 +249,10 @@ this.listBoxLoginID.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxLoginID.SeparationlineVisibleBottom = true; this.listBoxLoginID.SeparationlineVisibleTop = true; - this.listBoxLoginID.Size = new System.Drawing.Size(68, 318); + this.listBoxLoginID.Size = new System.Drawing.Size(60, 318); this.listBoxLoginID.TabIndex = 253; this.listBoxLoginID.Text = "smartListBox1"; + this.listBoxLoginID.Click += new System.EventHandler(this.listBox_Click); // // smartLabel1 // @@ -145,11 +266,11 @@ this.smartLabel1.ForeColor = System.Drawing.Color.White; this.smartLabel1.InitVisible = true; this.smartLabel1.LineSpacing = 0F; - this.smartLabel1.Location = new System.Drawing.Point(301, 118); + this.smartLabel1.Location = new System.Drawing.Point(267, 118); this.smartLabel1.Name = "smartLabel1"; - this.smartLabel1.Size = new System.Drawing.Size(68, 23); + this.smartLabel1.Size = new System.Drawing.Size(60, 23); this.smartLabel1.TabIndex = 252; - this.smartLabel1.Text = "Login ID"; + this.smartLabel1.Text = "ID"; this.smartLabel1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; this.smartLabel1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.smartLabel1.Wordwrap = false; @@ -165,9 +286,9 @@ this.labelTitleFind.ForeColor = System.Drawing.Color.White; this.labelTitleFind.InitVisible = true; this.labelTitleFind.LineSpacing = 0F; - this.labelTitleFind.Location = new System.Drawing.Point(240, 78); + this.labelTitleFind.Location = new System.Drawing.Point(214, 78); this.labelTitleFind.Name = "labelTitleFind"; - this.labelTitleFind.Size = new System.Drawing.Size(173, 34); + this.labelTitleFind.Size = new System.Drawing.Size(204, 34); this.labelTitleFind.TabIndex = 251; this.labelTitleFind.Text = "데이터 찾기(Line)"; this.labelTitleFind.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -186,7 +307,7 @@ this.labelFind.ForeColor = System.Drawing.Color.Black; this.labelFind.InitVisible = true; this.labelFind.LineSpacing = 0F; - this.labelFind.Location = new System.Drawing.Point(419, 77); + this.labelFind.Location = new System.Drawing.Point(424, 77); this.labelFind.Name = "labelFind"; this.labelFind.Size = new System.Drawing.Size(175, 35); this.labelFind.TabIndex = 250; @@ -207,7 +328,7 @@ this.buttonFind.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.DownImage"))); this.buttonFind.GroupID = 0; this.buttonFind.InitVisible = true; - this.buttonFind.Location = new System.Drawing.Point(600, 77); + this.buttonFind.Location = new System.Drawing.Point(605, 77); this.buttonFind.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonFind.Name = "buttonFind"; this.buttonFind.NestedClickEventPrevent = false; @@ -224,6 +345,7 @@ this.buttonFind.TextLocation = new System.Drawing.Point(0, 0); this.buttonFind.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; this.buttonFind.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.UpImage"))); + this.buttonFind.Visible = false; this.buttonFind.Click += new System.EventHandler(this.buttonFind_Click); // // buttonRead @@ -238,7 +360,7 @@ this.buttonRead.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonRead.DownImage"))); this.buttonRead.GroupID = 0; this.buttonRead.InitVisible = true; - this.buttonRead.Location = new System.Drawing.Point(600, 37); + this.buttonRead.Location = new System.Drawing.Point(605, 37); this.buttonRead.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonRead.Name = "buttonRead"; this.buttonRead.NestedClickEventPrevent = false; @@ -274,7 +396,7 @@ this.listBoxDetail.ItemOffsetGap = 8; this.listBoxDetail.ItemOffsetX = 2; this.listBoxDetail.ItemOffsetY = 0; - this.listBoxDetail.Location = new System.Drawing.Point(489, 141); + this.listBoxDetail.Location = new System.Drawing.Point(419, 141); this.listBoxDetail.MouseMoveEventSpace = 3; this.listBoxDetail.MouseMoveSpace = 10; this.listBoxDetail.Name = "listBoxDetail"; @@ -288,9 +410,10 @@ this.listBoxDetail.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxDetail.SeparationlineVisibleBottom = true; this.listBoxDetail.SeparationlineVisibleTop = true; - this.listBoxDetail.Size = new System.Drawing.Size(152, 318); + this.listBoxDetail.Size = new System.Drawing.Size(125, 318); this.listBoxDetail.TabIndex = 243; this.listBoxDetail.Text = "smartListBox2"; + this.listBoxDetail.Click += new System.EventHandler(this.listBox_Click); // // listBoxEvent // @@ -309,7 +432,7 @@ this.listBoxEvent.ItemOffsetGap = 8; this.listBoxEvent.ItemOffsetX = 2; this.listBoxEvent.ItemOffsetY = 0; - this.listBoxEvent.Location = new System.Drawing.Point(370, 141); + this.listBoxEvent.Location = new System.Drawing.Point(328, 141); this.listBoxEvent.MouseMoveEventSpace = 3; this.listBoxEvent.MouseMoveSpace = 10; this.listBoxEvent.Name = "listBoxEvent"; @@ -323,9 +446,10 @@ this.listBoxEvent.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxEvent.SeparationlineVisibleBottom = true; this.listBoxEvent.SeparationlineVisibleTop = true; - this.listBoxEvent.Size = new System.Drawing.Size(118, 318); + this.listBoxEvent.Size = new System.Drawing.Size(90, 318); this.listBoxEvent.TabIndex = 242; this.listBoxEvent.Text = "smartListBox1"; + this.listBoxEvent.Click += new System.EventHandler(this.listBox_Click); // // listBoxTime // @@ -344,7 +468,7 @@ this.listBoxTime.ItemOffsetGap = 8; this.listBoxTime.ItemOffsetX = 2; this.listBoxTime.ItemOffsetY = 0; - this.listBoxTime.Location = new System.Drawing.Point(240, 141); + this.listBoxTime.Location = new System.Drawing.Point(214, 141); this.listBoxTime.MouseMoveEventSpace = 3; this.listBoxTime.MouseMoveSpace = 10; this.listBoxTime.Name = "listBoxTime"; @@ -358,16 +482,17 @@ this.listBoxTime.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxTime.SeparationlineVisibleBottom = true; this.listBoxTime.SeparationlineVisibleTop = true; - this.listBoxTime.Size = new System.Drawing.Size(60, 318); + this.listBoxTime.Size = new System.Drawing.Size(52, 318); this.listBoxTime.TabIndex = 241; this.listBoxTime.Text = "smartListBox1"; + this.listBoxTime.Click += new System.EventHandler(this.listBox_Click); // // treeView // this.treeView.CheckBoxes = true; this.treeView.Location = new System.Drawing.Point(8, 37); this.treeView.Name = "treeView"; - this.treeView.Size = new System.Drawing.Size(226, 422); + this.treeView.Size = new System.Drawing.Size(200, 422); this.treeView.TabIndex = 240; this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect); // @@ -382,7 +507,7 @@ this.labelTotalIndex.ForeColor = System.Drawing.Color.White; this.labelTotalIndex.InitVisible = true; this.labelTotalIndex.LineSpacing = 0F; - this.labelTotalIndex.Location = new System.Drawing.Point(646, 273); + this.labelTotalIndex.Location = new System.Drawing.Point(652, 273); this.labelTotalIndex.Name = "labelTotalIndex"; this.labelTotalIndex.Size = new System.Drawing.Size(50, 21); this.labelTotalIndex.TabIndex = 239; @@ -402,7 +527,7 @@ this.labelCurrentIndex.ForeColor = System.Drawing.Color.White; this.labelCurrentIndex.InitVisible = true; this.labelCurrentIndex.LineSpacing = 0F; - this.labelCurrentIndex.Location = new System.Drawing.Point(646, 238); + this.labelCurrentIndex.Location = new System.Drawing.Point(652, 238); this.labelCurrentIndex.Name = "labelCurrentIndex"; this.labelCurrentIndex.Size = new System.Drawing.Size(50, 21); this.labelCurrentIndex.TabIndex = 238; @@ -420,7 +545,7 @@ this.smartSeparatorLine1.Line2Visible = true; this.smartSeparatorLine1.Line2Width = 1F; this.smartSeparatorLine1.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal; - this.smartSeparatorLine1.Location = new System.Drawing.Point(646, 265); + this.smartSeparatorLine1.Location = new System.Drawing.Point(652, 265); this.smartSeparatorLine1.Name = "smartSeparatorLine1"; this.smartSeparatorLine1.Size = new System.Drawing.Size(50, 2); this.smartSeparatorLine1.TabIndex = 237; @@ -438,9 +563,9 @@ this.smartLabel4.ForeColor = System.Drawing.Color.White; this.smartLabel4.InitVisible = true; this.smartLabel4.LineSpacing = 0F; - this.smartLabel4.Location = new System.Drawing.Point(489, 118); + this.smartLabel4.Location = new System.Drawing.Point(419, 118); this.smartLabel4.Name = "smartLabel4"; - this.smartLabel4.Size = new System.Drawing.Size(152, 23); + this.smartLabel4.Size = new System.Drawing.Size(125, 23); this.smartLabel4.TabIndex = 231; this.smartLabel4.Text = "Detail"; this.smartLabel4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -459,9 +584,9 @@ this.smartLabel3.ForeColor = System.Drawing.Color.White; this.smartLabel3.InitVisible = true; this.smartLabel3.LineSpacing = 0F; - this.smartLabel3.Location = new System.Drawing.Point(370, 118); + this.smartLabel3.Location = new System.Drawing.Point(328, 118); this.smartLabel3.Name = "smartLabel3"; - this.smartLabel3.Size = new System.Drawing.Size(118, 23); + this.smartLabel3.Size = new System.Drawing.Size(90, 23); this.smartLabel3.TabIndex = 228; this.smartLabel3.Text = "Event"; this.smartLabel3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -480,9 +605,9 @@ this.smartLabel2.ForeColor = System.Drawing.Color.White; this.smartLabel2.InitVisible = true; this.smartLabel2.LineSpacing = 0F; - this.smartLabel2.Location = new System.Drawing.Point(240, 118); + this.smartLabel2.Location = new System.Drawing.Point(214, 118); this.smartLabel2.Name = "smartLabel2"; - this.smartLabel2.Size = new System.Drawing.Size(60, 23); + this.smartLabel2.Size = new System.Drawing.Size(52, 23); this.smartLabel2.TabIndex = 227; this.smartLabel2.Text = "Time"; this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -502,7 +627,7 @@ this.buttonDown.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonDown.GroupID = 0; this.buttonDown.InitVisible = true; - this.buttonDown.Location = new System.Drawing.Point(646, 310); + this.buttonDown.Location = new System.Drawing.Point(652, 310); this.buttonDown.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonDown.Name = "buttonDown"; this.buttonDown.NestedClickEventPrevent = false; @@ -535,7 +660,7 @@ this.buttonUp.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonUp.GroupID = 0; this.buttonUp.InitVisible = true; - this.buttonUp.Location = new System.Drawing.Point(646, 73); + this.buttonUp.Location = new System.Drawing.Point(652, 73); this.buttonUp.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonUp.Name = "buttonUp"; this.buttonUp.NestedClickEventPrevent = false; @@ -567,9 +692,9 @@ this.labelFileName.ForeColor = System.Drawing.Color.White; this.labelFileName.InitVisible = true; this.labelFileName.LineSpacing = 0F; - this.labelFileName.Location = new System.Drawing.Point(240, 37); + this.labelFileName.Location = new System.Drawing.Point(214, 37); this.labelFileName.Name = "labelFileName"; - this.labelFileName.Size = new System.Drawing.Size(354, 35); + this.labelFileName.Size = new System.Drawing.Size(385, 35); this.labelFileName.TabIndex = 224; this.labelFileName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; this.labelFileName.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; @@ -586,9 +711,9 @@ this.labelTitleFileName.ForeColor = System.Drawing.Color.White; this.labelTitleFileName.InitVisible = true; this.labelTitleFileName.LineSpacing = 0F; - this.labelTitleFileName.Location = new System.Drawing.Point(240, 12); + this.labelTitleFileName.Location = new System.Drawing.Point(214, 12); this.labelTitleFileName.Name = "labelTitleFileName"; - this.labelTitleFileName.Size = new System.Drawing.Size(396, 21); + this.labelTitleFileName.Size = new System.Drawing.Size(432, 21); this.labelTitleFileName.TabIndex = 223; this.labelTitleFileName.Text = "파일 이름"; this.labelTitleFileName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -628,7 +753,7 @@ this.labelCount.LineSpacing = 0F; this.labelCount.Location = new System.Drawing.Point(148, 12); this.labelCount.Name = "labelCount"; - this.labelCount.Size = new System.Drawing.Size(86, 21); + this.labelCount.Size = new System.Drawing.Size(60, 21); this.labelCount.TabIndex = 219; this.labelCount.Text = "0"; this.labelCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -648,7 +773,7 @@ this.buttonBackup.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold); this.buttonBackup.GroupID = 0; this.buttonBackup.InitVisible = true; - this.buttonBackup.Location = new System.Drawing.Point(646, 12); + this.buttonBackup.Location = new System.Drawing.Point(652, 12); this.buttonBackup.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonBackup.Name = "buttonBackup"; this.buttonBackup.NestedClickEventPrevent = false; @@ -711,6 +836,10 @@ private SmartX.SmartListBox listBoxLoginID; private SmartX.SmartLabel smartLabel1; private System.Windows.Forms.TreeView treeView; + private SmartX.SmartListBox listBoxAfter; + private SmartX.SmartLabel smartLabel6; + private SmartX.SmartListBox listBoxBefore; + private SmartX.SmartLabel smartLabel5; } } diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.cs index 95c3ea3..e30d713 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.cs @@ -33,8 +33,10 @@ namespace ITC81DB_0H.Controls private List ListInspectionFile; private Collection CollectionListBox; private Collection CollectionData; // 파일에서 읽은 데이터 + private Collection CollectionStringData; private List ListTime; + private List ListNo; private List ListGrade; private List ListUnder; private List ListPass; @@ -105,7 +107,7 @@ namespace ITC81DB_0H.Controls { this.labelTitleFileList.Text = "파일 목록"; this.labelTitleFileName.Text = "파일 이름"; - this.labelTitleFind.Text = "Search line"; + this.labelTitleFind.Text = "데이터 검색(Line)"; } } private void DefaultSetting() @@ -118,15 +120,18 @@ namespace ITC81DB_0H.Controls this.CollectionData = new Collection(); this.ListTime = new List(); + this.ListNo = new List(); this.ListGrade = new List(); this.ListUnder = new List(); this.ListPass = new List(); this.ListOver = new List(); this.ListWeight = new List(); + this.CollectionStringData = new Collection(); this.CollectionListBox = new Collection(); this.CollectionListBox.Clear(); this.CollectionListBox.Add(this.listBoxTime); + this.CollectionListBox.Add(this.listBoxNo); this.CollectionListBox.Add(this.listBoxGrade); this.CollectionListBox.Add(this.listBoxUnder); this.CollectionListBox.Add(this.listBoxPass); @@ -223,7 +228,7 @@ namespace ITC81DB_0H.Controls this.labelCount.Text = fileCount.ToString(); } - + /// /// 모든 자식 노드를 가져온다. /// @@ -287,11 +292,23 @@ namespace ITC81DB_0H.Controls } } + private void SearchLineEnabled(bool bValue) + { + if (bValue == false) + this.labelFind.BackColor = Color.Gray; + else + this.labelFind.BackColor = Color.White; + + this.labelFind.Enabled = bValue; + this.buttonFind.Enabled = bValue; + } + public void ClearData() { this.CollectionData.Clear(); this.ListTime.Clear(); + this.ListNo.Clear(); this.ListGrade.Clear(); this.ListUnder.Clear(); this.ListPass.Clear(); @@ -369,12 +386,18 @@ namespace ITC81DB_0H.Controls this.UpdateListBoxDataDisplay(); this.UpdateListBoxCount(); } + private void UpdateListBoxCount() + { + this.labelTotalIndex.Text = this.TotalCount.ToString(); + this.labelCurrentIndex.Text = this.CurrentCount.ToString(); + } private void UpdateListData() { // List Item Add for (int i = 0; i < this.CollectionData.Count; i++) { this.ListTime.Add(this.CollectionData[i][1]); + this.ListNo.Add(this.CollectionData[i][2]); this.ListGrade.Add(this.CollectionData[i][10]); this.ListUnder.Add(this.CollectionData[i][5]); this.ListPass.Add(this.CollectionData[i][6]); @@ -382,16 +405,12 @@ namespace ITC81DB_0H.Controls this.ListWeight.Add(this.CollectionData[i][9]); } } - private void UpdateListBoxCount() - { - this.labelTotalIndex.Text = this.TotalCount.ToString(); - this.labelCurrentIndex.Text = this.CurrentCount.ToString(); - } private void UpdateListBoxDataDisplay() { for (int i = 0; i < this.ListTime.Count; i++) { this.listBoxTime.AddItem(this.ListTime[i]); + this.listBoxNo.AddItem(this.ListNo[i]); this.listBoxGrade.AddItem(this.ListGrade[i]); this.listBoxUnder.AddItem(this.ListUnder[i]); this.listBoxPass.AddItem(this.ListPass[i]); @@ -441,6 +460,11 @@ namespace ITC81DB_0H.Controls this.TotalCount = (int)lineNum - 1; // 맨 첫 줄 제외 this.CurrentCount = this.TotalCount; + if (this.TotalCount < ListBoxLineCount) + this.SearchLineEnabled(false); + else + this.SearchLineEnabled(true); + this.labelFind.Text = this.CurrentCount.ToString(); this.UpdateData(startIndex, endIndex); @@ -517,22 +541,7 @@ namespace ITC81DB_0H.Controls //this.labelFileName.Text = e.Node.Text; this.SelectedNodeFullPath = this.treeView.SelectedNode.FullPath; } - //else - //{ - // var nodes = e.Node; - // foreach (TreeNode node in nodes.Nodes) - // { - // List childNodes = new List(); - // this.GetAllChildNodes(node, ref childNodes); - - // foreach (TreeNode childNode in childNodes) - // { - // childNode.Checked = nodes.Checked; - // } - // } - //} } - private void buttonRead_Click(object sender, EventArgs e) { if (this.SelectedNodeFullPath == "" || this.SelectedNodeFullPath == null) @@ -569,6 +578,50 @@ namespace ITC81DB_0H.Controls else { this.labelFind.Text = myKeyPad.StringValue; + + if (this.labelFind.Text == "" || this.labelFind.Text == null || this.listBoxTime.ItemCount == 0) + return; + + int startIndex = 0, endIndex = 0; + int index = int.Parse(this.labelFind.Text); + + try + { + this.ClearData(); + this.ClearListBox(); + + if (this.TotalCount > ListBoxLineCount) + { + if (index - ListBoxLineCount < 0) + { + startIndex = 0 + 1; + endIndex = ListBoxLineCount + 1; + + this.CurrentCount = ListBoxLineCount; + } + else + { + startIndex = index - ListBoxLineCount; + endIndex = index; + + this.CurrentCount = index; + } + } + else + { + startIndex = 0 + 1; + endIndex = this.TotalCount + 1; + + this.CurrentCount = this.TotalCount; + } + + this.UpdateData(startIndex, endIndex); + } + catch + { + DialogFormMessage myMsg = new DialogFormMessage(16, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } } } } @@ -622,7 +675,6 @@ namespace ITC81DB_0H.Controls private void buttonBackup_Click(object sender, EventArgs e) { this.FileClose(); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.DataBackup, "Inspection"); this.ParentForm.Backup(Define.E_DataType.Inspection, this.treeView); } diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.designer.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.designer.cs index 95a3f16..462f2b5 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.designer.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.designer.cs @@ -30,6 +30,8 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterLogInspection)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.listBoxNo = new SmartX.SmartListBox(); + this.smartLabel7 = new SmartX.SmartLabel(); this.listBoxPass = new SmartX.SmartListBox(); this.smartLabel1 = new SmartX.SmartLabel(); this.labelTitleFind = new SmartX.SmartLabel(); @@ -66,6 +68,8 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(46)))), ((int)(((byte)(46))))); this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.listBoxNo); + this.smartGroupBox1.Controls.Add(this.smartLabel7); this.smartGroupBox1.Controls.Add(this.listBoxPass); this.smartGroupBox1.Controls.Add(this.smartLabel1); this.smartGroupBox1.Controls.Add(this.labelTitleFind); @@ -106,6 +110,62 @@ this.smartGroupBox1.TabIndex = 173; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // listBoxNo + // + this.listBoxNo.BackColor = System.Drawing.Color.White; + this.listBoxNo.BackPictureBox = null; + this.listBoxNo.BackPictureBox1 = null; + this.listBoxNo.BackPictureBox2 = null; + this.listBoxNo.ColumnAlign = SmartX.SmartListBox.COLUMNALIGNS.CENTER; + this.listBoxNo.ColumnDelimiter = '\0'; + this.listBoxNo.ColumnOffsets = null; + this.listBoxNo.Enabled = false; + this.listBoxNo.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular); + this.listBoxNo.FontColor = System.Drawing.Color.Black; + this.listBoxNo.InitVisible = true; + this.listBoxNo.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; + this.listBoxNo.ItemOffsetGap = 8; + this.listBoxNo.ItemOffsetX = 5; + this.listBoxNo.ItemOffsetY = 0; + this.listBoxNo.Location = new System.Drawing.Point(296, 141); + this.listBoxNo.MouseMoveEventSpace = 3; + this.listBoxNo.MouseMoveSpace = 10; + this.listBoxNo.Name = "listBoxNo"; + this.listBoxNo.OutLineColor = System.Drawing.SystemColors.ControlText; + this.listBoxNo.SelectColor = System.Drawing.Color.Blue; + this.listBoxNo.SelectFilled = true; + this.listBoxNo.SelectFontColor = System.Drawing.Color.DarkBlue; + this.listBoxNo.SelectItemIndex = -1; + this.listBoxNo.SeparationlineColor1 = System.Drawing.Color.Gray; + this.listBoxNo.SeparationlineColor2 = System.Drawing.Color.LightGray; + this.listBoxNo.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; + this.listBoxNo.SeparationlineVisibleBottom = true; + this.listBoxNo.SeparationlineVisibleTop = true; + this.listBoxNo.Size = new System.Drawing.Size(45, 318); + this.listBoxNo.TabIndex = 253; + this.listBoxNo.Text = "smartListBox1"; + // + // smartLabel7 + // + this.smartLabel7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.smartLabel7.BackPictureBox = null; + this.smartLabel7.BackPictureBox1 = null; + this.smartLabel7.BackPictureBox2 = null; + this.smartLabel7.BorderColor = System.Drawing.Color.Black; + this.smartLabel7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.smartLabel7.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.smartLabel7.ForeColor = System.Drawing.Color.White; + this.smartLabel7.InitVisible = true; + this.smartLabel7.LineSpacing = 0F; + this.smartLabel7.Location = new System.Drawing.Point(296, 118); + this.smartLabel7.Name = "smartLabel7"; + this.smartLabel7.Size = new System.Drawing.Size(45, 23); + this.smartLabel7.TabIndex = 252; + this.smartLabel7.Text = "No."; + this.smartLabel7.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.smartLabel7.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.smartLabel7.Wordwrap = false; + // // listBoxPass // this.listBoxPass.BackColor = System.Drawing.Color.White; @@ -121,9 +181,9 @@ this.listBoxPass.InitVisible = true; this.listBoxPass.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxPass.ItemOffsetGap = 8; - this.listBoxPass.ItemOffsetX = 2; + this.listBoxPass.ItemOffsetX = 5; this.listBoxPass.ItemOffsetY = 0; - this.listBoxPass.Location = new System.Drawing.Point(439, 141); + this.listBoxPass.Location = new System.Drawing.Point(464, 141); this.listBoxPass.MouseMoveEventSpace = 3; this.listBoxPass.MouseMoveSpace = 10; this.listBoxPass.Name = "listBoxPass"; @@ -137,7 +197,7 @@ this.listBoxPass.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxPass.SeparationlineVisibleBottom = true; this.listBoxPass.SeparationlineVisibleTop = true; - this.listBoxPass.Size = new System.Drawing.Size(62, 318); + this.listBoxPass.Size = new System.Drawing.Size(60, 318); this.listBoxPass.TabIndex = 251; this.listBoxPass.Text = "smartListBox3"; // @@ -153,9 +213,9 @@ this.smartLabel1.ForeColor = System.Drawing.Color.White; this.smartLabel1.InitVisible = true; this.smartLabel1.LineSpacing = 0F; - this.smartLabel1.Location = new System.Drawing.Point(439, 118); + this.smartLabel1.Location = new System.Drawing.Point(464, 118); this.smartLabel1.Name = "smartLabel1"; - this.smartLabel1.Size = new System.Drawing.Size(62, 23); + this.smartLabel1.Size = new System.Drawing.Size(60, 23); this.smartLabel1.TabIndex = 250; this.smartLabel1.Text = "Pass"; this.smartLabel1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -175,7 +235,7 @@ this.labelTitleFind.LineSpacing = 0F; this.labelTitleFind.Location = new System.Drawing.Point(240, 78); this.labelTitleFind.Name = "labelTitleFind"; - this.labelTitleFind.Size = new System.Drawing.Size(173, 34); + this.labelTitleFind.Size = new System.Drawing.Size(178, 34); this.labelTitleFind.TabIndex = 249; this.labelTitleFind.Text = "데이터 찾기(Line)"; this.labelTitleFind.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -194,7 +254,7 @@ this.labelFind.ForeColor = System.Drawing.Color.Black; this.labelFind.InitVisible = true; this.labelFind.LineSpacing = 0F; - this.labelFind.Location = new System.Drawing.Point(419, 77); + this.labelFind.Location = new System.Drawing.Point(424, 77); this.labelFind.Name = "labelFind"; this.labelFind.Size = new System.Drawing.Size(175, 35); this.labelFind.TabIndex = 248; @@ -215,7 +275,7 @@ this.buttonFind.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.DownImage"))); this.buttonFind.GroupID = 0; this.buttonFind.InitVisible = true; - this.buttonFind.Location = new System.Drawing.Point(600, 77); + this.buttonFind.Location = new System.Drawing.Point(605, 77); this.buttonFind.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonFind.Name = "buttonFind"; this.buttonFind.NestedClickEventPrevent = false; @@ -232,6 +292,7 @@ this.buttonFind.TextLocation = new System.Drawing.Point(0, 0); this.buttonFind.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; this.buttonFind.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.UpImage"))); + this.buttonFind.Visible = false; this.buttonFind.Click += new System.EventHandler(this.buttonFind_Click); // // buttonRead @@ -246,7 +307,7 @@ this.buttonRead.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonRead.DownImage"))); this.buttonRead.GroupID = 0; this.buttonRead.InitVisible = true; - this.buttonRead.Location = new System.Drawing.Point(600, 37); + this.buttonRead.Location = new System.Drawing.Point(605, 37); this.buttonRead.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonRead.Name = "buttonRead"; this.buttonRead.NestedClickEventPrevent = false; @@ -280,9 +341,9 @@ this.listBoxWeight.InitVisible = true; this.listBoxWeight.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxWeight.ItemOffsetGap = 8; - this.listBoxWeight.ItemOffsetX = 2; + this.listBoxWeight.ItemOffsetX = 5; this.listBoxWeight.ItemOffsetY = 0; - this.listBoxWeight.Location = new System.Drawing.Point(565, 141); + this.listBoxWeight.Location = new System.Drawing.Point(586, 141); this.listBoxWeight.MouseMoveEventSpace = 3; this.listBoxWeight.MouseMoveSpace = 10; this.listBoxWeight.Name = "listBoxWeight"; @@ -296,7 +357,7 @@ this.listBoxWeight.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxWeight.SeparationlineVisibleBottom = true; this.listBoxWeight.SeparationlineVisibleTop = true; - this.listBoxWeight.Size = new System.Drawing.Size(76, 318); + this.listBoxWeight.Size = new System.Drawing.Size(60, 318); this.listBoxWeight.TabIndex = 245; this.listBoxWeight.Text = "smartListBox4"; // @@ -315,9 +376,9 @@ this.listBoxOver.InitVisible = true; this.listBoxOver.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxOver.ItemOffsetGap = 8; - this.listBoxOver.ItemOffsetX = 2; + this.listBoxOver.ItemOffsetX = 5; this.listBoxOver.ItemOffsetY = 0; - this.listBoxOver.Location = new System.Drawing.Point(502, 141); + this.listBoxOver.Location = new System.Drawing.Point(525, 141); this.listBoxOver.MouseMoveEventSpace = 3; this.listBoxOver.MouseMoveSpace = 10; this.listBoxOver.Name = "listBoxOver"; @@ -331,7 +392,7 @@ this.listBoxOver.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxOver.SeparationlineVisibleBottom = true; this.listBoxOver.SeparationlineVisibleTop = true; - this.listBoxOver.Size = new System.Drawing.Size(62, 318); + this.listBoxOver.Size = new System.Drawing.Size(60, 318); this.listBoxOver.TabIndex = 244; this.listBoxOver.Text = "smartListBox3"; // @@ -350,9 +411,9 @@ this.listBoxUnder.InitVisible = true; this.listBoxUnder.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxUnder.ItemOffsetGap = 8; - this.listBoxUnder.ItemOffsetX = 2; + this.listBoxUnder.ItemOffsetX = 5; this.listBoxUnder.ItemOffsetY = 0; - this.listBoxUnder.Location = new System.Drawing.Point(376, 141); + this.listBoxUnder.Location = new System.Drawing.Point(403, 141); this.listBoxUnder.MouseMoveEventSpace = 3; this.listBoxUnder.MouseMoveSpace = 10; this.listBoxUnder.Name = "listBoxUnder"; @@ -366,7 +427,7 @@ this.listBoxUnder.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxUnder.SeparationlineVisibleBottom = true; this.listBoxUnder.SeparationlineVisibleTop = true; - this.listBoxUnder.Size = new System.Drawing.Size(62, 318); + this.listBoxUnder.Size = new System.Drawing.Size(60, 318); this.listBoxUnder.TabIndex = 243; this.listBoxUnder.Text = "smartListBox2"; // @@ -385,9 +446,9 @@ this.listBoxGrade.InitVisible = true; this.listBoxGrade.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxGrade.ItemOffsetGap = 8; - this.listBoxGrade.ItemOffsetX = 2; + this.listBoxGrade.ItemOffsetX = 5; this.listBoxGrade.ItemOffsetY = 0; - this.listBoxGrade.Location = new System.Drawing.Point(301, 141); + this.listBoxGrade.Location = new System.Drawing.Point(342, 141); this.listBoxGrade.MouseMoveEventSpace = 3; this.listBoxGrade.MouseMoveSpace = 10; this.listBoxGrade.Name = "listBoxGrade"; @@ -401,7 +462,7 @@ this.listBoxGrade.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxGrade.SeparationlineVisibleBottom = true; this.listBoxGrade.SeparationlineVisibleTop = true; - this.listBoxGrade.Size = new System.Drawing.Size(74, 318); + this.listBoxGrade.Size = new System.Drawing.Size(60, 318); this.listBoxGrade.TabIndex = 242; this.listBoxGrade.Text = "smartListBox1"; // @@ -436,7 +497,7 @@ this.listBoxTime.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxTime.SeparationlineVisibleBottom = true; this.listBoxTime.SeparationlineVisibleTop = true; - this.listBoxTime.Size = new System.Drawing.Size(60, 318); + this.listBoxTime.Size = new System.Drawing.Size(55, 318); this.listBoxTime.TabIndex = 241; this.listBoxTime.Text = "smartListBox1"; // @@ -460,7 +521,7 @@ this.labelTotalIndex.ForeColor = System.Drawing.Color.White; this.labelTotalIndex.InitVisible = true; this.labelTotalIndex.LineSpacing = 0F; - this.labelTotalIndex.Location = new System.Drawing.Point(646, 273); + this.labelTotalIndex.Location = new System.Drawing.Point(652, 273); this.labelTotalIndex.Name = "labelTotalIndex"; this.labelTotalIndex.Size = new System.Drawing.Size(50, 21); this.labelTotalIndex.TabIndex = 239; @@ -480,7 +541,7 @@ this.labelCurrentIndex.ForeColor = System.Drawing.Color.White; this.labelCurrentIndex.InitVisible = true; this.labelCurrentIndex.LineSpacing = 0F; - this.labelCurrentIndex.Location = new System.Drawing.Point(646, 238); + this.labelCurrentIndex.Location = new System.Drawing.Point(652, 238); this.labelCurrentIndex.Name = "labelCurrentIndex"; this.labelCurrentIndex.Size = new System.Drawing.Size(50, 21); this.labelCurrentIndex.TabIndex = 238; @@ -498,7 +559,7 @@ this.smartSeparatorLine1.Line2Visible = true; this.smartSeparatorLine1.Line2Width = 1F; this.smartSeparatorLine1.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal; - this.smartSeparatorLine1.Location = new System.Drawing.Point(646, 265); + this.smartSeparatorLine1.Location = new System.Drawing.Point(652, 265); this.smartSeparatorLine1.Name = "smartSeparatorLine1"; this.smartSeparatorLine1.Size = new System.Drawing.Size(50, 2); this.smartSeparatorLine1.TabIndex = 237; @@ -516,9 +577,9 @@ this.smartLabel6.ForeColor = System.Drawing.Color.White; this.smartLabel6.InitVisible = true; this.smartLabel6.LineSpacing = 0F; - this.smartLabel6.Location = new System.Drawing.Point(565, 118); + this.smartLabel6.Location = new System.Drawing.Point(586, 118); this.smartLabel6.Name = "smartLabel6"; - this.smartLabel6.Size = new System.Drawing.Size(76, 23); + this.smartLabel6.Size = new System.Drawing.Size(60, 23); this.smartLabel6.TabIndex = 236; this.smartLabel6.Text = "Weight"; this.smartLabel6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -537,9 +598,9 @@ this.smartLabel5.ForeColor = System.Drawing.Color.White; this.smartLabel5.InitVisible = true; this.smartLabel5.LineSpacing = 0F; - this.smartLabel5.Location = new System.Drawing.Point(502, 118); + this.smartLabel5.Location = new System.Drawing.Point(525, 118); this.smartLabel5.Name = "smartLabel5"; - this.smartLabel5.Size = new System.Drawing.Size(62, 23); + this.smartLabel5.Size = new System.Drawing.Size(60, 23); this.smartLabel5.TabIndex = 233; this.smartLabel5.Text = "Over"; this.smartLabel5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -558,9 +619,9 @@ this.smartLabel4.ForeColor = System.Drawing.Color.White; this.smartLabel4.InitVisible = true; this.smartLabel4.LineSpacing = 0F; - this.smartLabel4.Location = new System.Drawing.Point(376, 118); + this.smartLabel4.Location = new System.Drawing.Point(403, 118); this.smartLabel4.Name = "smartLabel4"; - this.smartLabel4.Size = new System.Drawing.Size(62, 23); + this.smartLabel4.Size = new System.Drawing.Size(60, 23); this.smartLabel4.TabIndex = 231; this.smartLabel4.Text = "Under"; this.smartLabel4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -579,9 +640,9 @@ this.smartLabel3.ForeColor = System.Drawing.Color.White; this.smartLabel3.InitVisible = true; this.smartLabel3.LineSpacing = 0F; - this.smartLabel3.Location = new System.Drawing.Point(301, 118); + this.smartLabel3.Location = new System.Drawing.Point(342, 118); this.smartLabel3.Name = "smartLabel3"; - this.smartLabel3.Size = new System.Drawing.Size(74, 23); + this.smartLabel3.Size = new System.Drawing.Size(60, 23); this.smartLabel3.TabIndex = 228; this.smartLabel3.Text = "Grade"; this.smartLabel3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -602,7 +663,7 @@ this.smartLabel2.LineSpacing = 0F; this.smartLabel2.Location = new System.Drawing.Point(240, 118); this.smartLabel2.Name = "smartLabel2"; - this.smartLabel2.Size = new System.Drawing.Size(60, 23); + this.smartLabel2.Size = new System.Drawing.Size(55, 23); this.smartLabel2.TabIndex = 227; this.smartLabel2.Text = "Time"; this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -622,7 +683,7 @@ this.buttonDown.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonDown.GroupID = 0; this.buttonDown.InitVisible = true; - this.buttonDown.Location = new System.Drawing.Point(646, 310); + this.buttonDown.Location = new System.Drawing.Point(652, 310); this.buttonDown.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonDown.Name = "buttonDown"; this.buttonDown.NestedClickEventPrevent = false; @@ -655,7 +716,7 @@ this.buttonUp.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonUp.GroupID = 0; this.buttonUp.InitVisible = true; - this.buttonUp.Location = new System.Drawing.Point(646, 73); + this.buttonUp.Location = new System.Drawing.Point(652, 73); this.buttonUp.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonUp.Name = "buttonUp"; this.buttonUp.NestedClickEventPrevent = false; @@ -689,7 +750,7 @@ this.labelFileName.LineSpacing = 0F; this.labelFileName.Location = new System.Drawing.Point(240, 37); this.labelFileName.Name = "labelFileName"; - this.labelFileName.Size = new System.Drawing.Size(354, 35); + this.labelFileName.Size = new System.Drawing.Size(359, 35); this.labelFileName.TabIndex = 224; this.labelFileName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; this.labelFileName.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; @@ -708,7 +769,7 @@ this.labelTitleFileName.LineSpacing = 0F; this.labelTitleFileName.Location = new System.Drawing.Point(240, 12); this.labelTitleFileName.Name = "labelTitleFileName"; - this.labelTitleFileName.Size = new System.Drawing.Size(396, 21); + this.labelTitleFileName.Size = new System.Drawing.Size(406, 21); this.labelTitleFileName.TabIndex = 223; this.labelTitleFileName.Text = "파일 이름"; this.labelTitleFileName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -768,7 +829,7 @@ this.buttonBackup.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold); this.buttonBackup.GroupID = 0; this.buttonBackup.InitVisible = true; - this.buttonBackup.Location = new System.Drawing.Point(646, 12); + this.buttonBackup.Location = new System.Drawing.Point(652, 12); this.buttonBackup.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonBackup.Name = "buttonBackup"; this.buttonBackup.NestedClickEventPrevent = false; @@ -835,6 +896,8 @@ private SmartX.SmartLabel labelFind; private SmartX.SmartListBox listBoxPass; private SmartX.SmartLabel smartLabel1; + private SmartX.SmartLabel smartLabel7; + private SmartX.SmartListBox listBoxNo; } } diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.cs index ef99c7f..7ef0229 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.cs @@ -97,7 +97,7 @@ namespace ITC81DB_0H.Controls { this.labelTitleFileList.Text = "파일 목록"; this.labelTitleFileName.Text = "파일 이름"; - this.labelTitleFind.Text = "Search line"; + this.labelTitleFind.Text = "데이터 검색(Line)"; } } private void DefaultSetting() @@ -245,6 +245,17 @@ namespace ITC81DB_0H.Controls } } + private void SearchLineEnabled(bool bValue) + { + if (bValue == false) + this.labelFind.BackColor = Color.Gray; + else + this.labelFind.BackColor = Color.White; + + this.labelFind.Enabled = bValue; + this.buttonFind.Enabled = bValue; + } + public void ClearData() { this.CollectionData.Clear(); @@ -253,7 +264,7 @@ namespace ITC81DB_0H.Controls { this.listBoxLog.ClearAll(); } - + private void ListBoxScrollUp(int value) { if (this.CurrentCount == ListBoxLineCount || (this.CurrentCount < ListBoxLineCount && this.CurrentCount == this.TotalCount) @@ -328,7 +339,7 @@ namespace ITC81DB_0H.Controls this.labelTotalIndex.Text = this.TotalCount.ToString(); this.labelCurrentIndex.Text = this.CurrentCount.ToString(); } - + public void LoadDatas(string fullFilePath) { // 맨 끝 ListBoxLineCount 만큼의 데이터 Load @@ -369,14 +380,18 @@ namespace ITC81DB_0H.Controls this.CurrentCount = this.TotalCount; + if (this.TotalCount < ListBoxLineCount) + this.SearchLineEnabled(false); + else + this.SearchLineEnabled(true); + this.labelFind.Text = this.CurrentCount.ToString(); + this.UpdateData(startIndex, endIndex); // File Name string[] data = fullFilePath.Split('\\'); this.labelFileName.Text = data[data.Length - 1]; - - this.UpdateData(startIndex, endIndex); - + this.ParentForm.SplashFinish(); this.Enabled = true; @@ -450,7 +465,7 @@ namespace ITC81DB_0H.Controls //{ // var node = e.Node; // int count = node.Nodes.Count; - + // for (int i = 0; i < count; i++) // node.Nodes[i].Checked = node.Checked; //} @@ -491,6 +506,50 @@ namespace ITC81DB_0H.Controls else { this.labelFind.Text = myKeyPad.StringValue; + + if (this.labelFind.Text == "" || this.labelFind.Text == null || this.listBoxLog.ItemCount == 0) + return; + + int startIndex = 0, endIndex = 0; + int index = int.Parse(this.labelFind.Text); + + try + { + this.ClearData(); + this.ClearListBox(); + + if (this.TotalCount > ListBoxLineCount) + { + if (index - ListBoxLineCount < 0) + { + startIndex = 0 + 1; + endIndex = ListBoxLineCount + 1; + + this.CurrentCount = ListBoxLineCount; + } + else + { + startIndex = index - ListBoxLineCount; + endIndex = index; + + this.CurrentCount = index; + } + } + else + { + startIndex = 0 + 1; + endIndex = this.TotalCount + 1; + + this.CurrentCount = this.TotalCount; + } + + this.UpdateData(startIndex, endIndex); + } + catch + { + DialogFormMessage myMsg = new DialogFormMessage(16, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } } } } @@ -544,7 +603,6 @@ namespace ITC81DB_0H.Controls private void buttonBackup_Click(object sender, EventArgs e) { this.FileClose(); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.DataBackup, "Others"); this.ParentForm.Backup(Define.E_DataType.Others, this.treeView); } diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.designer.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.designer.cs index dc81b1e..1d4abd2 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.designer.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.designer.cs @@ -99,7 +99,7 @@ this.labelTitleFind.LineSpacing = 0F; this.labelTitleFind.Location = new System.Drawing.Point(254, 78); this.labelTitleFind.Name = "labelTitleFind"; - this.labelTitleFind.Size = new System.Drawing.Size(159, 34); + this.labelTitleFind.Size = new System.Drawing.Size(164, 34); this.labelTitleFind.TabIndex = 251; this.labelTitleFind.Text = "데이터 찾기(Line)"; this.labelTitleFind.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -118,7 +118,7 @@ this.labelFind.ForeColor = System.Drawing.Color.Black; this.labelFind.InitVisible = true; this.labelFind.LineSpacing = 0F; - this.labelFind.Location = new System.Drawing.Point(419, 77); + this.labelFind.Location = new System.Drawing.Point(424, 77); this.labelFind.Name = "labelFind"; this.labelFind.Size = new System.Drawing.Size(175, 35); this.labelFind.TabIndex = 250; @@ -139,7 +139,7 @@ this.buttonFind.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.DownImage"))); this.buttonFind.GroupID = 0; this.buttonFind.InitVisible = true; - this.buttonFind.Location = new System.Drawing.Point(600, 77); + this.buttonFind.Location = new System.Drawing.Point(605, 77); this.buttonFind.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonFind.Name = "buttonFind"; this.buttonFind.NestedClickEventPrevent = false; @@ -156,6 +156,7 @@ this.buttonFind.TextLocation = new System.Drawing.Point(0, 0); this.buttonFind.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; this.buttonFind.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.UpImage"))); + this.buttonFind.Visible = false; this.buttonFind.Click += new System.EventHandler(this.buttonFind_Click); // // buttonRead @@ -170,7 +171,7 @@ this.buttonRead.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonRead.DownImage"))); this.buttonRead.GroupID = 0; this.buttonRead.InitVisible = true; - this.buttonRead.Location = new System.Drawing.Point(600, 37); + this.buttonRead.Location = new System.Drawing.Point(605, 37); this.buttonRead.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonRead.Name = "buttonRead"; this.buttonRead.NestedClickEventPrevent = false; @@ -203,7 +204,7 @@ this.smartLabel4.LineSpacing = 0F; this.smartLabel4.Location = new System.Drawing.Point(254, 118); this.smartLabel4.Name = "smartLabel4"; - this.smartLabel4.Size = new System.Drawing.Size(387, 23); + this.smartLabel4.Size = new System.Drawing.Size(392, 23); this.smartLabel4.TabIndex = 242; this.smartLabel4.Text = "Detail"; this.smartLabel4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -225,7 +226,7 @@ this.listBoxLog.InitVisible = true; this.listBoxLog.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxLog.ItemOffsetGap = 8; - this.listBoxLog.ItemOffsetX = 2; + this.listBoxLog.ItemOffsetX = 5; this.listBoxLog.ItemOffsetY = 0; this.listBoxLog.Location = new System.Drawing.Point(254, 141); this.listBoxLog.MouseMoveEventSpace = 3; @@ -241,7 +242,7 @@ this.listBoxLog.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxLog.SeparationlineVisibleBottom = true; this.listBoxLog.SeparationlineVisibleTop = true; - this.listBoxLog.Size = new System.Drawing.Size(387, 318); + this.listBoxLog.Size = new System.Drawing.Size(392, 318); this.listBoxLog.TabIndex = 241; this.listBoxLog.Text = "smartListBox1"; this.listBoxLog.Click += new System.EventHandler(this.listBox_Click); @@ -266,7 +267,7 @@ this.labelTotalIndex.ForeColor = System.Drawing.Color.White; this.labelTotalIndex.InitVisible = true; this.labelTotalIndex.LineSpacing = 0F; - this.labelTotalIndex.Location = new System.Drawing.Point(646, 273); + this.labelTotalIndex.Location = new System.Drawing.Point(652, 273); this.labelTotalIndex.Name = "labelTotalIndex"; this.labelTotalIndex.Size = new System.Drawing.Size(50, 21); this.labelTotalIndex.TabIndex = 239; @@ -286,7 +287,7 @@ this.labelCurrentIndex.ForeColor = System.Drawing.Color.White; this.labelCurrentIndex.InitVisible = true; this.labelCurrentIndex.LineSpacing = 0F; - this.labelCurrentIndex.Location = new System.Drawing.Point(646, 238); + this.labelCurrentIndex.Location = new System.Drawing.Point(652, 238); this.labelCurrentIndex.Name = "labelCurrentIndex"; this.labelCurrentIndex.Size = new System.Drawing.Size(50, 21); this.labelCurrentIndex.TabIndex = 238; @@ -304,7 +305,7 @@ this.smartSeparatorLine1.Line2Visible = true; this.smartSeparatorLine1.Line2Width = 1F; this.smartSeparatorLine1.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal; - this.smartSeparatorLine1.Location = new System.Drawing.Point(646, 265); + this.smartSeparatorLine1.Location = new System.Drawing.Point(652, 265); this.smartSeparatorLine1.Name = "smartSeparatorLine1"; this.smartSeparatorLine1.Size = new System.Drawing.Size(50, 2); this.smartSeparatorLine1.TabIndex = 237; @@ -323,7 +324,7 @@ this.buttonDown.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonDown.GroupID = 0; this.buttonDown.InitVisible = true; - this.buttonDown.Location = new System.Drawing.Point(646, 310); + this.buttonDown.Location = new System.Drawing.Point(652, 310); this.buttonDown.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonDown.Name = "buttonDown"; this.buttonDown.NestedClickEventPrevent = false; @@ -356,7 +357,7 @@ this.buttonUp.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonUp.GroupID = 0; this.buttonUp.InitVisible = true; - this.buttonUp.Location = new System.Drawing.Point(646, 73); + this.buttonUp.Location = new System.Drawing.Point(652, 73); this.buttonUp.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonUp.Name = "buttonUp"; this.buttonUp.NestedClickEventPrevent = false; @@ -390,7 +391,7 @@ this.labelFileName.LineSpacing = 0F; this.labelFileName.Location = new System.Drawing.Point(254, 37); this.labelFileName.Name = "labelFileName"; - this.labelFileName.Size = new System.Drawing.Size(340, 35); + this.labelFileName.Size = new System.Drawing.Size(345, 35); this.labelFileName.TabIndex = 224; this.labelFileName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; this.labelFileName.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; @@ -469,7 +470,7 @@ this.buttonBackup.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold); this.buttonBackup.GroupID = 0; this.buttonBackup.InitVisible = true; - this.buttonBackup.Location = new System.Drawing.Point(646, 12); + this.buttonBackup.Location = new System.Drawing.Point(652, 12); this.buttonBackup.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonBackup.Name = "buttonBackup"; this.buttonBackup.NestedClickEventPrevent = false; diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs index 0ccf1c9..174b9a9 100644 --- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs +++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs @@ -649,7 +649,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut1Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput1Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut1Mode, "", before, after); } private void labelSorter1DelayTime_Click(object sender, EventArgs e) { @@ -677,7 +677,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut1DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput1Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut1Delay, "", before, after); } } } @@ -707,7 +707,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut1RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput1Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut1Run, "", before, after); } } } @@ -733,7 +733,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut2Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput2Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut2Mode, "", before, after); } private void labelSorter2DelayTime_Click(object sender, EventArgs e) { @@ -761,7 +761,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut2DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput2Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut2Delay, "", before, after); } } } @@ -791,7 +791,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut2RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput2Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut2Run, "", before, after); } } } @@ -817,7 +817,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut3Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput3Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut3Mode, "", before, after); } private void labelSorter3DelayTime_Click(object sender, EventArgs e) { @@ -845,7 +845,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut3DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput3Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut3Delay, "", before, after); } } } @@ -875,7 +875,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut3RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput3Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut3Run, "", before, after); } } } @@ -901,7 +901,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut4Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput4Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut4Mode, "", before, after); } private void labelSorter4DelayTime_Click(object sender, EventArgs e) { @@ -929,7 +929,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut4DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput4Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut4Delay, "", before, after); } } } @@ -959,7 +959,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut4RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput4Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut4Run, "", before, after); } } } @@ -984,7 +984,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut5Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput5Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut5Mode, "", before, after); } private void labelSorter5DelayTime_Click(object sender, EventArgs e) { @@ -1012,7 +1012,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut5DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput5Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut5Delay, "", before, after); } } } @@ -1042,7 +1042,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut5RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput5Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut5Run, "", before, after); } } } @@ -1067,7 +1067,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut6Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput6Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut6Mode, "", before, after); } private void labelSorter6DelayTime_Click(object sender, EventArgs e) { @@ -1095,7 +1095,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut6DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput6Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut6Delay, "", before, after); } } } @@ -1125,7 +1125,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut6RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput6Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut6Run, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemJudgmentManual.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemJudgmentManual.cs index 7c1d68d..d25683e 100644 --- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemJudgmentManual.cs +++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemJudgmentManual.cs @@ -480,7 +480,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementFilter, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeFilter, "", before, after); } } } @@ -519,13 +519,13 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.DoubleDelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementDoubleDelay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeDoubleDelay, "", before, after); } this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementDelay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeDelay, "", before, after); } } } @@ -565,7 +565,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementDoubleDelay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeDoubleDelay, "", before, after); } } } @@ -597,7 +597,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementNumber, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeNumber, "", before, after); } } } @@ -641,7 +641,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, "0", CommunicationAddress.BLDCMotorSpeed, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementSpeed, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeSpeed, "", before, after); } } } @@ -675,7 +675,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementDescendDelayTime, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeDesDelay, "", before, after); } } } @@ -707,7 +707,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementAscendDelayTime, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeAscDelay, "", before, after); } } } @@ -742,7 +742,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementDynamicCorrection, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeDynamic, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemSorterSetting.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemSorterSetting.cs index 67a415c..500e979 100644 --- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemSorterSetting.cs +++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemSorterSetting.cs @@ -467,17 +467,17 @@ namespace ITC81DB_0H.Controls after2Run = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2RunTime.ToString(); if (before1Mode != after1Mode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterAMode, "", before1Mode, after1Mode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorAMode, "", before1Mode, after1Mode); if (before1Delay != after1Delay) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterADelay, "", before1Delay, after1Delay); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorADelay, "", before1Delay, after1Delay); if (before1Run != after1Run) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterAOperation, "", before1Run, after1Run); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorARun, "", before1Run, after1Run); if (before2Mode != after2Mode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterBMode, "", before2Mode, after2Mode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorBMode, "", before2Mode, after2Mode); if (before2Delay != after2Delay) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterBDelay, "", before2Delay, after2Delay); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorBDelay, "", before2Delay, after2Delay); if (before2Run != after2Run) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterBOperation, "", before2Run, after2Run); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorBRun, "", before2Run, after2Run); StringBuilder sb = new StringBuilder(); sb.Append(Helper.StringZeroFillDigits4(this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1Mode.ToString())); @@ -493,8 +493,11 @@ namespace ITC81DB_0H.Controls private void radioButtonDoubleEntry_Click(object sender, EventArgs e) { + string before = "", after = ""; string value = ""; + before = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterDoubleEntry; + if (this.radioButtonDoubleEntryNone.Checked == true) value = "0000"; else if (this.radioButtonDoubleEntrySorterA.Checked == true) @@ -504,14 +507,20 @@ namespace ITC81DB_0H.Controls else value = "0000"; - this.ParentForm.ParentForm.CurrentSystemParameter1.SorterDoubleEntry = value; + after = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterDoubleEntry = value; this.ParentForm.ParentForm.SaveSystemParameter1File(this.ParentForm.ParentForm.CurrentSystemParameter1); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.DoubleEnter, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorDoubleEntry, "", before, after); } private void radioButtonExternalInput_Click(object sender, EventArgs e) { + string before = "", after = ""; string value = ""; + before = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterExternalNgInput; + if (this.radioButtonExternalInputNone.Checked == true) value = "0000"; else if (this.radioButtonExternalInputSorterA.Checked == true) @@ -521,14 +530,20 @@ namespace ITC81DB_0H.Controls else value = "0000"; - this.ParentForm.ParentForm.CurrentSystemParameter1.SorterExternalNgInput = value; + after = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterExternalNgInput = value; this.ParentForm.ParentForm.SaveSystemParameter1File(this.ParentForm.ParentForm.CurrentSystemParameter1); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalInput, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorExternalInput, "", before, after); } private void radioButtonEtcNg_Click(object sender, EventArgs e) { + string before = "", after = ""; string value = ""; + before = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterEtcNg; + if (this.radioButtonEtcNgNone.Checked == true) value = "0000"; else if (this.radioButtonEtcNgSorterA.Checked == true) @@ -538,9 +553,12 @@ namespace ITC81DB_0H.Controls else value = "0000"; - this.ParentForm.ParentForm.CurrentSystemParameter1.SorterEtcNg = value; + after = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterEtcNg = value; this.ParentForm.ParentForm.SaveSystemParameter1File(this.ParentForm.ParentForm.CurrentSystemParameter1); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalNG, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorExternalNG, "", before, after); } private void comboBoxSorterA_SelectedIndexChanged(object sender, EventArgs e) diff --git a/ITC81DB_0H/Controls/Etc/ControlCenterSystemAutoZero.cs b/ITC81DB_0H/Controls/Etc/ControlCenterSystemAutoZero.cs index c065f73..c5b969c 100644 --- a/ITC81DB_0H/Controls/Etc/ControlCenterSystemAutoZero.cs +++ b/ITC81DB_0H/Controls/Etc/ControlCenterSystemAutoZero.cs @@ -149,7 +149,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.AutoZeroIsUsing, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.AutoZeroIsUsing, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Auto0IsUsing, "", before, after); } private void labelPlusRange_Click(object sender, EventArgs e) { @@ -177,7 +177,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.AutoZeroPlusRange, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.AutoZeroRangePlus, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Auto0RangePlus, "", before, after); } } } @@ -207,7 +207,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.AutoZeroMinusRange, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.AutoZeroRangeMinus, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Auto0RangeMinus, "", before, after); } } } @@ -225,7 +225,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.AutoZeroVariate, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.AutoZeroVariation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Auto0Variation, "", before, after); } #endregion } diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiEthernetLocalIP.cs b/ITC81DB_0H/Controls/Etc/ControlConfiEthernetLocalIP.cs index c3fceb4..5212f5f 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiEthernetLocalIP.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiEthernetLocalIP.cs @@ -253,11 +253,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.EthernetClientConnect(); if (beforeIP != afterIP) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetLocalIPAddress, "", beforeIP, afterIP); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalIPAddress, "", beforeIP, afterIP); if (beforeSubnetMask != afterSubnetMask) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetLocalSubnetMask, "", beforeSubnetMask, afterSubnetMask); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalSubnetMask, "", beforeSubnetMask, afterSubnetMask); if (beforeGateway != afterGateway) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetLocalGateway, "", beforeGateway, afterGateway); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalGateway, "", beforeGateway, afterGateway); } private void labelLocalIP1_Click(object sender, EventArgs e) @@ -573,7 +573,7 @@ namespace ITC81DB_0H.Controls else after = "DHCP"; - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetLocalIPConfiguration, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalIPConfig, "", before, after); } else { diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.cs b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.cs new file mode 100644 index 0000000..33020f3 --- /dev/null +++ b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.cs @@ -0,0 +1,135 @@ +using System; +using System.Linq; +using System.Collections.ObjectModel; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +using ITC81DB_2H_ImageDll; +using ITC81DB_0H.DialogForms; +using ITC81DB_0H.Forms; +using ITC81DB_2H.Datastore; + +namespace ITC81DB_0H +{ + public partial class ControlConfiMULTiJET : UserControl + { + #region Field + private FormMenu m_ParentForm; + #endregion + + #region Constructor + public ControlConfiMULTiJET(FormMenu parent) + { + InitializeComponent(); + + this.ParentForm = parent; + + this.InitializeDesign(); + this.DefaultSetting(); + } + #endregion + + #region Property + public FormMenu ParentForm + { + get { return this.m_ParentForm; } + private set { this.m_ParentForm = value; } + } + #endregion + + #region Method + public void InitializeDesign() + { + Class1 images = new Class1(); + + if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.English) + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.engBackgroundBottomAddOn)); + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.chnBackgroundBottomAddOn)); + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Czech) + { + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.rusBackgroundBottomAddOn)); + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.gerBackgroundBottomAddOn)); + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.engBackgroundBottomAddOn)); + } + else + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.korBackgroundBottomAddOn)); + } + } + private void DefaultSetting() + { + } + + public void DisplayRefresh(Define.E_MenuBottomConfiguration menu) + { + if (menu == Define.E_MenuBottomConfiguration.SerialCOM1) + { + this.labelSlaveAddress.Text = this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM1.ToString(); + } + else if (menu == Define.E_MenuBottomConfiguration.SerialCOM3) + { + this.labelSlaveAddress.Text = this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM3.ToString(); + } + else if (menu == Define.E_MenuBottomConfiguration.SerialCOM4) + { + this.labelSlaveAddress.Text = this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM4.ToString(); + } + } + #endregion + + #region Event Handler + private void labelSlaveAddress_Click(object sender, EventArgs e) + { + string value = ""; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelSlaveAddress.Text, 3, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.IntValue < 1 || myKeyPad.IntValue > 255) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } + else + { + this.labelSlaveAddress.Text = myKeyPad.StringValue; + + Define.E_MenuBottomConfiguration temp = this.ParentForm.CurrentConfigurationMenu(); + + if (temp == Define.E_MenuBottomConfiguration.SerialCOM1) + this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM1 = myKeyPad.IntValue; + else if (temp == Define.E_MenuBottomConfiguration.SerialCOM3) + this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM3 = myKeyPad.IntValue; + else if (temp == Define.E_MenuBottomConfiguration.SerialCOM4) + this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM4 = myKeyPad.IntValue; + + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + } + } + } + #endregion + + } +} diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.designer.cs b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.designer.cs new file mode 100644 index 0000000..871c7c9 --- /dev/null +++ b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.designer.cs @@ -0,0 +1,116 @@ +namespace ITC81DB_0H +{ + partial class ControlConfiMULTiJET + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlConfiMULTiJET)); + this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.labelSlaveAddress = new SmartX.SmartLabel(); + this.labelTitleSlaveAddress = new SmartX.SmartLabel(); + this.smartGroupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // smartGroupBox1 + // + this.smartGroupBox1.BackPictureBox = null; + this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.labelSlaveAddress); + this.smartGroupBox1.Controls.Add(this.labelTitleSlaveAddress); + this.smartGroupBox1.FrameLineColor1 = System.Drawing.Color.Black; + this.smartGroupBox1.FrameLineColor2 = System.Drawing.Color.Black; + this.smartGroupBox1.FrameLineThickness = 1; + this.smartGroupBox1.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.None; + this.smartGroupBox1.Image = ((System.Drawing.Image)(resources.GetObject("smartGroupBox1.Image"))); + this.smartGroupBox1.InitVisible = true; + this.smartGroupBox1.Location = new System.Drawing.Point(0, 0); + this.smartGroupBox1.Name = "smartGroupBox1"; + this.smartGroupBox1.RoundRadius = 5; + this.smartGroupBox1.Size = new System.Drawing.Size(710, 253); + this.smartGroupBox1.TabIndex = 6; + this.smartGroupBox1.Text = "smartGroupBox1"; + this.smartGroupBox1.TextColor = System.Drawing.Color.Black; + // + // labelSlaveAddress + // + this.labelSlaveAddress.BackColor = System.Drawing.SystemColors.Window; + this.labelSlaveAddress.BackPictureBox = null; + this.labelSlaveAddress.BackPictureBox1 = null; + this.labelSlaveAddress.BackPictureBox2 = null; + this.labelSlaveAddress.BorderColor = System.Drawing.Color.Black; + this.labelSlaveAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelSlaveAddress.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelSlaveAddress.InitVisible = true; + this.labelSlaveAddress.LineSpacing = 0F; + this.labelSlaveAddress.Location = new System.Drawing.Point(435, 16); + this.labelSlaveAddress.Name = "labelSlaveAddress"; + this.labelSlaveAddress.Size = new System.Drawing.Size(82, 28); + this.labelSlaveAddress.TabIndex = 135; + this.labelSlaveAddress.Text = "58"; + this.labelSlaveAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelSlaveAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelSlaveAddress.Wordwrap = false; + this.labelSlaveAddress.Click += new System.EventHandler(this.labelSlaveAddress_Click); + // + // labelTitleSlaveAddress + // + this.labelTitleSlaveAddress.BackPictureBox1 = null; + this.labelTitleSlaveAddress.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleSlaveAddress.BorderColor = System.Drawing.Color.Black; + this.labelTitleSlaveAddress.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleSlaveAddress.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleSlaveAddress.ForeColor = System.Drawing.Color.White; + this.labelTitleSlaveAddress.InitVisible = true; + this.labelTitleSlaveAddress.LineSpacing = 0F; + this.labelTitleSlaveAddress.Location = new System.Drawing.Point(117, 16); + this.labelTitleSlaveAddress.Name = "labelTitleSlaveAddress"; + this.labelTitleSlaveAddress.Size = new System.Drawing.Size(312, 28); + this.labelTitleSlaveAddress.TabIndex = 134; + this.labelTitleSlaveAddress.Text = "Slave Address"; + this.labelTitleSlaveAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleSlaveAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleSlaveAddress.Wordwrap = false; + // + // ControlConfiMULTiJET + // + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.Controls.Add(this.smartGroupBox1); + this.Name = "ControlConfiMULTiJET"; + this.Size = new System.Drawing.Size(710, 253); + this.smartGroupBox1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private SmartX.SmartGroupBox smartGroupBox1; + public SmartX.SmartLabel labelSlaveAddress; + private SmartX.SmartLabel labelTitleSlaveAddress; + } +} diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.resx b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.resx new file mode 100644 index 0000000..7e32bd5 --- /dev/null +++ b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.resx @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + + + + WEBPAD + + \ No newline at end of file diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs b/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs index 15c6276..1f7064c 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs @@ -101,11 +101,11 @@ namespace ITC81DB_0H.Controls this.comboBoxRole.Enabled = false; this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction = 0; if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM1) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM1 = 1; + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM1 = 1; else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM3) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM3 = 1; + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3 = 1; else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM4) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM4 = 1; + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4 = 1; this.labelSlaveID.Text = "1"; this.labelSlaveID.Enabled = false; this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); @@ -129,17 +129,17 @@ namespace ITC81DB_0H.Controls this.StartAddressControlVisible(true); if (menu == Define.E_MenuBottomConfiguration.SerialCOM1) { - this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM1.ToString(); + this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM1.ToString(); this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1.ToString(); } else if (menu == Define.E_MenuBottomConfiguration.SerialCOM3) { - this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM3.ToString(); + this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3.ToString(); this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3.ToString(); } else if (menu == Define.E_MenuBottomConfiguration.SerialCOM4) { - this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM4.ToString(); + this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4.ToString(); this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4.ToString(); } } @@ -193,7 +193,7 @@ namespace ITC81DB_0H.Controls this.comboBoxRole.SelectedIndexChanged -= new EventHandler(this.comboBoxRole_SelectedIndexChanged); if (menu == Define.E_MenuBottomConfiguration.Ethernet) { - if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f16_OPC) { this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction = (int)Define.E_ModbusFunction._04_ReadInputRegister; this.comboBoxRole.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction; @@ -218,9 +218,9 @@ namespace ITC81DB_0H.Controls } else { - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_EthernetMode.f16_OPC - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_EthernetMode.f16_OPC - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_EthernetMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f16_OPC + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f16_OPC + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f16_OPC) { this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction = (int)Define.E_ModbusFunction._04_ReadInputRegister; this.comboBoxRole.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction; @@ -247,6 +247,8 @@ namespace ITC81DB_0H.Controls // Slave ID는 Modbus TCP에서는 0x01로 고정 private void labelSlaveID_Click(object sender, EventArgs e) { + string before = "", after = ""; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelSlaveID.Text, 3, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -262,11 +264,32 @@ namespace ITC81DB_0H.Controls this.labelSlaveID.Text = myKeyPad.StringValue; if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM1) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM1 = myKeyPad.IntValue; + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM1.ToString(); + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM1 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_SlaveID, "COM1", before, after); + } else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM3) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM3 = myKeyPad.IntValue; + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3.ToString(); + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_SlaveID, "COM3", before, after); + } else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM4) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM4 = myKeyPad.IntValue; + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4.ToString(); + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_SlaveID, "COM4", before, after); + } this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); } @@ -275,6 +298,8 @@ namespace ITC81DB_0H.Controls private void labelStartAddress_Click(object sender, EventArgs e) { + string before = "", after = ""; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelStartAddress.Text, 5, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -290,13 +315,41 @@ namespace ITC81DB_0H.Controls this.labelStartAddress.Text = myKeyPad.StringValue; if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM1) + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1.ToString(); this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_StartAddr, "COM1", before, after); + } else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM3) + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3.ToString(); this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_StartAddr, "COM3", before, after); + } else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM4) + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4.ToString(); this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_StartAddr, "COM4", before, after); + } else + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPStartAddress.ToString(); this.ParentForm.ParentForm.SystemConfig2.ModbusTCPStartAddress = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_StartAddr, "TCP", before, after); + } this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); } @@ -305,25 +358,41 @@ namespace ITC81DB_0H.Controls private void comboBoxRole_SelectedIndexChanged(object sender, EventArgs e) { + string before = "", after = ""; + Define.E_MenuBottomConfiguration menu = this.ParentForm.CurrentConfigurationMenu(); if (menu == Define.E_MenuBottomConfiguration.Ethernet) { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction.ToString(); + this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction = this.comboBoxRole.SelectedIndex; if (this.comboBoxRole.SelectedIndex == (int)Define.E_ModbusFunction._04_ReadInputRegister) this.ModbusTCP04Addon(); else this.ModbusTCP16Addon(); + + after = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction.ToString(); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_Role, "TCP", before, after); } else { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction.ToString(); + this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction = this.comboBoxRole.SelectedIndex; if (this.comboBoxRole.SelectedIndex == (int)Define.E_ModbusFunction._04_ReadInputRegister) this.ModbusRTU04Addon(); else this.ModbusRTU16Addon(menu); + + after = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction.ToString(); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_Role, "RTU", before, after); } this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); @@ -331,6 +400,8 @@ namespace ITC81DB_0H.Controls private void labelReadTimeout_Click(object sender, EventArgs e) { + string before = "", after = ""; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelReadTimeout.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -343,7 +414,11 @@ namespace ITC81DB_0H.Controls } else { - this.labelReadTimeout.Text = myKeyPad.StringValue; + before = this.labelReadTimeout.Text; + after = this.labelReadTimeout.Text = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_Timeout, "", before, after); // 코드 완성 안됨. 추후 사용하게 되면 추가 작업해야함 } diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs index eca9f0a..0269a18 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs @@ -272,6 +272,8 @@ namespace ITC81DB_0H.Controls } public void DisplayRefresh(SystemStatus status) { + this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplay = Define.E_DisplayStore.ConfiOptionBoard1; + int temp = this.ParentForm.ParentForm.SystemConfig1.ProductNumber; this.ParentForm.ParentForm.LoadProductFile(ref this.CurrentProductItem, temp - 1); @@ -283,6 +285,10 @@ namespace ITC81DB_0H.Controls private void labelSampleCount_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelSampleCount.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -298,12 +304,15 @@ namespace ITC81DB_0H.Controls this.labelSampleCount.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelSampleCount.Text); - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount = myKeyPad.StringValue; + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount = myKeyPad.StringValue; this.ParentForm.ParentForm.ChildFormMainDisplay.CurrentBottomMenuControlEnable(); this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1SamplingCount, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1SampleCount, "", before, after); } } } @@ -311,6 +320,10 @@ namespace ITC81DB_0H.Controls private void labelDelayCount_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1DelayCount; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelDelayCount.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -326,10 +339,13 @@ namespace ITC81DB_0H.Controls this.labelDelayCount.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelDelayCount.Text); - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1DelayCount = myKeyPad.StringValue; + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1DelayCount = myKeyPad.StringValue; this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1DelayCount, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1DelayCount, "", before, after); } } } @@ -337,7 +353,10 @@ namespace ITC81DB_0H.Controls private void radioButtonPulseWidth_Click(object sender, EventArgs e) { int temp = 0; - string value = ""; + string value = ""; string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1PulseWidth; + SmartX.SmartRadioButton rb = sender as SmartX.SmartRadioButton; if (rb == null) @@ -364,11 +383,14 @@ namespace ITC81DB_0H.Controls break; } - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1PulseWidth = temp.ToString(); + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1PulseWidth = temp.ToString(); value = Helper.StringZeroFillDigits4(temp.ToString()); this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1PulseWidth, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1PulseWidth, "", before, after); } private void checkBoxUse_Click(object sender, EventArgs e) @@ -394,6 +416,8 @@ namespace ITC81DB_0H.Controls sValue = Helper.StringToDecimalPlaces(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces); if (this.labelLowerLimit.Text != sValue) this.labelLowerLimit.Text = sValue; + + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.OPT1Using, "ON"); } else { @@ -414,6 +438,8 @@ namespace ITC81DB_0H.Controls sValue = Helper.StringToDecimalPlaces(this.ParentForm.ParentForm.CurrentProductItem.UnderRange, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces); if (this.labelLowerLimit.Text != sValue) this.labelLowerLimit.Text = sValue; + + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.OPT1Using, "OFF"); } this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange = this.labelUpperLimit.Text.Replace(".", ""); @@ -435,8 +461,11 @@ namespace ITC81DB_0H.Controls private void labelUpperLimit_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; int digit = 0; + before = this.labelUpperLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -460,7 +489,7 @@ namespace ITC81DB_0H.Controls } else { - this.labelUpperLimit.Text = myKeyPad.StringValue; + after = this.labelUpperLimit.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CurrentFeedbackItem.OverRangeDeviation = this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayFeedback.CaculateDeviation(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRangeInt); @@ -468,6 +497,9 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange); this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1OverRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1OverRange, "", before, after); } } } @@ -475,8 +507,11 @@ namespace ITC81DB_0H.Controls private void labelLowerLimit_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; int digit = 0; + before = this.labelLowerLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -500,7 +535,7 @@ namespace ITC81DB_0H.Controls } else { - this.labelLowerLimit.Text = myKeyPad.StringValue; + after = this.labelLowerLimit.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CurrentFeedbackItem.UnderRangeDeviation = this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayFeedback.CaculateDeviation(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRangeInt); @@ -508,6 +543,9 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange); this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1UnderRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1UnderRange, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs index b677103..f8c2c31 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs @@ -30,33 +30,53 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlConfiOptionBoard2)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.labelTitleHelp = new SmartX.SmartLabel(); + this.smartLabel8 = new SmartX.SmartLabel(); + this.smartLabel7 = new SmartX.SmartLabel(); + this.labelZeroZoneCount = new SmartX.SmartLabel(); + this.labelTitleZeroZoneCount = new SmartX.SmartLabel(); + this.labelTitleZeroZoneCycle = new SmartX.SmartLabel(); + this.labelTitleOutputPort = new SmartX.SmartLabel(); + this.labelTitleSetting = new SmartX.SmartLabel(); + this.labelZeroZoneCycle = new SmartX.SmartLabel(); + this.buttonItemNo = new SmartX.SmartButton(); + this.panel1 = new System.Windows.Forms.Panel(); + this.radioButtonPortNone = new SmartX.SmartRadioButton(); + this.radioButtonPort56 = new SmartX.SmartRadioButton(); + this.radioButtonPort78 = new SmartX.SmartRadioButton(); this.labelHelp5 = new SmartX.SmartLabel(); this.labelHelp4 = new SmartX.SmartLabel(); this.labelHelp3 = new SmartX.SmartLabel(); this.labelHelp2 = new SmartX.SmartLabel(); this.labelHelp1 = new SmartX.SmartLabel(); - this.radioButtonPort78 = new SmartX.SmartRadioButton(); - this.radioButtonPort56 = new SmartX.SmartRadioButton(); - this.radioButtonPortNone = new SmartX.SmartRadioButton(); this.labelDelayTime1 = new SmartX.SmartLabel(); this.labelTitleDelayTime1 = new SmartX.SmartLabel(); this.labelDelayTime2 = new SmartX.SmartLabel(); this.labelTitleDelayTime2 = new SmartX.SmartLabel(); this.smartGroupBox1.SuspendLayout(); + this.panel1.SuspendLayout(); this.SuspendLayout(); // // smartGroupBox1 // this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.labelTitleHelp); + this.smartGroupBox1.Controls.Add(this.smartLabel8); + this.smartGroupBox1.Controls.Add(this.smartLabel7); + this.smartGroupBox1.Controls.Add(this.labelZeroZoneCount); + this.smartGroupBox1.Controls.Add(this.labelTitleZeroZoneCount); + this.smartGroupBox1.Controls.Add(this.labelTitleZeroZoneCycle); + this.smartGroupBox1.Controls.Add(this.labelTitleOutputPort); + this.smartGroupBox1.Controls.Add(this.labelTitleSetting); + this.smartGroupBox1.Controls.Add(this.labelZeroZoneCycle); + this.smartGroupBox1.Controls.Add(this.buttonItemNo); + this.smartGroupBox1.Controls.Add(this.panel1); this.smartGroupBox1.Controls.Add(this.labelHelp5); this.smartGroupBox1.Controls.Add(this.labelHelp4); this.smartGroupBox1.Controls.Add(this.labelHelp3); this.smartGroupBox1.Controls.Add(this.labelHelp2); this.smartGroupBox1.Controls.Add(this.labelHelp1); - this.smartGroupBox1.Controls.Add(this.radioButtonPort78); - this.smartGroupBox1.Controls.Add(this.radioButtonPort56); - this.smartGroupBox1.Controls.Add(this.radioButtonPortNone); this.smartGroupBox1.Controls.Add(this.labelDelayTime1); this.smartGroupBox1.Controls.Add(this.labelTitleDelayTime1); this.smartGroupBox1.Controls.Add(this.labelDelayTime2); @@ -75,6 +95,307 @@ this.smartGroupBox1.Text = "smartGroupBox1"; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // labelTitleHelp + // + this.labelTitleHelp.BackPictureBox1 = null; + this.labelTitleHelp.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleHelp.BorderColor = System.Drawing.Color.Black; + this.labelTitleHelp.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleHelp.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleHelp.ForeColor = System.Drawing.Color.White; + this.labelTitleHelp.InitVisible = true; + this.labelTitleHelp.LineSpacing = 0F; + this.labelTitleHelp.Location = new System.Drawing.Point(18, 311); + this.labelTitleHelp.Name = "labelTitleHelp"; + this.labelTitleHelp.Size = new System.Drawing.Size(82, 30); + this.labelTitleHelp.TabIndex = 196; + this.labelTitleHelp.Text = "도움말"; + this.labelTitleHelp.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleHelp.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleHelp.Wordwrap = false; + // + // smartLabel8 + // + this.smartLabel8.BackPictureBox1 = null; + this.smartLabel8.BackPictureBox2 = this.smartGroupBox1; + this.smartLabel8.BorderColor = System.Drawing.Color.Black; + this.smartLabel8.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.smartLabel8.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.smartLabel8.ForeColor = System.Drawing.Color.White; + this.smartLabel8.InitVisible = true; + this.smartLabel8.LineSpacing = 0F; + this.smartLabel8.Location = new System.Drawing.Point(633, 151); + this.smartLabel8.Name = "smartLabel8"; + this.smartLabel8.Size = new System.Drawing.Size(56, 26); + this.smartLabel8.TabIndex = 195; + this.smartLabel8.Text = "ea"; + this.smartLabel8.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.smartLabel8.TextVAlign = SmartX.SmartLabel.TextVerAlign.Bottom; + this.smartLabel8.Wordwrap = false; + // + // smartLabel7 + // + this.smartLabel7.BackPictureBox1 = null; + this.smartLabel7.BackPictureBox2 = this.smartGroupBox1; + this.smartLabel7.BorderColor = System.Drawing.Color.Black; + this.smartLabel7.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.smartLabel7.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.smartLabel7.ForeColor = System.Drawing.Color.White; + this.smartLabel7.InitVisible = true; + this.smartLabel7.LineSpacing = 0F; + this.smartLabel7.Location = new System.Drawing.Point(633, 113); + this.smartLabel7.Name = "smartLabel7"; + this.smartLabel7.Size = new System.Drawing.Size(56, 26); + this.smartLabel7.TabIndex = 194; + this.smartLabel7.Text = "sec"; + this.smartLabel7.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.smartLabel7.TextVAlign = SmartX.SmartLabel.TextVerAlign.Bottom; + this.smartLabel7.Wordwrap = false; + // + // labelZeroZoneCount + // + this.labelZeroZoneCount.BackColor = System.Drawing.Color.Black; + this.labelZeroZoneCount.BackPictureBox = null; + this.labelZeroZoneCount.BackPictureBox1 = null; + this.labelZeroZoneCount.BackPictureBox2 = null; + this.labelZeroZoneCount.BorderColor = System.Drawing.Color.Black; + this.labelZeroZoneCount.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelZeroZoneCount.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold); + this.labelZeroZoneCount.ForeColor = System.Drawing.Color.White; + this.labelZeroZoneCount.InitVisible = true; + this.labelZeroZoneCount.LineSpacing = 0F; + this.labelZeroZoneCount.Location = new System.Drawing.Point(477, 151); + this.labelZeroZoneCount.Name = "labelZeroZoneCount"; + this.labelZeroZoneCount.Size = new System.Drawing.Size(150, 30); + this.labelZeroZoneCount.TabIndex = 193; + this.labelZeroZoneCount.Text = "100"; + this.labelZeroZoneCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelZeroZoneCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelZeroZoneCount.Wordwrap = false; + this.labelZeroZoneCount.Click += new System.EventHandler(this.labelZeroZoneCount_Click); + // + // labelTitleZeroZoneCount + // + this.labelTitleZeroZoneCount.BackPictureBox1 = null; + this.labelTitleZeroZoneCount.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleZeroZoneCount.BorderColor = System.Drawing.Color.Black; + this.labelTitleZeroZoneCount.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleZeroZoneCount.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleZeroZoneCount.ForeColor = System.Drawing.Color.White; + this.labelTitleZeroZoneCount.InitVisible = true; + this.labelTitleZeroZoneCount.LineSpacing = 0F; + this.labelTitleZeroZoneCount.Location = new System.Drawing.Point(363, 151); + this.labelTitleZeroZoneCount.Name = "labelTitleZeroZoneCount"; + this.labelTitleZeroZoneCount.Size = new System.Drawing.Size(104, 30); + this.labelTitleZeroZoneCount.TabIndex = 192; + this.labelTitleZeroZoneCount.Text = "영점실행개수"; + this.labelTitleZeroZoneCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleZeroZoneCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleZeroZoneCount.Wordwrap = false; + // + // labelTitleZeroZoneCycle + // + this.labelTitleZeroZoneCycle.BackPictureBox1 = null; + this.labelTitleZeroZoneCycle.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleZeroZoneCycle.BorderColor = System.Drawing.Color.Black; + this.labelTitleZeroZoneCycle.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleZeroZoneCycle.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleZeroZoneCycle.ForeColor = System.Drawing.Color.White; + this.labelTitleZeroZoneCycle.InitVisible = true; + this.labelTitleZeroZoneCycle.LineSpacing = 0F; + this.labelTitleZeroZoneCycle.Location = new System.Drawing.Point(363, 113); + this.labelTitleZeroZoneCycle.Name = "labelTitleZeroZoneCycle"; + this.labelTitleZeroZoneCycle.Size = new System.Drawing.Size(104, 30); + this.labelTitleZeroZoneCycle.TabIndex = 191; + this.labelTitleZeroZoneCycle.Text = "영점실행주기"; + this.labelTitleZeroZoneCycle.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleZeroZoneCycle.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleZeroZoneCycle.Wordwrap = false; + // + // labelTitleOutputPort + // + this.labelTitleOutputPort.BackPictureBox1 = null; + this.labelTitleOutputPort.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleOutputPort.BorderColor = System.Drawing.Color.Black; + this.labelTitleOutputPort.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleOutputPort.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleOutputPort.ForeColor = System.Drawing.Color.White; + this.labelTitleOutputPort.InitVisible = true; + this.labelTitleOutputPort.LineSpacing = 0F; + this.labelTitleOutputPort.Location = new System.Drawing.Point(363, 49); + this.labelTitleOutputPort.Name = "labelTitleOutputPort"; + this.labelTitleOutputPort.Size = new System.Drawing.Size(104, 30); + this.labelTitleOutputPort.TabIndex = 190; + this.labelTitleOutputPort.Text = "출력Port"; + this.labelTitleOutputPort.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleOutputPort.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleOutputPort.Wordwrap = false; + // + // labelTitleSetting + // + this.labelTitleSetting.BackPictureBox1 = null; + this.labelTitleSetting.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleSetting.BorderColor = System.Drawing.Color.Black; + this.labelTitleSetting.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleSetting.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleSetting.ForeColor = System.Drawing.Color.White; + this.labelTitleSetting.InitVisible = true; + this.labelTitleSetting.LineSpacing = 0F; + this.labelTitleSetting.Location = new System.Drawing.Point(18, 114); + this.labelTitleSetting.Name = "labelTitleSetting"; + this.labelTitleSetting.Size = new System.Drawing.Size(104, 30); + this.labelTitleSetting.TabIndex = 188; + this.labelTitleSetting.Text = "품목별 설정"; + this.labelTitleSetting.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleSetting.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleSetting.Wordwrap = false; + // + // labelZeroZoneCycle + // + this.labelZeroZoneCycle.BackColor = System.Drawing.Color.Black; + this.labelZeroZoneCycle.BackPictureBox = null; + this.labelZeroZoneCycle.BackPictureBox1 = null; + this.labelZeroZoneCycle.BackPictureBox2 = null; + this.labelZeroZoneCycle.BorderColor = System.Drawing.Color.Black; + this.labelZeroZoneCycle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelZeroZoneCycle.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold); + this.labelZeroZoneCycle.ForeColor = System.Drawing.Color.White; + this.labelZeroZoneCycle.InitVisible = true; + this.labelZeroZoneCycle.LineSpacing = 0F; + this.labelZeroZoneCycle.Location = new System.Drawing.Point(477, 113); + this.labelZeroZoneCycle.Name = "labelZeroZoneCycle"; + this.labelZeroZoneCycle.Size = new System.Drawing.Size(150, 30); + this.labelZeroZoneCycle.TabIndex = 187; + this.labelZeroZoneCycle.Text = "100"; + this.labelZeroZoneCycle.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelZeroZoneCycle.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelZeroZoneCycle.Wordwrap = false; + this.labelZeroZoneCycle.Click += new System.EventHandler(this.labelZeroZoneCycle_Click); + // + // buttonItemNo + // + this.buttonItemNo.BackPictureBox = null; + this.buttonItemNo.BackPictureBox1 = null; + this.buttonItemNo.BackPictureBox2 = null; + this.buttonItemNo.ButtonColor = System.Drawing.Color.Gray; + this.buttonItemNo.ButtonImageAutoSize = true; + this.buttonItemNo.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonItemNo.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonItemNo.DisableImage"))); + this.buttonItemNo.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonItemNo.DownImage"))); + this.buttonItemNo.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold); + this.buttonItemNo.GroupID = 0; + this.buttonItemNo.InitVisible = true; + this.buttonItemNo.Location = new System.Drawing.Point(15, 15); + this.buttonItemNo.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonItemNo.Name = "buttonItemNo"; + this.buttonItemNo.NestedClickEventPrevent = false; + this.buttonItemNo.OutlinePixel = 1; + this.buttonItemNo.RepeatInterval = 200; + this.buttonItemNo.RepeatIntervalAccelerate = null; + this.buttonItemNo.SafeInterval = 200; + this.buttonItemNo.Size = new System.Drawing.Size(335, 45); + this.buttonItemNo.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonItemNo.TabIndex = 182; + this.buttonItemNo.Text = "100"; + this.buttonItemNo.TextColor = System.Drawing.Color.White; + this.buttonItemNo.TextDownColor = System.Drawing.Color.White; + this.buttonItemNo.TextHAlign = SmartX.SmartButton.TextHorAlign.Right; + this.buttonItemNo.TextLocation = new System.Drawing.Point(-20, 0); + this.buttonItemNo.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonItemNo.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonItemNo.UpImage"))); + this.buttonItemNo.Click += new System.EventHandler(this.buttonItemNo_Click); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.Black; + this.panel1.Controls.Add(this.radioButtonPortNone); + this.panel1.Controls.Add(this.radioButtonPort56); + this.panel1.Controls.Add(this.radioButtonPort78); + this.panel1.Location = new System.Drawing.Point(477, 18); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(212, 89); + // + // radioButtonPortNone + // + this.radioButtonPortNone.BackColor = System.Drawing.Color.Black; + this.radioButtonPortNone.BackPictureBox = null; + this.radioButtonPortNone.BackPictureBox1 = null; + this.radioButtonPortNone.BackPictureBox2 = null; + this.radioButtonPortNone.Checked = false; + this.radioButtonPortNone.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.radioButtonPortNone.ForeColor = System.Drawing.Color.White; + this.radioButtonPortNone.GroupID = 0; + this.radioButtonPortNone.ImageCheckRadioButton = null; + this.radioButtonPortNone.ImageUnCheckRadioButton = null; + this.radioButtonPortNone.InitVisible = true; + this.radioButtonPortNone.Location = new System.Drawing.Point(3, 4); + this.radioButtonPortNone.Name = "radioButtonPortNone"; + this.radioButtonPortNone.OutputOnly = false; + this.radioButtonPortNone.RadioBackColor = System.Drawing.Color.White; + this.radioButtonPortNone.RadioCheckColor = System.Drawing.Color.Green; + this.radioButtonPortNone.RadioForeColor = System.Drawing.Color.Black; + this.radioButtonPortNone.RadioSymbolSize = 14; + this.radioButtonPortNone.Shadow = false; + this.radioButtonPortNone.Size = new System.Drawing.Size(200, 23); + this.radioButtonPortNone.TabIndex = 138; + this.radioButtonPortNone.Text = "None"; + this.radioButtonPortNone.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; + this.radioButtonPortNone.Click += new System.EventHandler(this.radioButtonPort_Click); + // + // radioButtonPort56 + // + this.radioButtonPort56.BackColor = System.Drawing.Color.Black; + this.radioButtonPort56.BackPictureBox = null; + this.radioButtonPort56.BackPictureBox1 = null; + this.radioButtonPort56.BackPictureBox2 = null; + this.radioButtonPort56.Checked = false; + this.radioButtonPort56.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.radioButtonPort56.ForeColor = System.Drawing.Color.White; + this.radioButtonPort56.GroupID = 0; + this.radioButtonPort56.ImageCheckRadioButton = null; + this.radioButtonPort56.ImageUnCheckRadioButton = null; + this.radioButtonPort56.InitVisible = true; + this.radioButtonPort56.Location = new System.Drawing.Point(3, 33); + this.radioButtonPort56.Name = "radioButtonPort56"; + this.radioButtonPort56.OutputOnly = false; + this.radioButtonPort56.RadioBackColor = System.Drawing.Color.White; + this.radioButtonPort56.RadioCheckColor = System.Drawing.Color.Green; + this.radioButtonPort56.RadioForeColor = System.Drawing.Color.Black; + this.radioButtonPort56.RadioSymbolSize = 14; + this.radioButtonPort56.Shadow = false; + this.radioButtonPort56.Size = new System.Drawing.Size(200, 23); + this.radioButtonPort56.TabIndex = 139; + this.radioButtonPort56.Text = "Output Port 5,6"; + this.radioButtonPort56.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; + this.radioButtonPort56.Click += new System.EventHandler(this.radioButtonPort_Click); + // + // radioButtonPort78 + // + this.radioButtonPort78.BackColor = System.Drawing.Color.Black; + this.radioButtonPort78.BackPictureBox = null; + this.radioButtonPort78.BackPictureBox1 = null; + this.radioButtonPort78.BackPictureBox2 = null; + this.radioButtonPort78.Checked = false; + this.radioButtonPort78.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.radioButtonPort78.ForeColor = System.Drawing.Color.White; + this.radioButtonPort78.GroupID = 0; + this.radioButtonPort78.ImageCheckRadioButton = null; + this.radioButtonPort78.ImageUnCheckRadioButton = null; + this.radioButtonPort78.InitVisible = true; + this.radioButtonPort78.Location = new System.Drawing.Point(3, 62); + this.radioButtonPort78.Name = "radioButtonPort78"; + this.radioButtonPort78.OutputOnly = false; + this.radioButtonPort78.RadioBackColor = System.Drawing.Color.White; + this.radioButtonPort78.RadioCheckColor = System.Drawing.Color.Green; + this.radioButtonPort78.RadioForeColor = System.Drawing.Color.Black; + this.radioButtonPort78.RadioSymbolSize = 14; + this.radioButtonPort78.Shadow = false; + this.radioButtonPort78.Size = new System.Drawing.Size(200, 23); + this.radioButtonPort78.TabIndex = 140; + this.radioButtonPort78.Text = "Output Port 7,8"; + this.radioButtonPort78.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; + this.radioButtonPort78.Click += new System.EventHandler(this.radioButtonPort_Click); + // // labelHelp5 // this.labelHelp5.BackPictureBox1 = null; @@ -85,7 +406,7 @@ this.labelHelp5.ForeColor = System.Drawing.Color.White; this.labelHelp5.InitVisible = true; this.labelHelp5.LineSpacing = 0F; - this.labelHelp5.Location = new System.Drawing.Point(103, 430); + this.labelHelp5.Location = new System.Drawing.Point(103, 431); this.labelHelp5.Name = "labelHelp5"; this.labelHelp5.Size = new System.Drawing.Size(585, 15); this.labelHelp5.TabIndex = 145; @@ -104,7 +425,7 @@ this.labelHelp4.ForeColor = System.Drawing.Color.White; this.labelHelp4.InitVisible = true; this.labelHelp4.LineSpacing = 0F; - this.labelHelp4.Location = new System.Drawing.Point(103, 409); + this.labelHelp4.Location = new System.Drawing.Point(103, 410); this.labelHelp4.Name = "labelHelp4"; this.labelHelp4.Size = new System.Drawing.Size(585, 15); this.labelHelp4.TabIndex = 144; @@ -123,7 +444,7 @@ this.labelHelp3.ForeColor = System.Drawing.Color.White; this.labelHelp3.InitVisible = true; this.labelHelp3.LineSpacing = 0F; - this.labelHelp3.Location = new System.Drawing.Point(103, 388); + this.labelHelp3.Location = new System.Drawing.Point(103, 389); this.labelHelp3.Name = "labelHelp3"; this.labelHelp3.Size = new System.Drawing.Size(585, 15); this.labelHelp3.TabIndex = 143; @@ -142,7 +463,7 @@ this.labelHelp2.ForeColor = System.Drawing.Color.White; this.labelHelp2.InitVisible = true; this.labelHelp2.LineSpacing = 0F; - this.labelHelp2.Location = new System.Drawing.Point(103, 367); + this.labelHelp2.Location = new System.Drawing.Point(103, 368); this.labelHelp2.Name = "labelHelp2"; this.labelHelp2.Size = new System.Drawing.Size(585, 15); this.labelHelp2.TabIndex = 142; @@ -161,7 +482,7 @@ this.labelHelp1.ForeColor = System.Drawing.Color.White; this.labelHelp1.InitVisible = true; this.labelHelp1.LineSpacing = 0F; - this.labelHelp1.Location = new System.Drawing.Point(103, 346); + this.labelHelp1.Location = new System.Drawing.Point(103, 347); this.labelHelp1.Name = "labelHelp1"; this.labelHelp1.Size = new System.Drawing.Size(585, 15); this.labelHelp1.TabIndex = 141; @@ -170,81 +491,6 @@ this.labelHelp1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelHelp1.Wordwrap = false; // - // radioButtonPort78 - // - this.radioButtonPort78.BackPictureBox1 = null; - this.radioButtonPort78.BackPictureBox2 = this.smartGroupBox1; - this.radioButtonPort78.Checked = false; - this.radioButtonPort78.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); - this.radioButtonPort78.ForeColor = System.Drawing.Color.White; - this.radioButtonPort78.GroupID = 0; - this.radioButtonPort78.ImageCheckRadioButton = null; - this.radioButtonPort78.ImageUnCheckRadioButton = null; - this.radioButtonPort78.InitVisible = true; - this.radioButtonPort78.Location = new System.Drawing.Point(130, 113); - this.radioButtonPort78.Name = "radioButtonPort78"; - this.radioButtonPort78.OutputOnly = false; - this.radioButtonPort78.RadioBackColor = System.Drawing.Color.White; - this.radioButtonPort78.RadioCheckColor = System.Drawing.Color.Green; - this.radioButtonPort78.RadioForeColor = System.Drawing.Color.Black; - this.radioButtonPort78.RadioSymbolSize = 14; - this.radioButtonPort78.Shadow = false; - this.radioButtonPort78.Size = new System.Drawing.Size(200, 30); - this.radioButtonPort78.TabIndex = 140; - this.radioButtonPort78.Text = "Output Port 7,8"; - this.radioButtonPort78.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; - this.radioButtonPort78.Click += new System.EventHandler(this.radioButtonPort_Click); - // - // radioButtonPort56 - // - this.radioButtonPort56.BackPictureBox1 = null; - this.radioButtonPort56.BackPictureBox2 = this.smartGroupBox1; - this.radioButtonPort56.Checked = false; - this.radioButtonPort56.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); - this.radioButtonPort56.ForeColor = System.Drawing.Color.White; - this.radioButtonPort56.GroupID = 0; - this.radioButtonPort56.ImageCheckRadioButton = null; - this.radioButtonPort56.ImageUnCheckRadioButton = null; - this.radioButtonPort56.InitVisible = true; - this.radioButtonPort56.Location = new System.Drawing.Point(130, 77); - this.radioButtonPort56.Name = "radioButtonPort56"; - this.radioButtonPort56.OutputOnly = false; - this.radioButtonPort56.RadioBackColor = System.Drawing.Color.White; - this.radioButtonPort56.RadioCheckColor = System.Drawing.Color.Green; - this.radioButtonPort56.RadioForeColor = System.Drawing.Color.Black; - this.radioButtonPort56.RadioSymbolSize = 14; - this.radioButtonPort56.Shadow = false; - this.radioButtonPort56.Size = new System.Drawing.Size(200, 30); - this.radioButtonPort56.TabIndex = 139; - this.radioButtonPort56.Text = "Output Port 5,6"; - this.radioButtonPort56.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; - this.radioButtonPort56.Click += new System.EventHandler(this.radioButtonPort_Click); - // - // radioButtonPortNone - // - this.radioButtonPortNone.BackPictureBox1 = null; - this.radioButtonPortNone.BackPictureBox2 = this.smartGroupBox1; - this.radioButtonPortNone.Checked = false; - this.radioButtonPortNone.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); - this.radioButtonPortNone.ForeColor = System.Drawing.Color.White; - this.radioButtonPortNone.GroupID = 0; - this.radioButtonPortNone.ImageCheckRadioButton = null; - this.radioButtonPortNone.ImageUnCheckRadioButton = null; - this.radioButtonPortNone.InitVisible = true; - this.radioButtonPortNone.Location = new System.Drawing.Point(130, 41); - this.radioButtonPortNone.Name = "radioButtonPortNone"; - this.radioButtonPortNone.OutputOnly = false; - this.radioButtonPortNone.RadioBackColor = System.Drawing.Color.White; - this.radioButtonPortNone.RadioCheckColor = System.Drawing.Color.Green; - this.radioButtonPortNone.RadioForeColor = System.Drawing.Color.Black; - this.radioButtonPortNone.RadioSymbolSize = 14; - this.radioButtonPortNone.Shadow = false; - this.radioButtonPortNone.Size = new System.Drawing.Size(200, 30); - this.radioButtonPortNone.TabIndex = 138; - this.radioButtonPortNone.Text = "None"; - this.radioButtonPortNone.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; - this.radioButtonPortNone.Click += new System.EventHandler(this.radioButtonPort_Click); - // // labelDelayTime1 // this.labelDelayTime1.BackColor = System.Drawing.SystemColors.Window; @@ -256,9 +502,9 @@ this.labelDelayTime1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelDelayTime1.InitVisible = true; this.labelDelayTime1.LineSpacing = 0F; - this.labelDelayTime1.Location = new System.Drawing.Point(608, 60); + this.labelDelayTime1.Location = new System.Drawing.Point(272, 97); this.labelDelayTime1.Name = "labelDelayTime1"; - this.labelDelayTime1.Size = new System.Drawing.Size(80, 30); + this.labelDelayTime1.Size = new System.Drawing.Size(70, 30); this.labelDelayTime1.TabIndex = 137; this.labelDelayTime1.Text = "100"; this.labelDelayTime1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; @@ -272,13 +518,13 @@ this.labelTitleDelayTime1.BackPictureBox2 = this.smartGroupBox1; this.labelTitleDelayTime1.BorderColor = System.Drawing.Color.Black; this.labelTitleDelayTime1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleDelayTime1.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.labelTitleDelayTime1.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); this.labelTitleDelayTime1.ForeColor = System.Drawing.Color.White; this.labelTitleDelayTime1.InitVisible = true; this.labelTitleDelayTime1.LineSpacing = 0F; - this.labelTitleDelayTime1.Location = new System.Drawing.Point(452, 60); + this.labelTitleDelayTime1.Location = new System.Drawing.Point(130, 97); this.labelTitleDelayTime1.Name = "labelTitleDelayTime1"; - this.labelTitleDelayTime1.Size = new System.Drawing.Size(150, 30); + this.labelTitleDelayTime1.Size = new System.Drawing.Size(136, 30); this.labelTitleDelayTime1.TabIndex = 136; this.labelTitleDelayTime1.Text = "지연시간1"; this.labelTitleDelayTime1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -296,9 +542,9 @@ this.labelDelayTime2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelDelayTime2.InitVisible = true; this.labelDelayTime2.LineSpacing = 0F; - this.labelDelayTime2.Location = new System.Drawing.Point(608, 96); + this.labelDelayTime2.Location = new System.Drawing.Point(272, 133); this.labelDelayTime2.Name = "labelDelayTime2"; - this.labelDelayTime2.Size = new System.Drawing.Size(80, 30); + this.labelDelayTime2.Size = new System.Drawing.Size(70, 30); this.labelDelayTime2.TabIndex = 135; this.labelDelayTime2.Text = "100"; this.labelDelayTime2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; @@ -312,13 +558,13 @@ this.labelTitleDelayTime2.BackPictureBox2 = this.smartGroupBox1; this.labelTitleDelayTime2.BorderColor = System.Drawing.Color.Black; this.labelTitleDelayTime2.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleDelayTime2.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.labelTitleDelayTime2.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); this.labelTitleDelayTime2.ForeColor = System.Drawing.Color.White; this.labelTitleDelayTime2.InitVisible = true; this.labelTitleDelayTime2.LineSpacing = 0F; - this.labelTitleDelayTime2.Location = new System.Drawing.Point(452, 96); + this.labelTitleDelayTime2.Location = new System.Drawing.Point(130, 133); this.labelTitleDelayTime2.Name = "labelTitleDelayTime2"; - this.labelTitleDelayTime2.Size = new System.Drawing.Size(150, 30); + this.labelTitleDelayTime2.Size = new System.Drawing.Size(136, 30); this.labelTitleDelayTime2.TabIndex = 134; this.labelTitleDelayTime2.Text = "지연시간2"; this.labelTitleDelayTime2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -333,6 +579,7 @@ this.Name = "ControlConfiOptionBoard2"; this.Size = new System.Drawing.Size(710, 470); this.smartGroupBox1.ResumeLayout(false); + this.panel1.ResumeLayout(false); this.ResumeLayout(false); } @@ -352,5 +599,16 @@ private SmartX.SmartLabel labelHelp3; private SmartX.SmartLabel labelHelp2; private SmartX.SmartLabel labelHelp1; + private System.Windows.Forms.Panel panel1; + private SmartX.SmartButton buttonItemNo; + public SmartX.SmartLabel labelZeroZoneCycle; + private SmartX.SmartLabel labelTitleSetting; + private SmartX.SmartLabel labelTitleZeroZoneCount; + private SmartX.SmartLabel labelTitleZeroZoneCycle; + private SmartX.SmartLabel labelTitleOutputPort; + private SmartX.SmartLabel smartLabel7; + public SmartX.SmartLabel labelZeroZoneCount; + private SmartX.SmartLabel labelTitleHelp; + private SmartX.SmartLabel smartLabel8; } } diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs index f3981d8..d99b8e3 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs @@ -19,7 +19,7 @@ namespace ITC81DB_0H.Controls #region Field private FormMenu m_ParentForm; #endregion - + #region Constructor public ControlConfiOptionBoard2(FormMenu parent) { @@ -29,7 +29,7 @@ namespace ITC81DB_0H.Controls this.InitializeDesign(); this.DefaultSetting(); - } + } #endregion #region Property @@ -37,7 +37,7 @@ namespace ITC81DB_0H.Controls { get { return this.m_ParentForm; } private set { this.m_ParentForm = value; } - } + } #endregion #region Method @@ -47,8 +47,6 @@ namespace ITC81DB_0H.Controls if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.English) { - this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.engBackgroundDispenser)); - this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "Delay 1 time"; this.labelTitleDelayTime2.Text = "Delay 2 time"; @@ -57,6 +55,10 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Text = "Output port 5, 6"; this.radioButtonPort78.Text = "Output port 7, 8"; + this.labelTitleOutputPort.Text = "Output Port"; + this.labelTitleZeroZoneCycle.Text = "Zero Zone Cycle"; + this.labelTitleZeroZoneCount.Text = "Zero Zone Count"; + this.labelHelp1.Text = "1. A : The object enters."; this.labelHelp2.Text = "2. B : The object enters into the range of dispenser sensor."; this.labelHelp3.Text = "3. C : After 'Delay 1 time', stick 'Dispenser 1' out."; @@ -65,8 +67,6 @@ namespace ITC81DB_0H.Controls } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) { - this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.chnBackgroundDispenser)); - this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "延迟1时间"; this.labelTitleDelayTime2.Text = "延迟2时间"; @@ -75,6 +75,10 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Text = "输出 5, 6"; this.radioButtonPort78.Text = "输出 7, 8"; + this.labelTitleOutputPort.Text = "输出端口"; + this.labelTitleZeroZoneCycle.Text = "零执行周期"; + this.labelTitleZeroZoneCount.Text = "零游程次数"; + this.labelHelp1.Text = "1. A : 被测量物体进入"; this.labelHelp2.Text = "2. B : 被测量物体进入感应器检测范围"; this.labelHelp3.Text = "3. C : 延迟1时间后,分配器1上升"; @@ -86,8 +90,6 @@ namespace ITC81DB_0H.Controls } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) { - this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.rusBackgroundDispenser)); - this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 10, FontStyle.Bold); this.labelTitleDelayTime1.Text = "Время задержки 1"; this.labelTitleDelayTime2.Text = "Время задержки 2"; @@ -96,6 +98,10 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Text = "Порт выхода 5, 6"; this.radioButtonPort78.Text = "Порт выхода 7, 8"; + this.labelTitleOutputPort.Text = "Выходной порт"; + this.labelTitleZeroZoneCycle.Text = "Нулевой цикл"; + this.labelTitleZeroZoneCount.Text = "Нулевой счет"; + this.labelHelp1.Text = "1. A : Входит измеряемый объект"; this.labelHelp2.Text = "2. B : Объект входит в зону действия датчика дозатора"; this.labelHelp3.Text = "3. C : После «Задержки 1» отключите «Вход дозатора1»"; @@ -104,8 +110,6 @@ namespace ITC81DB_0H.Controls } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) { - this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.gerBackgroundDispenser)); - this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "Vezögerung 1"; this.labelTitleDelayTime2.Text = "Vezögerung 2"; @@ -114,16 +118,38 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Text = "Ausgangsport 5, 6"; this.radioButtonPort78.Text = "Ausgangsport 7, 8"; + this.labelTitleOutputPort.Text = "Ausgangsport"; + this.labelTitleZeroZoneCycle.Text = "Nullzonenzyklus"; + this.labelTitleZeroZoneCount.Text = "Nullzonenanzahl"; + this.labelHelp1.Text = "1. A : Das Objekt tritt ein."; this.labelHelp2.Text = "2. B : Das Objekt gelangt in den Bereich des Spenders sensors."; this.labelHelp3.Text = "3. C : Nach 'Verzögerung 1' stecken Sie 'Dispenser 1' heraus."; this.labelHelp4.Text = "4. D : Gleichzeitig senkt 'Dispenser 2' ab."; this.labelHelp5.Text = "5. Nach 2 Stunden Verspätung kehren wir wieder in den A-Zustand zurück."; } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + { + this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 10, FontStyle.Bold); + this.labelTitleDelayTime1.Text = "1 Tiempo de retardo"; + this.labelTitleDelayTime2.Text = "2 Tiempo de retardo"; + + this.radioButtonPortNone.Text = "Ninguna"; + this.radioButtonPort56.Text = "Puerto de salida 5, 6"; + this.radioButtonPort78.Text = "Puerto de salida 7, 8"; + + this.labelTitleOutputPort.Text = "Puerto de salida"; + this.labelTitleZeroZoneCycle.Text = "Ciclo zona cero"; + this.labelTitleZeroZoneCount.Text = "Recuento de cero"; + + this.labelHelp1.Text = "1. A : El objeto entra."; + this.labelHelp2.Text = "2. B : El objeto entra en el rango de sensor de dispensador."; + this.labelHelp3.Text = "3. C : Después de 'Tiempo de retraso 1', Stick 'Dispenser 1' Out"; + this.labelHelp4.Text = "4. D : Al mismo tiempo, 'Dispenser 2' desciende."; + this.labelHelp5.Text = "5. Después de 'retraso 2' tiempo, vuelve a un."; + } else { - this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.korBackgroundDispenser)); - this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "지연시간 1"; this.labelTitleDelayTime2.Text = "지연시간 2"; @@ -132,6 +158,10 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Text = "Output port 5, 6"; this.radioButtonPort78.Text = "Output port 7, 8"; + this.labelTitleOutputPort.Text = "출력 Port"; + this.labelTitleZeroZoneCycle.Text = "영점실행주기"; + this.labelTitleZeroZoneCount.Text = "영점실행개수"; + this.labelHelp1.Text = "1. A : 피계량물이 진입한다."; this.labelHelp2.Text = "2. B : 피계량물이 Dispenser sensor 범위 안에 진입한다."; this.labelHelp3.Text = "3. C : '지연시간1'만큼 지난 후, Dispenser1이 올라온다."; @@ -141,27 +171,62 @@ namespace ITC81DB_0H.Controls } private void DefaultSetting() { - this.UpdateDisplay(this.ParentForm.ParentForm.CurrentSystemParameter2); + this.UpdateCurrentProductDisplay(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.CurrentSystemParameter1, this.ParentForm.ParentForm.CurrentSystemParameter2); } - private void UpdateDisplay(SystemParameter2 parameter) + public void UpdateCurrentProductDisplay(ProductItem product, SystemParameter1 parameter1, SystemParameter2 parameter2) + { + string value = ""; + + value = product.Number.ToString(); + if (this.buttonItemNo.Text != value) + this.buttonItemNo.Text = value; + + value = parameter2.OPT2ZeroZoneCycle; + if (this.labelZeroZoneCycle.Text != value) + this.labelZeroZoneCycle.Text = value; + + value = parameter2.OPT2ZeroZoneCount; + if (this.labelZeroZoneCount.Text != value) + this.labelZeroZoneCount.Text = value; + + this.UpdateDelayTime(product); + this.UpdateDisplay(parameter1, parameter2); + } + private void UpdateDelayTime(ProductItem product) + { + string sValue = ""; + + sValue = product.DispenserDelayTime1; + if (this.labelDelayTime1.Text != sValue) + this.labelDelayTime1.Text = sValue; + + sValue = product.DispenserDelayTime2; + if (this.labelDelayTime2.Text != sValue) + this.labelDelayTime2.Text = sValue; + } + private void UpdateDisplay(SystemParameter1 parameter1, SystemParameter2 parameter2) { int iValue = 0; string sValue = ""; try { - iValue = int.Parse(parameter.OPT2Port); + iValue = int.Parse(parameter2.OPT2Port); } - catch + catch { iValue = 0; } + this.radioButtonPortNone.Click -= new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort56.Click -= new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort78.Click -= new EventHandler(this.radioButtonPort_Click); + if (iValue == 1) { this.radioButtonPortNone.Checked = false; - this.radioButtonPort56.Checked = true; this.radioButtonPort78.Checked = false; + this.radioButtonPort56.Checked = true; } else if (iValue == 2) { @@ -175,26 +240,55 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Checked = false; this.radioButtonPort78.Checked = false; } - - sValue = parameter.OPT2DelayTime1; - if (this.labelDelayTime1.Text != sValue) - this.labelDelayTime1.Text = sValue; - - sValue = parameter.OPT2DelayTime2; - if (this.labelDelayTime2.Text != sValue) - this.labelDelayTime2.Text = sValue; + this.radioButtonPortNone.Click += new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort56.Click += new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort78.Click += new EventHandler(this.radioButtonPort_Click); } public void DisplayRefresh(SystemStatus status) { - this.UpdateDisplay(this.ParentForm.ParentForm.CurrentSystemParameter2); + this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplay = Define.E_DisplayStore.ConfiOptionBoard2; + + // 로그 + if (this.ParentForm.ParentForm.IsCommunicationLogOpen == true) + this.ParentForm.ParentForm.smartFileCommunicationLog.WriteString(string.Format("Current Product ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, this.ParentForm.ParentForm.SystemConfig1.ProductNumber.ToString())); + + this.UpdateCurrentProductDisplay(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.CurrentSystemParameter1, this.ParentForm.ParentForm.CurrentSystemParameter2); } #endregion #region Event Handler + private void buttonItemNo_Click(object sender, EventArgs e) + { + string message = ""; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.buttonItemNo.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.doubleValue < 1 || myKeyPad.doubleValue > this.ParentForm.ParentForm.ProductCount) + { + // 입력범위를 확인하세요 + message = string.Format("1 ~ {0}", this.ParentForm.ParentForm.ProductCount); + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language, message); + myMsg.ShowDialog(); + } + else + { + this.buttonItemNo.Text = myKeyPad.StringValue; + + this.buttonItemNo.Text = "**"; + this.ParentForm.ParentForm.TransferProductParameter(myKeyPad.IntValue); + } + } + } + private void labelDelayTime1_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentProductItem.DispenserDelayTime1; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelDelayTime1.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -210,17 +304,22 @@ namespace ITC81DB_0H.Controls this.labelDelayTime1.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelDelayTime1.Text); - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2DelayTime1 = myKeyPad.StringValue; + after = this.ParentForm.ParentForm.CurrentProductItem.DispenserDelayTime1 = myKeyPad.StringValue; - this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); - this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT2DelayTime1, value); + this.ParentForm.ParentForm.SaveProductFile(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT2Delay1, "", before, after); } } } - private void labelDelayTime2_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentProductItem.DispenserDelayTime2; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelDelayTime2.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -236,10 +335,12 @@ namespace ITC81DB_0H.Controls this.labelDelayTime2.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelDelayTime2.Text); - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2DelayTime2 = myKeyPad.StringValue; + after = this.ParentForm.ParentForm.CurrentProductItem.DispenserDelayTime2 = myKeyPad.StringValue; - this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); - this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT2DelayTime2, value); + this.ParentForm.ParentForm.SaveProductFile(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT2Delay2, "", before, after); } } } @@ -247,7 +348,13 @@ namespace ITC81DB_0H.Controls private void radioButtonPort_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2Port; + + this.radioButtonPortNone.Click -= new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort56.Click -= new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort78.Click -= new EventHandler(this.radioButtonPort_Click); if (this.radioButtonPortNone.Checked == true) { value = "0000"; @@ -266,10 +373,79 @@ namespace ITC81DB_0H.Controls this.radioButtonPortNone.Checked = false; this.radioButtonPort56.Checked = false; } + this.radioButtonPortNone.Click += new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort56.Click += new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort78.Click += new EventHandler(this.radioButtonPort_Click); - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2Port = value; + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2Port = value; this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT2Port, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT2Port, "", before, after); + } + + private void labelZeroZoneCycle_Click(object sender, EventArgs e) + { + string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2ZeroZoneCycle; + + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelZeroZoneCycle.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.doubleValue < 0 || myKeyPad.doubleValue > 9999) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } + else + { + this.labelZeroZoneCycle.Text = myKeyPad.StringValue; + + value = Helper.StringZeroFillDigits4(this.labelZeroZoneCycle.Text); + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2ZeroZoneCycle = myKeyPad.StringValue; + this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.SubBoardAll, CommunicationAddress.OPT2ZeroZoneCycle, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT2ZeroCycle, "", before, after); + } + } + } + private void labelZeroZoneCount_Click(object sender, EventArgs e) + { + string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2ZeroZoneCount; + + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelZeroZoneCount.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.doubleValue < 0 || myKeyPad.doubleValue > 9999) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } + else + { + this.labelZeroZoneCount.Text = myKeyPad.StringValue; + + value = Helper.StringZeroFillDigits4(this.labelZeroZoneCount.Text); + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2ZeroZoneCount = myKeyPad.StringValue; + this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.SubBoardAll, CommunicationAddress.OPT2ZeroZoneCount, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT2ZeroCount, "", before, after); + } + } } #endregion } diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx index 2789724..51d29b0 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx @@ -118,6 +118,257 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + PwiLiCKz1c8RAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAU8AAAAtCAIAAACh5H5AAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH + DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp + bGUAAEjHnZZ3VFTXFofPvXd6oc0w0hl6ky4wgPQuIB0EURhmBhjKAMMMTWyIqEBEEREBRZCggAGjoUis + iGIhKKhgD0gQUGIwiqioZEbWSnx5ee/l5ffHvd/aZ+9z99l7n7UuACRPHy4vBZYCIJkn4Ad6ONNXhUfQ + sf0ABniAAaYAMFnpqb5B7sFAJC83F3q6yAn8i94MAUj8vmXo6U+ng/9P0qxUvgAAyF/E5mxOOkvE+SJO + yhSkiu0zIqbGJIoZRomZL0pQxHJijlvkpZ99FtlRzOxkHlvE4pxT2clsMfeIeHuGkCNixEfEBRlcTqaI + b4tYM0mYzBXxW3FsMoeZDgCKJLYLOKx4EZuImMQPDnQR8XIAcKS4LzjmCxZwsgTiQ7mkpGbzuXHxArou + S49uam3NoHtyMpM4AoGhP5OVyOSz6S4pyalMXjYAi2f+LBlxbemiIluaWltaGpoZmX5RqP+6+Dcl7u0i + vQr43DOI1veH7a/8UuoAYMyKarPrD1vMfgA6tgIgd/8Pm+YhACRFfWu/8cV5aOJ5iRcIUm2MjTMzM424 + HJaRuKC/6386/A198T0j8Xa/l4fuyollCpMEdHHdWClJKUI+PT2VyeLQDf88xP848K/zWBrIieXwOTxR + RKhoyri8OFG7eWyugJvCo3N5/6mJ/zDsT1qca5Eo9Z8ANcoISN2gAuTnPoCiEAESeVDc9d/75oMPBeKb + F6Y6sTj3nwX9+65wifiRzo37HOcSGExnCfkZi2viawnQgAAkARXIAxWgAXSBITADVsAWOAI3sAL4gWAQ + DtYCFogHyYAPMkEu2AwKQBHYBfaCSlAD6kEjaAEnQAc4DS6Ay+A6uAnugAdgBIyD52AGvAHzEARhITJE + geQhVUgLMoDMIAZkD7lBPlAgFA5FQ3EQDxJCudAWqAgqhSqhWqgR+hY6BV2ArkID0D1oFJqCfoXewwhM + gqmwMqwNG8MM2An2hoPhNXAcnAbnwPnwTrgCroOPwe3wBfg6fAcegZ/DswhAiAgNUUMMEQbigvghEUgs + wkc2IIVIOVKHtCBdSC9yCxlBppF3KAyKgqKjDFG2KE9UCIqFSkNtQBWjKlFHUe2oHtQt1ChqBvUJTUYr + oQ3QNmgv9Cp0HDoTXYAuRzeg29CX0HfQ4+g3GAyGhtHBWGE8MeGYBMw6TDHmAKYVcx4zgBnDzGKxWHms + AdYO64dlYgXYAux+7DHsOewgdhz7FkfEqeLMcO64CBwPl4crxzXhzuIGcRO4ebwUXgtvg/fDs/HZ+BJ8 + Pb4LfwM/jp8nSBN0CHaEYEICYTOhgtBCuER4SHhFJBLVidbEACKXuIlYQTxOvEIcJb4jyZD0SS6kSJKQ + tJN0hHSedI/0ikwma5MdyRFkAXknuZF8kfyY/FaCImEk4SXBltgoUSXRLjEo8UISL6kl6SS5VjJHslzy + pOQNyWkpvJS2lIsUU2qDVJXUKalhqVlpirSptJ90snSxdJP0VelJGayMtoybDFsmX+awzEWZMQpC0aC4 + UFiULZR6yiXKOBVD1aF6UROoRdRvqP3UGVkZ2WWyobJZslWyZ2RHaAhNm+ZFS6KV0E7QhmjvlygvcVrC + WbJjScuSwSVzcopyjnIcuUK5Vrk7cu/l6fJu8onyu+U75B8poBT0FQIUMhUOKlxSmFakKtoqshQLFU8o + 3leClfSVApXWKR1W6lOaVVZR9lBOVd6vfFF5WoWm4qiSoFKmclZlSpWiaq/KVS1TPaf6jC5Ld6In0Svo + PfQZNSU1TzWhWq1av9q8uo56iHqeeqv6Iw2CBkMjVqNMo1tjRlNV01czV7NZ874WXouhFa+1T6tXa05b + RztMe5t2h/akjpyOl06OTrPOQ12yroNumm6d7m09jB5DL1HvgN5NfVjfQj9ev0r/hgFsYGnANThgMLAU + vdR6KW9p3dJhQ5Khk2GGYbPhqBHNyMcoz6jD6IWxpnGE8W7jXuNPJhYmSSb1Jg9MZUxXmOaZdpn+aqZv + xjKrMrttTjZ3N99o3mn+cpnBMs6yg8vuWlAsfC22WXRbfLS0suRbtlhOWWlaRVtVWw0zqAx/RjHjijXa + 2tl6o/Vp63c2ljYCmxM2v9ga2ibaNtlOLtdZzllev3zMTt2OaVdrN2JPt4+2P2Q/4qDmwHSoc3jiqOHI + dmxwnHDSc0pwOub0wtnEme/c5jznYuOy3uW8K+Lq4Vro2u8m4xbiVun22F3dPc692X3Gw8Jjncd5T7Sn + t+duz2EvZS+WV6PXzAqrFetX9HiTvIO8K72f+Oj78H26fGHfFb57fB+u1FrJW9nhB/y8/Pb4PfLX8U/z + /z4AE+AfUBXwNNA0MDewN4gSFBXUFPQm2Dm4JPhBiG6IMKQ7VDI0MrQxdC7MNaw0bGSV8ar1q66HK4Rz + wzsjsBGhEQ0Rs6vdVu9dPR5pEVkQObRGZ03WmqtrFdYmrT0TJRnFjDoZjY4Oi26K/sD0Y9YxZ2O8Yqpj + ZlgurH2s52xHdhl7imPHKeVMxNrFlsZOxtnF7YmbineIL4+f5rpwK7kvEzwTahLmEv0SjyQuJIUltSbj + kqOTT/FkeIm8nhSVlKyUgVSD1ILUkTSbtL1pM3xvfkM6lL4mvVNAFf1M9Ql1hVuFoxn2GVUZbzNDM09m + SWfxsvqy9bN3ZE/kuOd8vQ61jrWuO1ctd3Pu6Hqn9bUboA0xG7o3amzM3zi+yWPT0c2EzYmbf8gzySvN + e70lbEtXvnL+pvyxrR5bmwskCvgFw9tst9VsR23nbu/fYb5j/45PhezCa0UmReVFH4pZxde+Mv2q4quF + nbE7+0ssSw7uwuzi7Rra7bD7aKl0aU7p2B7fPe1l9LLCstd7o/ZeLV9WXrOPsE+4b6TCp6Jzv+b+Xfs/ + VMZX3qlyrmqtVqreUT13gH1g8KDjwZYa5ZqimveHuIfu1nrUttdp15UfxhzOOPy0PrS+92vG140NCg1F + DR+P8I6MHA082tNo1djYpNRU0gw3C5unjkUeu/mN6zedLYYtta201qLj4Ljw+LNvo78dOuF9ovsk42TL + d1rfVbdR2grbofbs9pmO+I6RzvDOgVMrTnV32Xa1fW/0/ZHTaqerzsieKTlLOJt/duFczrnZ86nnpy/E + XRjrjup+cHHVxds9AT39l7wvXbnsfvlir1PvuSt2V05ftbl66hrjWsd1y+vtfRZ9bT9Y/NDWb9nffsPq + RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP + lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l + f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAACSNJREFUeF7tnetTVOcZ + wM//oaDJt2Qm39oPjjWdsZmYjlcMUJR4DwgGY0zUXCq5TWfSmAajaUdNES+4XFxEFAEvGKMIu8t9WS4L + ymUBAaM2TfsP9HfOs9DlpUnxSKfIPO/8ZvOe533PWb/83ud5D+dsrPjJbeGzzy5em5L8Sc6OMxXvlPv2 + VjUoivK0sLusZvuJMvxdnJCCy1Grx9sk2xetSsw4eTGjNLCh0J902rf2ZF3CCUVRnhpePVmXnO/DXyzG + 5UWrkqJuOy1q+4KFC1fs+iDzfGC9x2ecryjK0wguYzReY7doHrV9+a7300r8LAzGCYqiPL1gNF5jt2hu + 275odfL2c6q6osxB8Bq7cdy2fcEzz2Serlh/Rgt4RZmbYHdmfiWmW4vXrk/3quqKMpdJ8/ow3Ur8OCfV + Y44pijKXwPGkTw5aaXllSafMMUVR5hI4julWlvfG2ilj7uA6NiftGwMCfRsnHjtB5hijiqL8j0CxLO93 + 1s7SGmPAHaJx4ilf0ilf8mnf7xzoEImK7UygT4S4QB9k1LigoigzCKZbWSW3jKg70FU0XnfGv8ET2Fhg + 85onwKFYLaqzFqTk+9ef8ad6/Kln/Ovyx0enXFBRlBkE0603vDeNqDuQGZNxe1NhIO1sQ4bXhs7mwnrc + FqXtCfn2WrClqH5rUT2fGwrs5YA4pxsXVBRlBsF0a8fZG0bUHeRtSnfyebq34eEPP/7TaRXBgcySRqyW + DM8EVMfz9sh9mbCt2BaebM/pxgUVRZlBMN3KLP7WiLqD1I3SiJ1V2igm09A+uzJIkmcVYJQkT6rf7m3o + GIzanuGsBcSl1JdqH6Rvb/WnfJGiKC7AdGt74XUj6g50ZR9Orn6rrOkfMc1/9x6R18/awpPGmbDjXCO2 + y2hWqT1Ewie9S/KnA1Pv8BlfpyjKY4HpVnpBtRF1h227x89G/e0LzT9ObsdrwxiO56Rx6vydpU0dg2My + 9FZZs6R3FgK5t8e2H4w7fLbzU75RUZTpg+lWmueaEXUHTuInMk/YPvz9I+n0jjwQq1kL2MaT6ids33Ox + Gfkp9cnwQJEvt/e4DqsDZT/XJNUnqfCK8mRguvV6/hUj6o5Y2//uNJT23RmWfkWw/83zTW+ca6R0332h + uT0yJvF3L7UwnyGcL66/UxMeDA2MwrX2gRO13SwQchtvXX50Y298qaIo0wTTrW2nLxtRd4jtZG9k/sFp + HZHRz6pD9x8+oj/24FF2ZSsZnlHyeXtkVObsr2p9v6L1wPVQz/B9icS2toGRd8ub7Y19QYCdvC38lO9V + FGU6YLq15VSVEXXHhO0o/TentQ+MfHg5eLmtXw5vhwf3lbeQzN+71MKQBJnAitAzPCaHDXeHv/6uI/d2 + mI5EuofGqAi2FtWn6p/lFeUJwHRr84kKI+qOGNubHjkt5NgOPUNjEsmrC5PMs6uCDEmE0aq2Punf7ors + KbcLe6DTcGdY4lT47Oc3OuldbVcUd2C6tSnvkhF1R6ztD53W1n8PsdE7rzYske7BUfGfIYnQJyj9j6uC + nJtVau/tKRAOVIck3hUZ2XHOeURHH8JRFLdgurUxt9yIuiPW9gdOC/YNU7RTulPA3+ockGBlsBfDGZJD + +tIhQkqnaOcKgPPvXGwOR0ZkdGdp07bi6EM4xvcqijIdMN3a8NeLRtQdsbZ/77TW3qE9F+3bciTq7MrW + 4dExgnyyUQ/2DsmcIzWd0rnUepcTqdjJ4ZDhte/2sUbI6Jvn7YdwUj3OnfkpX60oyn8F063Ub8qMqDti + bb/vtJa7gxhLWU7GRtcLTXckXh3qYyGQ/sEb7dK5FupjUfi37SWNnOvvjsgo10z32nfmk0/HvD875d+g + KMpPgenW+qPnjag7Ym0fc1rznQj9TOehGuxF5o7+YRm6O3hPOlTy0mFpoHSngMdqYI2gLujoH5JRzJe3 + a1L16TpFcQWmW+uOlBpRd2CgPDlLGh91WlNPhD7qYqk8Hv/NrU4ZmmjY3tE3JP3Pr7VhNVt0oMOhxH1d + /bKlp5jfVBhg9x7927vesVOUaYPpVspfSoyoO2zbnbdiSMtiaWNPBEXlYbiNBQFcJdXf7OiTUWnYfq6x + R/p1Xf17x/8C92FVsH18FSgOdCP/gattX1WHvrzWtsPbIC/Ma3pXlOmD6Vbyn71G1B3YLm+8UnKPOK0h + PJDhJHZWAfwkLVPP769sHRi6JxNo2VXB31e2hnoH5ZBOcSAM3QNDEqnttBP7rrKm+vCARP50tW2DRx+t + U5THA9OtpK/PGlF3kGlT8v3kcIr5e04LdPVLYpe3WREe86nnS+u7ZQKNvToy769orenojYZiWkVzz3vl + LWzmOYurSfCLK0G1XVEeF0y3Eg8XG1F3sItGadI4OfzLq0FK7k8rWpGfhJ/k/NSkjCL8dm/Doeuhw9+G + /njF/qELDvmkIvj8arAkEC6pdwiEP6pokdfm2AKwapyo6SzydRXWde0ra5J7dVrJK8r0wXTr1a+KjKg7 + sB2lSbnkcHIvKf21yT9BKcLbowWBzYX2n9n4lFfZ+eQQpXFb7snT2VoUHWW+7PzlMNVj/9yFPDOvtivK + NMF0a+3BAiPqDsSbUBrn5fdnJKuLljJKhPi6fD8LAZ8yjU8O0Vh+0MI23BMggU+aMH5K7GWNf4OiKD8F + plsJOR4j6hpRmgIbFYGOXWyPZ2B7dPKEiWnSwWFWiglE6f9I7GUVRZkWOR5r5WfHE/JumwNPQNTqcYxR + MCZMQjQel/lnMK6pKMrPUrv6wClr2QcHE3Jn5iflFUWZpRy/9dvsw9aStL1rjl41xxRFmUPg+JL0fdYL + S5evOjQzD88qijI7wfEXfrPciluw4OX9h9Ycm5nfmVYUZbaB3cv2H45bsNCaP3/+8y++vPJgyczeq1MU + ZVaQdxu7cRzTrbi4OP7zi8QtKw/NzKuviqLMHvAau3Ec0634+HhH+LhfpqSvyPGuPjoz/zMJRVH+v6w+ + Vo3ReO2YHofptu0i/Lx585771UtL9x1YkVOy6siVNbk3E/JqjfMVRZnV5NViLv5iMS4/t+QlvBbVaVHb + aU6Gnz9vftzzv35l0ZbdS/d9sezTY6/8IVdRlKcFnMVc/MViXJYCPmp4fPy/AOcNe3u1Gz2WAAAAAElF + TkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAU8AAAAtCAIAAACh5H5AAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH + DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp + bGUAAEjHnZZ3VFTXFofPvXd6oc0w0hl6ky4wgPQuIB0EURhmBhjKAMMMTWyIqEBEEREBRZCggAGjoUis + iGIhKKhgD0gQUGIwiqioZEbWSnx5ee/l5ffHvd/aZ+9z99l7n7UuACRPHy4vBZYCIJkn4Ad6ONNXhUfQ + sf0ABniAAaYAMFnpqb5B7sFAJC83F3q6yAn8i94MAUj8vmXo6U+ng/9P0qxUvgAAyF/E5mxOOkvE+SJO + yhSkiu0zIqbGJIoZRomZL0pQxHJijlvkpZ99FtlRzOxkHlvE4pxT2clsMfeIeHuGkCNixEfEBRlcTqaI + b4tYM0mYzBXxW3FsMoeZDgCKJLYLOKx4EZuImMQPDnQR8XIAcKS4LzjmCxZwsgTiQ7mkpGbzuXHxArou + S49uam3NoHtyMpM4AoGhP5OVyOSz6S4pyalMXjYAi2f+LBlxbemiIluaWltaGpoZmX5RqP+6+Dcl7u0i + vQr43DOI1veH7a/8UuoAYMyKarPrD1vMfgA6tgIgd/8Pm+YhACRFfWu/8cV5aOJ5iRcIUm2MjTMzM424 + HJaRuKC/6386/A198T0j8Xa/l4fuyollCpMEdHHdWClJKUI+PT2VyeLQDf88xP848K/zWBrIieXwOTxR + RKhoyri8OFG7eWyugJvCo3N5/6mJ/zDsT1qca5Eo9Z8ANcoISN2gAuTnPoCiEAESeVDc9d/75oMPBeKb + F6Y6sTj3nwX9+65wifiRzo37HOcSGExnCfkZi2viawnQgAAkARXIAxWgAXSBITADVsAWOAI3sAL4gWAQ + DtYCFogHyYAPMkEu2AwKQBHYBfaCSlAD6kEjaAEnQAc4DS6Ay+A6uAnugAdgBIyD52AGvAHzEARhITJE + geQhVUgLMoDMIAZkD7lBPlAgFA5FQ3EQDxJCudAWqAgqhSqhWqgR+hY6BV2ArkID0D1oFJqCfoXewwhM + gqmwMqwNG8MM2An2hoPhNXAcnAbnwPnwTrgCroOPwe3wBfg6fAcegZ/DswhAiAgNUUMMEQbigvghEUgs + wkc2IIVIOVKHtCBdSC9yCxlBppF3KAyKgqKjDFG2KE9UCIqFSkNtQBWjKlFHUe2oHtQt1ChqBvUJTUYr + oQ3QNmgv9Cp0HDoTXYAuRzeg29CX0HfQ4+g3GAyGhtHBWGE8MeGYBMw6TDHmAKYVcx4zgBnDzGKxWHms + AdYO64dlYgXYAux+7DHsOewgdhz7FkfEqeLMcO64CBwPl4crxzXhzuIGcRO4ebwUXgtvg/fDs/HZ+BJ8 + Pb4LfwM/jp8nSBN0CHaEYEICYTOhgtBCuER4SHhFJBLVidbEACKXuIlYQTxOvEIcJb4jyZD0SS6kSJKQ + tJN0hHSedI/0ikwma5MdyRFkAXknuZF8kfyY/FaCImEk4SXBltgoUSXRLjEo8UISL6kl6SS5VjJHslzy + pOQNyWkpvJS2lIsUU2qDVJXUKalhqVlpirSptJ90snSxdJP0VelJGayMtoybDFsmX+awzEWZMQpC0aC4 + UFiULZR6yiXKOBVD1aF6UROoRdRvqP3UGVkZ2WWyobJZslWyZ2RHaAhNm+ZFS6KV0E7QhmjvlygvcVrC + WbJjScuSwSVzcopyjnIcuUK5Vrk7cu/l6fJu8onyu+U75B8poBT0FQIUMhUOKlxSmFakKtoqshQLFU8o + 3leClfSVApXWKR1W6lOaVVZR9lBOVd6vfFF5WoWm4qiSoFKmclZlSpWiaq/KVS1TPaf6jC5Ld6In0Svo + PfQZNSU1TzWhWq1av9q8uo56iHqeeqv6Iw2CBkMjVqNMo1tjRlNV01czV7NZ874WXouhFa+1T6tXa05b + RztMe5t2h/akjpyOl06OTrPOQ12yroNumm6d7m09jB5DL1HvgN5NfVjfQj9ev0r/hgFsYGnANThgMLAU + vdR6KW9p3dJhQ5Khk2GGYbPhqBHNyMcoz6jD6IWxpnGE8W7jXuNPJhYmSSb1Jg9MZUxXmOaZdpn+aqZv + xjKrMrttTjZ3N99o3mn+cpnBMs6yg8vuWlAsfC22WXRbfLS0suRbtlhOWWlaRVtVWw0zqAx/RjHjijXa + 2tl6o/Vp63c2ljYCmxM2v9ga2ibaNtlOLtdZzllev3zMTt2OaVdrN2JPt4+2P2Q/4qDmwHSoc3jiqOHI + dmxwnHDSc0pwOub0wtnEme/c5jznYuOy3uW8K+Lq4Vro2u8m4xbiVun22F3dPc692X3Gw8Jjncd5T7Sn + t+duz2EvZS+WV6PXzAqrFetX9HiTvIO8K72f+Oj78H26fGHfFb57fB+u1FrJW9nhB/y8/Pb4PfLX8U/z + /z4AE+AfUBXwNNA0MDewN4gSFBXUFPQm2Dm4JPhBiG6IMKQ7VDI0MrQxdC7MNaw0bGSV8ar1q66HK4Rz + wzsjsBGhEQ0Rs6vdVu9dPR5pEVkQObRGZ03WmqtrFdYmrT0TJRnFjDoZjY4Oi26K/sD0Y9YxZ2O8Yqpj + ZlgurH2s52xHdhl7imPHKeVMxNrFlsZOxtnF7YmbineIL4+f5rpwK7kvEzwTahLmEv0SjyQuJIUltSbj + kqOTT/FkeIm8nhSVlKyUgVSD1ILUkTSbtL1pM3xvfkM6lL4mvVNAFf1M9Ql1hVuFoxn2GVUZbzNDM09m + SWfxsvqy9bN3ZE/kuOd8vQ61jrWuO1ctd3Pu6Hqn9bUboA0xG7o3amzM3zi+yWPT0c2EzYmbf8gzySvN + e70lbEtXvnL+pvyxrR5bmwskCvgFw9tst9VsR23nbu/fYb5j/45PhezCa0UmReVFH4pZxde+Mv2q4quF + nbE7+0ssSw7uwuzi7Rra7bD7aKl0aU7p2B7fPe1l9LLCstd7o/ZeLV9WXrOPsE+4b6TCp6Jzv+b+Xfs/ + VMZX3qlyrmqtVqreUT13gH1g8KDjwZYa5ZqimveHuIfu1nrUttdp15UfxhzOOPy0PrS+92vG140NCg1F + DR+P8I6MHA082tNo1djYpNRU0gw3C5unjkUeu/mN6zedLYYtta201qLj4Ljw+LNvo78dOuF9ovsk42TL + d1rfVbdR2grbofbs9pmO+I6RzvDOgVMrTnV32Xa1fW/0/ZHTaqerzsieKTlLOJt/duFczrnZ86nnpy/E + XRjrjup+cHHVxds9AT39l7wvXbnsfvlir1PvuSt2V05ftbl66hrjWsd1y+vtfRZ9bT9Y/NDWb9nffsPq + RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP + lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l + f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAACM9JREFUeF7t1vlT03ce + x/Hvn+Goxa2d/hc7/aW/tK7KkXCDoByKlGsVS0drV63VXVfqahHkCGeAcIRDIEBCyH0f5CQHJAQQqHbX + dvcf2FfyoRiZTle7caZk3p95jPPJ5/POh5+eIJfy+vrgww9zqusvCYYbJtRXZkz1EjMh5KC4Mm1oGFOg + 3+yqy2h5t+qf12u18ytqPx9TNuqWBY5I7/J2r3+n2/99l2+HEPL7h1p7fTs93i2BM4KK0XLmxbrdtmNr + t/b3jx+/2NhyX+ttd663ercbHZt3bOu3rJEblsgNMyHkd88SuWmJoFmU+61jExW3u9ZRNLpG3Szz3dor + 7jf/w+Dv8G7ds29cN601GMKXdaE/a1ehjhByEKDWS7pVlIt+UTFaRtHoGnWzzKO18ypq/6b2tLif4RdD + gyF0SbdSpyWEHGCoGC2jaHSNutF4tPb3j39wWax8aAvfskTqdat1mpVaQsjBh5ZRNLpG3WgcpXNZVfW3 + la6/2tav6EJ16pVaQkiyQNHoGnV/o3RnVddz1a2D9wzBa4ZQnSZYoyaEJBV0jbrvGYMonasbkt01heq1 + q9WqICEk+aBuNI7SuRqx6qYxXKsKVikDhJDkg7pvGcM1YjVXJVZ/ZQhXKwJVhJBkhLrROErnPhtRfalb + rVr0f0YISUaoG42jdK5yWHlNu1Ip9xFCktVVND6s5C4OLV7VrFQu+BLlotTz4uVP/4mtCc96pWx5/4DM + 6958zgYwvO+WEJJwaBylcxUi+RfqYIVsOVHKpu2sZKwXL3+8JHPvGyiXOJyRbTaA4X23hJCEizYuknPn + Bxa+UAUrpMuJUjph+XfcUvo3Lsx74gfKpuyO8DN2i+H4K0LIu4DGUTpX3i/D7sK8N1FKJsw/vb4ean0X + 5jx7A6VPbUuhTXaF4b1zQsg7gsZROlcmlDYoA+fnPIlybtzESl7b2mEb/+ZO2Yxzb6Bk0roU2mBXGN47 + J4S8I2gcpXOlvXOfL/rLJe5EOSs2/hhbtsCa1L7M9qO2lfIZFxs4N2G1r66zcwzvfnHGJbSGFP6NpbVt + kLgjbcZXXyGE/D/QOErnSnpmr8j9ZTPuRCkeNb6MLWtgrbRnbvv5C+y3X/xQM+NgA2fHrbaVdTaDYZxc + W/D6NnbYSfyyh7dqZ197nBDyG6BxlM6d7ZbUL/hKp12JUjRi+Fdsofa8XvmgxsE+LrjDJVMODBSPWazB + CDvEcPWM0xvZZh/V7uC1EcXdSQ027MS7vl3yNPotQshvhsZROlfcOX1Ztlwy5UyUM8P6f8aWxb9WKNIi + ePdqhJ00KtxIt1hstgTW2EmhSDdk9rP9nNWbLZjNFyrz+hTYqFwBdt5t8OFb+34KIeTNoXGUzhUJpi5J + l889dSZK4ZD+h9gy+8Nnho2Fw4Y7T3XsxB3eLB63F42accVO8vvV7tAG25cJ5RjGAOCRWtEiO49+a8y2 + 76cQQt4cGkfp3Jn2p3Xz3uIJR6LkD+pexJZpOVQ4bDojtuX0KiVmDzscNPoKRAZcsY/Z3XK2MXlX8oTq + IqQee6RozJ4rVDlX1thtwZBx731CyNtC4yidK2ybrJvzFI0vJUregPZ5bBmXV1EpusW/Jb0L68+2cLj+ + bLt8SIcrNnN1bHe4T2XPFxni38kf1EssHnaL3yDxV4SQt4LGUTqX3zpeO+s+M2ZPlNx+zfexZfCuIGCc + FIqtOUJ176KVnYuNHoMnyPbVA3K2Eetd+UPG+HfwXYXDz27xZvwVIeStoHGUzuW1jNXMuApHbYmS06fe + iS29J5g3oGeH+SIjv0Nq962yK18owja8Vgnb6D0reYOGvUcA310KhNkt3oy/IoS8FTSO0rncZnH1tKtg + xJYo2b3q7djSuQO5/frd82FrTp/mpljFrvYWr3UOvwLYvm7MvPcI1I2Z2PmCzYvvxl8RQt4KGkfpXE7T + SNWUM3/YmihZPT/X7grkCHV753mDJr5gYUrvYLds8dqlLXNGtpc7AnkiMxs+P2qxB8LsvGXehHeuSxx3 + pS44L7btvUkIeRNoHKVzWd8NV046c0WWROF3qbZiS+v0Z/VqX10NmvGxsH0uFFlnA1i8Dnl667zVG2Qf + bf5wq9LdqnB5VyPsRGZ2ZbRJs/p0Os8qO/lGYsdTr54lhPwvaBylc5mPhi5OOHIGzInCFyifxZbG4cvs + 1sRfZfcbeR2LnfNGNoDFEyjw26HgiURqcu4exa1BubmgbTazS413NE4/O7w1acwWGuOfJYT8OjSO0jn+ + Q1HF+FJ2vylR+J2qr4YU1wdk9QOL/G7NvtvMHm1q8+z1wYXr/dLLQhmGs/oMaP7Ud1OXumcFc3rBnCFG + X942fbppGlcYwDtNEoNgVt85b6jsV+Nk37OEkF+BxlE6x3swWDG2lCU0JQq/R5feJk97IsvoUGT26Pfd + ZvUZeV2a9LaFtCfS9PZFNpDZa+B1qtNaF04/nj3dNBP1eBYzmMzsM2Ag9mb0NrVlntepYoeEkDeExlE6 + l/Ft/4VRG3pLmB49v1sX1aPDfv8t/OJA7BB5I/uoLk30Nv4rXdpfOCeEvAE0jtK59Ebh+VEbr8dACElW + 5SM2lM5l/L2nTGThdekzCCHJCHWXDVnS7/dyvDttpf040qV3EkKSEOouHTDw7nZwvKv3znYr+F26NIGW + EJJ8eF26cz0KlM59nHM2v3kyu1uf2q4hhCQf1J3XPPlx7jnuvWPH0m635XYsprZrT7VpCCHJBF2jbjT+ + 3rE/cEeOHPkoIy/rkZjfrj71RHWSEJIsUDS6Rt1oHKVzR48ePXz48InKBv6jifR2zckW1Z8IIQcfWkbR + 6Bp1o3GUzqWkpMSCP3Ky5sv0ByNpTfMYOtGsJIQcXKg47fF8xoMRdI260ThKj9bOgj906NAf03JO3WhK + bRxJfSQ52SQ78XjxRJPiU0LIQYBa0SzKRb+oGC2jaHTNUsfarR0r9hc++vf+I17BqfrbJ//S9OnXbZ98 + 3U4IOSjQLMpFv6gYLbP/wO8WnpLyX/zNBe36JoLHAAAAAElFTkSuQmCC + + iVBORw0KGgoAAAANSUhEUgAAAsYAAAHWCAYAAAB0Vk+zAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH @@ -165,376 +416,447 @@ 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 - zDnXTjR3T15oXl77dvmrGsf3OHYKxbi48T2enULSjO+x7hSKMcU4aaT1TJs2zfzVX/2V9+ca2z/8wz+U - vyuJlXc/2GLGT33GHH7GGPOtIy4K8oNfXWEuveNx8+aGD8rX5s/+++/vfTzr+dv//t+9p9fzhS98wcyb - N6/8XUnR0so6aQVzJN38/d//vfcxj02zZsKECeXvmnZ899+iGCes29n4wYdm9esbzOIXXzeLlr+W0f+/ - 9uZGs/WjT8qXIqRz+eiTbeayUqndc8jIwaK759BRZt/jbjT7nzTWHHja/eZHZz1a4aAzHzY/+N095ru/ - vtnsNeyyipL8mwvHZes4Vra8sqb8f4R8lk+2bc/+EFu++s3B2Sn6t07ftn17+ZKEtJbX33rPTHlqmbnu - nplmxLUTzfBzbjc//d315sDjrxykfw89+1Zz2mX3mavHzTCTZi3Nfn+nGF9nsijGCet03tv0oXnoyefN - 2Vc/lG1lcwuFz0HHX2XOv3Gymf3cqqzAEBIry1aty9bW/seo2I403/nl6FIRvjMrvT8+9/Egh/xxsjng - lPFmn2OvN3sceXG2dn99QZyCvGH+fLNt06byv0g/RxsNxtz/lDmyVESqZ6WPCsuN9z2VrcMdOz4tXwsh - tbNt+w4zZc4Lpfl1907raa+jrjD7/OoGs+9xYyp8e/hVg3PPGv6nO0q/6xcn9Xvb15ksinHCOpWXX3vb - jLp9mtnvmMsrnjx7DrusVEiu2+mJ9p1jrjV7DLmk4rL7HXOp+Y8bHjWvJvrXKOlebrhv9uC60lBvpQzX - csgfp5r9TrzdfKv8i+LY/xhr3nq3tWL76aefmnWPTTWbS3OP9Ge2l4rKhMcWmZ+cdN3gms0cOdJ8+xdX - 7lxUfnVjdrrOdy+vjQy3T3w629JMiC8rX32rVGjvHFwzew671Oz3m9vMD0+73xx6zmPeeWfp/B+e/kA2 - +/Y66rPf89qq/Njc5eXvUOz4OpNFMU5Y7OivRe17aZ8k2jKnrWoHnHy3OeTsyd4nmOtHZ00y3//tWLP3 - 0VcPXse+w0dlW0E2bdla/i6ENBeVgotveSxbR/rD6/uldfjjc6Z51167fnj6g9kuGfpeenVk5avNv0nP - 5pMPPjDrpkzOthqT/sqO0h9Fj8xakr1UbWefiop231EB8a25alqD3zvh1mxLn72OQ35zbfamUXa1IDYf - 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 - AAAAuHmO+f8Bb0FuHjduk4cAAAAASUVORK5CYII= + 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 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 + t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 + t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 + t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 + t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 + t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0KYqiKO/l1k9r4sxJBOMkQzAG/OUlGNNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWlaVMURVHey62f1sSZkwjGSYZgDPjLSzCmx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG + SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG + SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG + SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG + SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG + SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+Dchi8p + GG/YsEEeGVdc6QkRbDRtwD+XXXaZrFu3zrWfuqHHhg89FvCP1x6b4NyGLykY64s/NXlRpSdEsNG0Af9c + eeWVUlRU5NpP3dBjw4ceC/jHa49NcG7DlxSMi4uLpcec0kpPiGCjaQP+adq0qaSkpLj2Uzf02PChxwL+ + 8dpjE5zb8CUF4969e8uUhWWVnhDBRtMG/NOrVy9p3769az91Q48NH3os4B+vPTbBuQ1fUjD+xS9+IevX + r5dXZi6t9KQILpo24I9rr71WSkpK5JprrnHtp27oseFDjwX8cTE9NsG5DV9SMFYff/yxzCgp5wKRkKBp + Aw3v8ssvlwEDBkirVq1c+2hN6LHhQo8FGt6l9Fjl3IYvORiruXPnytj81fLQmHPPhWCiaQMN60/+5E+k + R48e8tFHH7n2z9qgx4YHPRZoWHXRY53bcJ0E46uvvloyMjJkZkm5vMZbfoFG0wYaTqNGjWTgwIHSs2dP + ueqqq1z7Z23QY8ODHgs0nLrqsc5tuE6CccIf/vAHe3shvVik+5xSaTdpkTzMEY5AoWkD9ecnP/mJ/Oxn + P7NXRutFIHl5eRf91p4bemzw0WOB+lNfPda5DddpMFZ6sYheSa0nQFdUVNgmAQDJQENrYWGhvV1Qu3bt + 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 + Y+TGp4fad5zufKa/XW8mpy2xR5KDXG5jNYKDYBxxdVUHDh+TjOI10q7bWLm+bU8bem58epjc9sJYubPr + l3L3G7PlnrfnnXX3W3OkyStT7c9v7mRCUrt+cl3rz6TVW6NlVs5K+xY7Fa3asH23dP54sg0wN3UaaY8A + N38vU+7/IMeG3vOCcE00JJvfa/7uArnrzVly87Mj7fN2/niS56PHx7//Xr7LzJRDmzbFv0MFqfbsPyQz + s1fIY2+MivUW0ytufMb0li5fyJ2vTDG9pGpvmS1NXp5if35TpxGx03HafC4PvzxMvpi7yL5LRYWn9J3H + gmUbTKgdZ3d8NAzf9sI4ufvN2dK8xwK5793Msz2hknivaN4j0+x4zzdBeZLcZNabRm16yf0vDpGpC0rl + oBm3glhuYzWCg2AccZdap8+ckRyzF9/po4n2iLDuneveuzYtbUp69O/cEUCHePOyPzPueWuu3PHSxLON + 68keYyV94Ro5dpyjPFGo/NIN0twMRtebkHLnK1+adcAMZmfXC0fgvRj2eTLljpe/NM8/QB7oOlTyl62P + v/KF64cNG+RAbo7sX7VKxKzPVDBK313QneRWb4+xp9vc9Mxw2yPuMTvVutxr01vUve/EQtHNz4yQ68wO + e4tXhsuXaUvlwKGj8Veiglrf7NpvL8DVHRs9feqOlyZJs+7p8eXu0gtqor9jdqSbvjpNbjY7TDpePfeH + SbJ83dfxVwtOuY3VCA6CccRdSulR3c/HLJBbOvSRG0zTuvPlKfZcUD2Sp293uzanathBzPyeNj19K0wD + 9q1P9ZceQ+ZWe4EVFY7SdxKadOpvj/Tc/easeJB1Xw8uha5Dd78xS254eojc03mQfd0L1xnZV1oqPxTk + y57ihXL6mPdTMai6ry3f7pU3+s20p0jc+PRwafrKNGneI8P2lYvtLfr7d70+0767cGP7vvbdi7KNO+Kv + SAWtVq3/1p4Ko6dB3PbCF/a6g4t6d6kS3VnSdWGBHa+u7zjInpah70icPh2cnWK3sRrBQTCOuIut9dt2 + Scf3vrAXQOnbWnYvPnG0xrUh1Y4dxIxm3TPk9hfH21MyHn19lJRv2hl/ZSpMVbh8o9zxTD97Ws29b8+z + y9ZtudcVHfT07XR9vTue7itF5vVrqtM//ih7FhbJ/twc2ZmVKcf37Y3/hPKrFq7cJA92HSbXt+tnjxDH + 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 + OOU2ViM4CMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYA + AACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAA + DIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCM + AQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAA + ABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAg + GAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgA + AAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACA + QTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIx + AAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAA + AINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgE + YwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMA + AAAGwRgAAAAwfA3Gq1atkiuuuMJ1wgAAAICGctlll8m6detcM2tNnFn4koJxbm6u/PznP3edOAAAAKCh + XHnllVJUVOSaWWvizMKXFIxHjRolTZs2dZ04AAAAoKFoJk1JSXHNrDVxZuFLCsbt2rWTXr16uU4cAAAA + 0FA0k7Zv3941s9bEmYUvKRhfffXVUlxcLNdee63rBAIAAAD1TbNoSUmJXHPNNa6ZtSbOLHxJwVi1atVK + BgwYIJdffrnrhAIAAAD1RTOoZlHNpG5Z9UKcWfiSg7H66KOPpEePHvKnf/qnrhMMAAAA1LU/+ZM/sRlU + s6hbRq0NZxauk2B81VVXSc+ePWXgwIFy3XXXuU44AAAAUFcaNWpks6dmUM2ibhm1NpxZuE6CccITTzwh + eXl59uRnvTLwZz/7mfzkJz9xnRkAAACgtjRTarbUjKlZUzPnxZ4+4eTMwnUajJVekKd3q9DbZRQWFtob + LeunkAAAAAAXSzOlZkvNmJo1NXO6ZVGvnFm4zoMxAAAAEBbOLEwwBgAAQNJyZmGCMQAAAJKWMwsTjAEA + AJC0nFmYYAwAAICk5czCBGMAAAAkLWcWJhgDAAAgaTmzMMEYAAAAScuZhQnGAAAASFrOLEwwBgAAQNJy + ZmGCMQAAAJKWMwsTjAEAAJC0nFm4UjAGAAAAkhXBGAAAADAIxgAAAMDohfL/Ayer/Ught5jUAAAAAElF + TkSuQmCC diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayFeedback.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayFeedback.cs index db7cc24..4c28be1 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayFeedback.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayFeedback.cs @@ -213,6 +213,10 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelSampleCount.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -225,13 +229,16 @@ namespace ITC81DB_0H } else { - this.labelSampleCount.Text = myKeyPad.StringValue; + after = this.labelSampleCount.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelSampleCount.Text); this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount = myKeyPad.StringValue; this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1SamplingCount, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1SampleCount, "", before, after); } } } @@ -242,6 +249,10 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1DelayCount; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelDelayCount.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -254,13 +265,16 @@ namespace ITC81DB_0H } else { - this.labelDelayCount.Text = myKeyPad.StringValue; + after = this.labelDelayCount.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelDelayCount.Text); this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1DelayCount = myKeyPad.StringValue; this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1DelayCount, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1DelayCount, "", before, after); } } } @@ -272,8 +286,11 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = ""; + string before = "", after = ""; int digit = 0; + before = this.labelUpperLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -297,7 +314,7 @@ namespace ITC81DB_0H } else { - this.labelUpperLimit.Text = myKeyPad.StringValue; + after = this.labelUpperLimit.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CurrentFeedbackItem.OverRangeDeviation = @@ -307,6 +324,9 @@ namespace ITC81DB_0H value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange); this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1OverRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1OverRange, "", before, after); } } } @@ -317,8 +337,11 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = ""; + string before = "", after = ""; int digit = 0; + before = this.labelLowerLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -342,7 +365,7 @@ namespace ITC81DB_0H } else { - this.labelLowerLimit.Text = myKeyPad.StringValue; + after = this.labelLowerLimit.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CurrentFeedbackItem.UnderRangeDeviation = @@ -352,6 +375,9 @@ namespace ITC81DB_0H this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1UnderRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1UnderRange, "", before, after); } } } @@ -363,9 +389,12 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = "", sValue = ""; + string before = "", after = ""; double dValue = 0.0; int digit = 0; + before = this.labelUpperLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -395,6 +424,7 @@ namespace ITC81DB_0H else { string temp = ""; + after = sValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange = sValue.Replace(".", ""); if (myKeyPad.StringValue.Contains('+') == true) @@ -409,6 +439,9 @@ namespace ITC81DB_0H this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1OverRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1OverRange, "", before, after); } } } @@ -419,9 +452,12 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = "", sValue = ""; + string before = "", after = ""; double dValue = 0.0; int digit = 0; + before = this.labelLowerLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -448,6 +484,7 @@ namespace ITC81DB_0H } else { + after = sValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange = sValue.Replace(".", ""); if (myKeyPad.doubleValue == 0) @@ -461,6 +498,9 @@ namespace ITC81DB_0H this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1UnderRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1UnderRange, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs index cebef2f..cf1d59c 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs @@ -475,13 +475,19 @@ namespace ITC81DB_0H.Controls } else { - this.labelSorterADelayTime.Text = myKeyPad.StringValue; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1DelayTime.ToString(); + after = this.labelSorterADelayTime.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1DelayTime = myKeyPad.IntValue; this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); value = Helper.StringZeroFillDigits4(this.labelSorterADelayTime.Text); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.Sorter1DelayTime, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorADelay, "", before, after); } } } @@ -505,13 +511,19 @@ namespace ITC81DB_0H.Controls } else { - this.labelSorterARunTime.Text = myKeyPad.StringValue; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1RunTime.ToString(); + after = this.labelSorterARunTime.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1RunTime = myKeyPad.IntValue; this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); value = Helper.StringZeroFillDigits4(this.labelSorterARunTime.Text); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.Sorter1RunTime, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorARun, "", before, after); } } } @@ -540,13 +552,19 @@ namespace ITC81DB_0H.Controls } else { - this.labelSorterBDelayTime.Text = myKeyPad.StringValue; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2DelayTime.ToString(); + after = this.labelSorterBDelayTime.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2DelayTime = myKeyPad.IntValue; this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); value = Helper.StringZeroFillDigits4(this.labelSorterBDelayTime.Text); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.Sorter2DelayTime, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorBDelay, "", before, after); } } } @@ -570,13 +588,19 @@ namespace ITC81DB_0H.Controls } else { - this.labelSorterBRunTime.Text = myKeyPad.StringValue; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2RunTime.ToString(); + after = this.labelSorterBRunTime.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2RunTime = myKeyPad.IntValue; this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); value = Helper.StringZeroFillDigits4(this.labelSorterBRunTime.Text); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.Sorter2RunTime, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorBRun, "", before, after); } } } @@ -636,7 +660,7 @@ namespace ITC81DB_0H.Controls else this.ParentForm.ParentForm.TransferData(CommunicationCommand.ByNGON, CommunicationID.MainBoard); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Bypass, "ON"); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Bypass, "Consecute - ON"); } else { @@ -648,7 +672,7 @@ namespace ITC81DB_0H.Controls else this.ParentForm.ParentForm.TransferData(CommunicationCommand.ByNGOFF, CommunicationID.MainBoard); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Bypass, "OFF"); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Bypass, "Consecute - OFF"); } } } diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs index afd9f9c..1d0b06d 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs @@ -281,17 +281,17 @@ namespace ITC81DB_0H.Controls public void DisplayRefresh(SystemStatus status) { this.comboBoxPort.Items.Clear(); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f16_OPC) this.comboBoxPort.Items.Add("COM1"); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f16_OPC) this.comboBoxPort.Items.Add("COM3"); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f16_OPC) this.comboBoxPort.Items.Add("COM4"); - if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f22_Modbus_TCP - || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f16_OPC) this.comboBoxPort.Items.Add("TCP"); this.comboBoxPort.SelectedIndex = 0; diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStart.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStart.cs index 90d1aca..960d8c9 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStart.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStart.cs @@ -306,9 +306,12 @@ namespace ITC81DB_0H.Controls { string value = ""; - value = data.ProductionSpeed.ToString(); - if (this.labelSpeed.Text != value) - this.labelSpeed.Text = value; + if (data.ProductionSpeed <= 500) + { + value = data.ProductionSpeed.ToString(); + if (this.labelSpeed.Text != value) + this.labelSpeed.Text = value; + } this.SetProgressBarValue(this.progressBar, data.Weight, data.JudgmentStatus, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces); @@ -457,7 +460,8 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentProductItem.UnderRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.UnderRange, value); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightUnderRange, "", before, after); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "", before, after); } } private void buttonPassRange_Click(object sender, EventArgs e) @@ -560,17 +564,16 @@ namespace ITC81DB_0H.Controls if (this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayFeedback.IsUsingFeedback() == true) this.ParentForm.ParentForm.UpdateFeedbackData(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.CurrentSystemParameter2); - this.buttonPassRange.Text = myKeyPad.StringValue; - this.buttonUnderRange.Text = underRange; - this.buttonOverRange.Text = overRange; - after = this.buttonPassRange.Text = myKeyPad.StringValue; afterUnder = this.buttonUnderRange.Text = underRange; afterOver = this.buttonOverRange.Text = overRange; - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightPassRange, "", before, after); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightUnderRange, "", beforeUnder, afterUnder); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightOverRange, "", beforeOver, afterOver); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.PassRange, "", before, after); + if (beforeUnder != afterUnder) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "Change Pass Value", beforeUnder, afterUnder); + if (beforeOver != afterOver) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "Change Pass Value", beforeOver, afterOver); } private void buttonOverRange_Click(object sender, EventArgs e) { @@ -666,7 +669,8 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentProductItem.OverRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OverRange, value); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightOverRange, "", before, after); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "", before, after); } } @@ -713,7 +717,8 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentProductItem.TareRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.TareRange, value); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightTareRange, "", before, after); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TareRange, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStartGrapht.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStartGrapht.cs index 95f48a0..e5b9cab 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStartGrapht.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStartGrapht.cs @@ -376,7 +376,8 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentProductItem.UnderRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.UnderRange, value); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightUnderRange, "", before, after); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "", before, after); } } private void buttonPassRange_Click(object sender, EventArgs e) @@ -481,17 +482,16 @@ namespace ITC81DB_0H.Controls if (this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayFeedback.IsUsingFeedback() == true) this.ParentForm.ParentForm.UpdateFeedbackData(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.CurrentSystemParameter2); - this.buttonPassRange.Text = myKeyPad.StringValue; - this.buttonUnderRange.Text = underRange; - this.buttonOverRange.Text = overRange; - after = this.buttonPassRange.Text = myKeyPad.StringValue; afterUnder = this.buttonUnderRange.Text = underRange; afterOver = this.buttonOverRange.Text = overRange; - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightPassRange, "", before, after); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightUnderRange, "", beforeUnder, afterUnder); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightOverRange, "", beforeOver, afterOver); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.PassRange, "", before, after); + if (beforeUnder != afterUnder) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "Change Pass Value", beforeUnder, afterUnder); + if (beforeOver != afterOver) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "Change Pass Value", beforeOver, afterOver); } private void buttonOverRange_Click(object sender, EventArgs e) { @@ -587,7 +587,8 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentProductItem.OverRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OverRange, value); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightOverRange, "", before, after); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "", before, after); } } #endregion diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightBigScreen.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightBigScreen.cs index db89644..f2f47ff 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightBigScreen.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightBigScreen.cs @@ -408,6 +408,7 @@ namespace ITC81DB_0H if (myDlg.ShowDialog() == DialogResult.Yes) { this.ParentForm.ParentForm.ClearAlarm(1); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.CountClear, ""); } } @@ -417,6 +418,7 @@ namespace ITC81DB_0H if (myDlg.ShowDialog() == DialogResult.Yes) { this.ParentForm.ParentForm.ClearAlarm(2); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.CountClear, ""); } } @@ -424,6 +426,7 @@ namespace ITC81DB_0H { this.ParentForm.ParentForm.CurrentBarcode.Clear(); this.UpdateBarcodeDisplay(this.ParentForm.ParentForm.CurrentBarcode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.BarcodeClear, ""); } #endregion } diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.Designer.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.Designer.cs index 3904bc9..46a2038 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.Designer.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.Designer.cs @@ -488,7 +488,7 @@ this.labelCountingOutput2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelCountingOutput2.Visible = false; this.labelCountingOutput2.Wordwrap = false; - this.labelCountingOutput2.Click += new System.EventHandler(this.labelAlarm2_Click); + this.labelCountingOutput2.Click += new System.EventHandler(this.labelCountingOutput2_Click); // // pictureBoxRandomModeDisable // @@ -519,7 +519,7 @@ this.labelCountingOutput1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelCountingOutput1.Visible = false; this.labelCountingOutput1.Wordwrap = false; - this.labelCountingOutput1.Click += new System.EventHandler(this.labelAlarm1_Click); + this.labelCountingOutput1.Click += new System.EventHandler(this.labelCountingOutput1_Click); // // pictureBoxCountingOutputCount // diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.cs index 294f4d9..23683ae 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.cs @@ -11,6 +11,7 @@ using SmartX; using ITC81DB_0H.Forms; using ITC81DB_2H_ImageDll; using ITC81DB_2H.Datastore; +using ITC81DB_0H.DialogForms; namespace ITC81DB_0H.Controls { @@ -402,20 +403,31 @@ namespace ITC81DB_0H.Controls #endregion #region Event Handler - private void labelAlarm1_Click(object sender, EventArgs e) + private void labelCountingOutput1_Click(object sender, EventArgs e) { - this.ParentForm.ParentForm.ClearAlarm(1); + DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig1.Language, 20); + if (myDlg.ShowDialog() == DialogResult.Yes) + { + this.ParentForm.ParentForm.ClearAlarm(1); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.CountClear, ""); + } } - private void labelAlarm2_Click(object sender, EventArgs e) + private void labelCountingOutput2_Click(object sender, EventArgs e) { - this.ParentForm.ParentForm.ClearAlarm(2); + DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig1.Language, 20); + if (myDlg.ShowDialog() == DialogResult.Yes) + { + this.ParentForm.ParentForm.ClearAlarm(2); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.CountClear, ""); + } } private void labelBarcodeCount_Click(object sender, EventArgs e) { this.ParentForm.ParentForm.CurrentBarcode.Clear(); this.UpdateBarcodeDisplay(this.ParentForm.ParentForm.CurrentBarcode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.BarcodeClear, ""); } #endregion } diff --git a/ITC81DB_0H/Datastore/Barcode.cs b/ITC81DB_0H/Datastore/Barcode.cs index 0154b1c..ad71106 100644 --- a/ITC81DB_0H/Datastore/Barcode.cs +++ b/ITC81DB_0H/Datastore/Barcode.cs @@ -145,6 +145,45 @@ namespace ITC81DB_0H productNo = 0; return ret = BarcodeStatus.None; } + public BarcodeStatus GetData(ref int productNo, int startIndex, int endIndex) + { + string value = ""; + BarcodeStatus ret = BarcodeStatus.None; + + if (this.QueueBarcode.Count > 0) + { + value = this.QueueBarcode.Peek(); + + if (value == "NoRead") + { + productNo = 991; + return ret = BarcodeStatus.NoRead; + } + else + { + int length = endIndex - startIndex + 1; + if (value.Length >= length) + value = value.Substring(startIndex, length); + if (value.Length > 14) + value = value.Substring(value.Length - 14, 14); + + for (int i = 0; i < this.CollectionLotNo.Count; i++) + { + if (this.CollectionLotNo[i] == value) + { + productNo = i + 1; + return ret = BarcodeStatus.Normal; + } + } + + productNo = 992; + return ret = BarcodeStatus.NoMatch; + } + } + + productNo = 0; + return ret = BarcodeStatus.None; + } /// /// 바코드 길이를 14 이하로 결정 @@ -159,6 +198,15 @@ namespace ITC81DB_0H return barcode; } + public string BarcodePeek() + { + string ret = ""; + + if (this.QueueBarcode.Count > 0) + ret = this.QueueBarcode.Peek(); + + return ret; + } public void BarcodeDequeue() { if(this.QueueBarcode.Count > 0) diff --git a/ITC81DB_0H/Datastore/DataStore.cs b/ITC81DB_0H/Datastore/DataStore.cs index 65958e9..fbbe845 100644 --- a/ITC81DB_0H/Datastore/DataStore.cs +++ b/ITC81DB_0H/Datastore/DataStore.cs @@ -397,6 +397,10 @@ namespace ITC81DB_0H public static readonly string OPT2DelayTime1 = "6232"; // 옵션 - OPT2_지연시간2 public static readonly string OPT2DelayTime2 = "6233"; + // 옵션 - OPT2_영점실행주기 + public static readonly string OPT2ZeroZoneCycle = "6234"; + // 옵션 - OPT2_영점실행개수 + public static readonly string OPT2ZeroZoneCount = "6235"; // 옵션 - 메인보드와의 통신 Baudrate public static readonly string BLDCCommBaudrate = "6700"; // 옵션 - 메인보드와의 통신 Parity bit @@ -1887,7 +1891,7 @@ namespace ITC81DB_0H this.TransmissionDelayTimeCOM4 = 0; this.StatisticsPrintFormat = 0; - this.SerialNumber = "23B0000"; + this.SerialNumber = "23G0000"; this.MainBoardVersion = "000"; this.Unit = "g"; this.UserDefineCOM1 = ""; @@ -2020,9 +2024,9 @@ namespace ITC81DB_0H private int m_ModbusTCPSelectFunction; private int m_ModbusRTUSelectFunction; - private int m_ModbusRTUSlaveIDCOM1; - private int m_ModbusRTUSlaveIDCOM3; - private int m_ModbusRTUSlaveIDCOM4; + private int m_ModbusSlaveIDCOM1; + private int m_ModbusSlaveIDCOM3; + private int m_ModbusSlaveIDCOM4; private bool m_IsBypassDirectionPass; private bool m_IsBypassOnce; @@ -2345,20 +2349,20 @@ namespace ITC81DB_0H get { return this.m_ModbusRTUSelectFunction; } set { this.m_ModbusRTUSelectFunction = value; } } - public int ModbusRTUSlaveIDCOM1 + public int ModbusSlaveIDCOM1 { - get { return this.m_ModbusRTUSlaveIDCOM1; } - set { this.m_ModbusRTUSlaveIDCOM1 = value; } + get { return this.m_ModbusSlaveIDCOM1; } + set { this.m_ModbusSlaveIDCOM1 = value; } } - public int ModbusRTUSlaveIDCOM3 + public int ModbusSlaveIDCOM3 { - get { return this.m_ModbusRTUSlaveIDCOM3; } - set { this.m_ModbusRTUSlaveIDCOM3 = value; } + get { return this.m_ModbusSlaveIDCOM3; } + set { this.m_ModbusSlaveIDCOM3 = value; } } - public int ModbusRTUSlaveIDCOM4 + public int ModbusSlaveIDCOM4 { - get { return this.m_ModbusRTUSlaveIDCOM4; } - set { this.m_ModbusRTUSlaveIDCOM4 = value; } + get { return this.m_ModbusSlaveIDCOM4; } + set { this.m_ModbusSlaveIDCOM4 = value; } } public bool IsBypassDirectionPass @@ -2485,9 +2489,9 @@ namespace ITC81DB_0H this.ModbusTCPSelectFunction = 0; this.ModbusRTUSelectFunction = 0; - this.ModbusRTUSlaveIDCOM1 = 1; - this.ModbusRTUSlaveIDCOM3 = 1; - this.ModbusRTUSlaveIDCOM4 = 1; + this.ModbusSlaveIDCOM1 = 1; + this.ModbusSlaveIDCOM3 = 1; + this.ModbusSlaveIDCOM4 = 1; this.IsBypassDirectionPass = true; this.IsBypassOnce = true; @@ -2617,6 +2621,11 @@ namespace ITC81DB_0H #region Field private bool m_IsPart11; + private int m_MULTiJETSlaveAddressCOM1; + private int m_MULTiJETSlaveAddressCOM3; + private int m_MULTiJETSlaveAddressCOM4; + private int m_MULTiJETSlaveAddressEthernet; + private int m_StoragePeriod; #endregion @@ -2634,6 +2643,27 @@ namespace ITC81DB_0H set { this.m_IsPart11 = value; } } + public int MULTiJETSlaveAddressCOM1 + { + get { return this.m_MULTiJETSlaveAddressCOM1; } + set { this.m_MULTiJETSlaveAddressCOM1 = value; } + } + public int MULTiJETSlaveAddressCOM3 + { + get { return this.m_MULTiJETSlaveAddressCOM3; } + set { this.m_MULTiJETSlaveAddressCOM3 = value; } + } + public int MULTiJETSlaveAddressCOM4 + { + get { return this.m_MULTiJETSlaveAddressCOM4; } + set { this.m_MULTiJETSlaveAddressCOM4 = value; } + } + public int MULTiJETSlaveAddressEthernet + { + get { return this.m_MULTiJETSlaveAddressEthernet; } + set { this.m_MULTiJETSlaveAddressEthernet = value; } + } + public int StoragePeriod { get { return this.m_StoragePeriod; } @@ -2646,6 +2676,11 @@ namespace ITC81DB_0H { this.IsPart11 = false; + this.MULTiJETSlaveAddressCOM1 = 58; + this.MULTiJETSlaveAddressCOM3 = 58; + this.MULTiJETSlaveAddressCOM4 = 58; + this.MULTiJETSlaveAddressEthernet = 58; + this.StoragePeriod = 12; } #endregion @@ -2711,10 +2746,10 @@ namespace ITC81DB_0H public int DummyInt23; public int DummyInt24; public int DummyInt25; - public int DummyInt26; - public int DummyInt27; - public int DummyInt28; - public int DummyInt29; + public int MULTiJETSlaveAddressCOM1; + public int MULTiJETSlaveAddressCOM3; + public int MULTiJETSlaveAddressCOM4; + public int MULTiJETSlaveAddressEthernet; public int StoragePeriod; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] @@ -2761,7 +2796,11 @@ namespace ITC81DB_0H private string m_UnderRange; private string m_PassRange; private string m_OverRange; - private string m_TareRange; + private string m_TareRange; + private string m_SensingTime; + private string m_DispenserDelayTime1; + private string m_DispenserDelayTime2; + private string m_Sorting; private int m_ProgressBarMaximum; private int m_ProgressBarMinimum; @@ -2831,6 +2870,21 @@ namespace ITC81DB_0H get { return this.m_TareRange; } set { this.m_TareRange = value; } } + public string DispenserDelayTime1 + { + get { return this.m_DispenserDelayTime1; } + set { this.m_DispenserDelayTime1 = value; } + } + public string DispenserDelayTime2 + { + get { return this.m_DispenserDelayTime2; } + set { this.m_DispenserDelayTime2 = value; } + } + public string Sorting + { + get { return this.m_Sorting; } + set { this.m_Sorting = value; } + } public int OverRangeDeviation { @@ -2893,6 +2947,11 @@ namespace ITC81DB_0H { get { return int.Parse(this.TareRange); } } + public string SensingTime + { + get { return this.m_SensingTime; } + set { this.m_SensingTime = value; } + } public int ProgressBarMaximum { @@ -2937,6 +2996,10 @@ namespace ITC81DB_0H this.UnderRange = "1000"; this.OverRange = "3000"; this.TareRange = "0"; + this.SensingTime = "0"; + this.DispenserDelayTime1 = "200"; + this.DispenserDelayTime2 = "200"; + this.Sorting = "0"; this.ProgressBarMinimum = 0; this.ProgressBarMaximum = 5000; @@ -3026,9 +3089,10 @@ namespace ITC81DB_0H public string TareRange; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)] - public string DummyString1; + public string DispenserDelayTime1; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)] - public string DummyString2; + public string DispenserDelayTime2; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] public string DummyString3; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] @@ -4540,13 +4604,14 @@ namespace ITC81DB_0H private string m_OPT2DelayTime1; private string m_OPT2DelayTime2; + private string m_OPT2ZeroZoneCycle; + private string m_OPT2ZeroZoneCount; + private string m_Dummy1; private string m_Dummy2; private string m_Dummy3; private string m_Dummy4; private string m_Dummy5; - private string m_Dummy6; - private string m_Dummy7; #endregion #region Constructor @@ -4630,6 +4695,17 @@ namespace ITC81DB_0H set { this.m_OPT2DelayTime2 = value; } } + public string OPT2ZeroZoneCycle + { + get { return this.m_OPT2ZeroZoneCycle; } + set { this.m_OPT2ZeroZoneCycle = value; } + } + public string OPT2ZeroZoneCount + { + get { return this.m_OPT2ZeroZoneCount; } + set { this.m_OPT2ZeroZoneCount = value; } + } + public string Dummy1 { get { return this.m_Dummy1; } @@ -4655,16 +4731,6 @@ namespace ITC81DB_0H get { return this.m_Dummy5; } set { this.m_Dummy5 = value; } } - public string Dummy6 - { - get { return this.m_Dummy6; } - set { this.m_Dummy6 = value; } - } - public string Dummy7 - { - get { return this.m_Dummy7; } - set { this.m_Dummy7 = value; } - } #endregion #region Method @@ -4682,13 +4748,14 @@ namespace ITC81DB_0H this.OPT2DelayTime1 = "0"; this.OPT2DelayTime2 = "0"; + this.OPT2ZeroZoneCycle = "0"; + this.OPT2ZeroZoneCount = "0"; + this.Dummy1 = "0"; this.Dummy2 = "0"; this.Dummy3 = "0"; this.Dummy4 = "0"; this.Dummy5 = "0"; - this.Dummy6 = "0"; - this.Dummy7 = "0"; } #endregion } @@ -4719,6 +4786,11 @@ namespace ITC81DB_0H [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] public string OPT2DelayTime2; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] + public string OPT2ZeroZoneCycle; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] + public string OPT2ZeroZoneCount; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] public string Dummy1; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] @@ -4729,10 +4801,6 @@ namespace ITC81DB_0H public string Dummy4; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] public string Dummy5; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string Dummy6; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string Dummy7; } #endregion #region SystemParameter3 diff --git a/ITC81DB_0H/Datastore/Define.cs b/ITC81DB_0H/Datastore/Define.cs index 385514c..d6e1582 100644 --- a/ITC81DB_0H/Datastore/Define.cs +++ b/ITC81DB_0H/Datastore/Define.cs @@ -42,6 +42,8 @@ namespace ITC81DB_2H.Datastore ConfiEthernet, ConfiHelp, ConfiOptionBoard, + ConfiOptionBoard1, + ConfiOptionBoard2, EquipHelp, EquipUpdate, @@ -181,6 +183,7 @@ namespace ITC81DB_2H.Datastore ExNg, ExNg1, // 외부입력 PIN5 ExNg2, // 외부입력 Photo B + LengthError, // 제품길이 이상 } public enum E_WeightStatus @@ -316,7 +319,7 @@ namespace ITC81DB_2H.Datastore COM4 = 2, } - public enum E_SerialMode + public enum E_CommMode { f0_None = 0, f1_STD1, @@ -340,36 +343,13 @@ namespace ITC81DB_2H.Datastore f19_SmartJet, f20_imaje_9410_OPT3 = 20, f21_Impinj_Speedway_R420 = 21, // RFID - f22_Modbus_RTU, - f23_STD2, - } - - public enum E_EthernetMode - { - f0_None = 0, - f1_STD1, - f2_Remote, - f3_Printer, - f4_imaje_9410_OPT1, - f5_imaje_9028_OPT1 = 5, - f6_OPT0, - f7_imaje_9410_OPT2, - f8_imaje_9028_OPT2, - f9_Hitachi, - f10_MACSA_Laser = 10, - f11_Markoprint, - f12_alphaJET, - f13_Marking_VJ1510, - f14_OPT1, - f15_OPT2 = 15, - f16_OPC, - f17_OPT3, - f18_HP_200, - f19_SmartJet, - f20_imaje_9410_OPT3 = 20, - f21_Impinj_Speedway_R420 = 21, // RFID - f22_Modbus_TCP, + f22_Modbus, f23_STD2, + f24_MULTi_JET, + f25_DJ_VIDEOJET, + f26_LINX8830, + f27_MYJET, + f28_OPT4, } public enum E_ExternalOutputMode @@ -416,7 +396,7 @@ namespace ITC81DB_2H.Datastore { None, PowerOn, - BootingComplete, + Booting, Start, Stop, Bypass, @@ -424,10 +404,13 @@ namespace ITC81DB_2H.Datastore Logout, Zero, Clear, + BarcodeClear, + CountClear, UserEditor, Update, - Initialization_Main, - Initialization_LCD, + OPT1Using, + Init_Main, + Init_LCD, DataBackup, } @@ -435,15 +418,15 @@ namespace ITC81DB_2H.Datastore { None, - ProductNumber, - WeightOverRange, - WeightPassRange, - WeightUnderRange, - WeightTareRange, + ProductNo, + OverRange, + PassRange, + UnderRange, + TareRange, ChangeTime, - ChangeProductName, + ChangeName, ChangeLOT, COM1Baudrate, @@ -452,67 +435,82 @@ namespace ITC81DB_2H.Datastore COM3Mode, COM4Baudrate, COM4Mode, - EthernetOperationMode, - EthernetComMode, - EthernetLocalPort, - EthernetLocalIPConfiguration, - EthernetLocalIPAddress, - EthernetLocalSubnetMask, - EthernetLocalGateway, - EthernetServerIPAddress, - EthernetServerPort, + TCPOpMode, + TCPComMode, + TCPLocalPort, + TCPLocalIPConfig, + TCPLocalIPAddress, + TCPLocalSubnetMask, + TCPLocalGateway, + TCPServerIPAddress, + TCPServerPort, + Mod_Role, + Mod_SlaveID, + Mod_Timeout, + Mod_StartAddr, CalBalanceWeight, CalDecimalPoint, - JudgementFilter, - JudgementDelay, - JudgementDoubleDelay, - JudgementNumber, - JudgementSpeed, - JudgementDynamicCorrection, - JudgementDescendDelayTime, - JudgementAscendDelayTime, + JudgeFilter, + JudgeDelay, + JudgeDoubleDelay, + JudgeNumber, + JudgeSpeed, + JudgeDynamic, + JudgeDesDelay, + JudgeAscDelay, - SorterAMode, - SorterADelay, - SorterAOperation, - SorterBMode, - SorterBDelay, - SorterBOperation, - SorterDoubleEntry, - SorterExternalInput, - SorterExternalNG, + SorAMode, + SorADelay, + SorARun, + SorBMode, + SorBDelay, + SorBRun, + SorDoubleEntry, + SorExternalInput, + SorExternalNG, - AutoZeroIsUsing, - AutoZeroRangePlus, - AutoZeroRangeMinus, - AutoZeroVariation, + Auto0IsUsing, + Auto0RangePlus, + Auto0RangeMinus, + Auto0Variation, - ExInputPIN2Mode, - ExInputPIN3Mode, - ExInputPIN4Mode, - ExInputPIN5Mode, - ExInputPIN6Mode, + ExIn2Mode, + ExIn3Mode, + ExIn4Mode, + ExIn5Mode, + ExIn6Mode, - ExOutput1Mode, - ExOutput1Delay, - ExOutput1Operation, - ExOutput2Mode, - ExOutput2Delay, - ExOutput2Operation, - ExOutput3Mode, - ExOutput3Delay, - ExOutput3Operation, - ExOutput4Mode, - ExOutput4Delay, - ExOutput4Operation, - ExOutput5Mode, - ExOutput5Delay, - ExOutput5Operation, - ExOutput6Mode, - ExOutput6Delay, - ExOutput6Operation, + ExOut1Mode, + ExOut1Delay, + ExOut1Run, + ExOut2Mode, + ExOut2Delay, + ExOut2Run, + ExOut3Mode, + ExOut3Delay, + ExOut3Run, + ExOut4Mode, + ExOut4Delay, + ExOut4Run, + ExOut5Mode, + ExOut5Delay, + ExOut5Run, + ExOut6Mode, + ExOut6Delay, + ExOut6Run, + + OPT1SampleCount, + OPT1DelayCount, + OPT1PulseWidth, + OPT1OverRange, + OPT1UnderRange, + OPT2Delay1, + OPT2Delay2, + OPT2Port, + OPT2ZeroCycle, + OPT2ZeroCount, EquipmentID, BuzzerONTime, diff --git a/ITC81DB_0H/Datastore/Helper.cs b/ITC81DB_0H/Datastore/Helper.cs index 4751707..f2f4af0 100644 --- a/ITC81DB_0H/Datastore/Helper.cs +++ b/ITC81DB_0H/Datastore/Helper.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Collections.Generic; using System.Text; +using System.IO; using ITC81DB_2H.Datastore; @@ -307,6 +308,160 @@ namespace ITC81DB_0H return "0000000"; } + /// + /// 16진수를 10진수로 변환(String to String) + /// + /// + /// + public static string HexToDec(string value) + { + return Convert.ToInt64(value, 16).ToString(); + } + + /// + /// 16진수를 2진수로 변환(String to String) + /// + /// + /// + public static string HexToBin(string value) + { + return Convert.ToString(Convert.ToInt64(value, 16), 2); + } + + /// + /// 10진수를 2진수로 변환(String to String) + /// + /// + /// + public static string DecToBin(string value) + { + return Convert.ToString(Convert.ToInt64(value), 2); + } + + /// + /// 2진수를 10진수로 변환(String to String) + /// + /// + /// + public static string BinToDec(string value) + { + return Convert.ToInt64(value, 2).ToString(); + } + + /// + /// 2진수를 16진수로 변환(String to String) + /// + /// + /// + public static string BinToHex(string value) + { + return Convert.ToString(Convert.ToInt32(value, 2), 16); + } + + /// + /// string(255 이하의 숫자 string)을 16진수로 변환하는 방법 + /// + /// 1자리 string + /// + public static byte StringToHex(string value) + { + try + { + int iValue = int.Parse(value); + + if (0 <= iValue && iValue < 256) + { + string temp = iValue.ToString("X"); + return Convert.ToByte(temp, 16); + } + else + return 0x00; + } + catch + { + return 0x00; + } + } + + /// + /// Remove Folder로 이동 + /// + /// Remove Folder로 이동할 폴더 + public static void MoveToRemoveFolder(string directory) + { + bool removeFolderCheck = false; + string currentFolderPath = "", removeFolderPath = ""; + + currentFolderPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\"; + if (currentFolderPath.StartsWith("\\F") == true) + removeFolderPath = "Flash Disk\\RemoveFile\\"; + else + removeFolderPath = "SD Card\\RemoveFile\\"; + + FileInfo[] oldFiles; + DirectoryInfo[] oldDirectory; + DirectoryInfo dirOldFolder = new DirectoryInfo(directory); + DirectoryInfo dirFolderRemove = new DirectoryInfo(removeFolderPath); + + removeFolderCheck = dirFolderRemove.Exists; + if (removeFolderCheck == false) + dirFolderRemove.Create(); + + oldDirectory = dirOldFolder.GetDirectories(); + + foreach (DirectoryInfo subDirectory in oldDirectory) + { + oldFiles = subDirectory.GetFiles(); + foreach (FileInfo subFile in oldFiles) + subFile.MoveTo(removeFolderPath + DateTime.Now.ToString("yyyyMMddHHmmss") + subFile.Name.ToString()); + } + } + /// + /// 폴더 복사 + /// + /// 복사 출발점 폴더 + /// 복사 도착점 폴더 + public static void CopyToFolder(string departure, string destination) + { + DirectoryInfo dirDestinationFolder = new DirectoryInfo(destination); + if (dirDestinationFolder.Exists == false) + dirDestinationFolder.Create(); + + DirectoryInfo dirDepartureFolder = new DirectoryInfo(departure); + if (dirDepartureFolder.Exists == false) + dirDepartureFolder.Create(); + + FileInfo[] newFiles = dirDepartureFolder.GetFiles(); + + foreach (FileInfo subFile in newFiles) + subFile.CopyTo(destination + subFile.Name.ToString(), true); + } + /// + /// 폴더 이동 + /// + /// 복사 출발점 폴더 + /// 복사 도착점 폴더 + public static void MoveToFolder(string departure, string destination) + { + DirectoryInfo dirDestinationFolder = new DirectoryInfo(destination); + if (dirDestinationFolder.Exists == false) + dirDestinationFolder.Create(); + else + { + dirDestinationFolder.Delete(true); + dirDestinationFolder.Create(); + } + + DirectoryInfo dirDepartureFolder = new DirectoryInfo(departure); + if (dirDepartureFolder.Exists == false) + dirDepartureFolder.Create(); + + FileInfo[] newFiles = dirDepartureFolder.GetFiles(); + + foreach (FileInfo subFile in newFiles) + subFile.MoveTo(destination + subFile.Name.ToString()); + } + public static byte ChecksumCalculator(byte[] array) { byte checksum = 0x00; diff --git a/ITC81DB_0H/DialogForms/DialogFormLogOn.cs b/ITC81DB_0H/DialogForms/DialogFormLogOn.cs index 12c69e4..3490eea 100644 --- a/ITC81DB_0H/DialogForms/DialogFormLogOn.cs +++ b/ITC81DB_0H/DialogForms/DialogFormLogOn.cs @@ -23,6 +23,7 @@ namespace ITC81DB_0H.DialogForms // false : 패스워드 변경, true : 로그인 private bool IsLogin; private string ID; + private string Password; UserManager.UserMgr_user_info_t UserInfo = new UserManager.UserMgr_user_info_t(); @@ -178,8 +179,10 @@ namespace ITC81DB_0H.DialogForms DialogFormLogOn changePW = new DialogFormLogOn(this.ParentForm, this.ParentForm.SystemConfig1.Language, this.textBoxID.Text); if (changePW.ShowDialog() == DialogResult.OK) { - UserManager.UserManager_UserLoginDirect(this.ID, this.textBoxPassword.Text, ref this.UserInfo); + UserManager.UserManager_UserLockRelease(this.textBoxID.Text, false, true); + UserManager.UserManager_UserLoginDirect(this.textBoxID.Text, this.ParentForm.CurrentSystemStatus.CurrentUser.Password, ref this.UserInfo); + //this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.LogOut; this.SuccessLogin(this.UserInfo); } } @@ -189,34 +192,27 @@ namespace ITC81DB_0H.DialogForms catch (Exception ex) { FormMain.Exception(ex); + + this.DialogResult = DialogResult.Cancel; + this.Close(); } - #endregion this.DialogResult = DialogResult.OK; this.Close(); + #endregion } else { - if (this.UserInfo.status == 15) + if (this.UserInfo.status == 15) // USER_MGR_STATUS_PW_PASSWORD_LOCK { this.Close(); - string sValue = ""; - sValue = this.ParentForm.ChildFormMainDisplay.DisplayExpireOfPassword(this.ParentForm.CurrentSystemStatus.CurrentUser.Group); - - if (sValue != "-") + DialogFormLogOn changePW = new DialogFormLogOn(this.ParentForm, this.ParentForm.SystemConfig1.Language, this.textBoxID.Text); + if (changePW.ShowDialog() == DialogResult.OK) { - int intExpireDate = int.Parse(sValue); - if (intExpireDate > 0) - { - DialogFormLogOn changePW = new DialogFormLogOn(this.ParentForm, this.ParentForm.SystemConfig1.Language, this.textBoxID.Text); - if (changePW.ShowDialog() == DialogResult.OK) - { - UserManager.UserManager_UserLoginDirect(this.ID, this.textBoxPassword.Text, ref this.UserInfo); + UserManager.UserManager_UserLoginDirect(this.textBoxID.Text, this.ParentForm.CurrentSystemStatus.CurrentUser.Password, ref this.UserInfo); - this.SuccessLogin(this.UserInfo); - } - } + this.SuccessLogin(this.UserInfo); } } else @@ -360,17 +356,26 @@ namespace ITC81DB_0H.DialogForms return; } - if (this.textBoxID.Text != this.textBoxPassword.Text) + try { - // 비밀번호가 동일하지 않습니다 - DialogFormMessage myMsg = new DialogFormMessage(null, 17, this.ParentForm.SystemConfig1.Language); - myMsg.ShowDialog(); - } - else - { - UserManager.UserManager_UserModifyPW(this.ID, this.textBoxPassword.Text); + if (this.textBoxID.Text != this.textBoxPassword.Text) + { + // 비밀번호가 동일하지 않습니다 + DialogFormMessage myMsg = new DialogFormMessage(null, 17, this.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } + else + { + UserManager.UserManager_UserModifyPW(this.ID, this.textBoxPassword.Text); + this.ParentForm.CurrentSystemStatus.CurrentUser.Password = this.textBoxPassword.Text; - this.DialogResult = DialogResult.OK; + this.DialogResult = DialogResult.OK; + this.Close(); + } + } + catch + { + this.DialogResult = DialogResult.Cancel; this.Close(); } } @@ -429,6 +434,49 @@ namespace ITC81DB_0H.DialogForms if (this.IsPart11 == true) this.ParentForm.ChildFormMainDisplay.Part11AutomaticLogoutReset(); } - #endregion + #endregion + + private void smartButton1_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.IsPart11 == true) + this.ParentForm.ChildFormMainDisplay.Part11AutomaticLogoutReset(); + + this.textBoxID.Text = "admin00"; + this.textBoxPassword.Text = "admin12!"; + + if (this.IsLogin == true) + this.Login(); + else + this.SaveChangePassword(); + } + private void smartButton2_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.IsPart11 == true) + this.ParentForm.ChildFormMainDisplay.Part11AutomaticLogoutReset(); + + this.textBoxID.Text = "honggd"; + this.textBoxPassword.Text = "hong1278@"; + + if (this.IsLogin == true) + this.Login(); + else + this.SaveChangePassword(); + } + private void smartButton3_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.IsPart11 == true) + this.ParentForm.ChildFormMainDisplay.Part11AutomaticLogoutReset(); + + this.textBoxID.Text = "chocjy"; + this.textBoxPassword.Text = "cho1266@"; + + if (this.IsLogin == true) + this.Login(); + else + this.SaveChangePassword(); + } } } \ No newline at end of file diff --git a/ITC81DB_0H/Forms/FormMain.cs b/ITC81DB_0H/Forms/FormMain.cs index 6dd9692..56c190b 100644 --- a/ITC81DB_0H/Forms/FormMain.cs +++ b/ITC81DB_0H/Forms/FormMain.cs @@ -612,12 +612,12 @@ namespace ITC81DB_0H.Forms this.EthernetClientDisconnect(); } - if (this.SystemConfig2.EthernetCommMode != (int)Define.E_EthernetMode.f0_None) + if (this.SystemConfig2.EthernetCommMode != (int)Define.E_CommMode.f0_None) { switch (this.SystemConfig2.EthernetCommMode) { - case (int)Define.E_EthernetMode.f16_OPC: - case (int)Define.E_EthernetMode.f22_Modbus_TCP: + case (int)Define.E_CommMode.f16_OPC: + case (int)Define.E_CommMode.f22_Modbus: this.ChildFormMainDisplay.MainBottomModbusIconAdd(true); break; default: @@ -1143,7 +1143,7 @@ namespace ITC81DB_0H.Forms public void PrintingHeadLine() { - if (this.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f3_Printer) + if (this.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f3_Printer) { this.TransferSerialCOM1("\n--------------------------------"); this.TransferSerialCOM1(" NO GRADE WEIGHT"); @@ -1151,7 +1151,7 @@ namespace ITC81DB_0H.Forms this.TransferSerialCOM1(" COUNT"); this.TransferSerialCOM1("\n--------------------------------"); } - if (this.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f3_Printer) + if (this.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f3_Printer) { this.TransferSerialCOM3("\n--------------------------------"); this.TransferSerialCOM3(" NO GRADE WEIGHT"); @@ -1159,7 +1159,7 @@ namespace ITC81DB_0H.Forms this.TransferSerialCOM3(" COUNT"); this.TransferSerialCOM3("\n--------------------------------"); } - if (this.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f3_Printer) + if (this.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f3_Printer) { this.TransferSerialCOM4("\n--------------------------------"); this.TransferSerialCOM4(" NO GRADE WEIGHT"); @@ -1443,6 +1443,7 @@ namespace ITC81DB_0H.Forms private void InitializeAES() { Encryption.DllAesEncryption_Event += Aes_Encryption_Event; + Encryption.DllAesEncryption_GetVersionDataEvent += AesEncryption_GetVersionDataEvent; Encryption.InitializeEncryption(); } @@ -1573,7 +1574,7 @@ namespace ITC81DB_0H.Forms } #region Test 용 통신 로그 - fullPath = this.PathDataBackupFolder + "Communicationlog.txt"; + fullPath = this.PathDataOthersFolder + "Communicationlog.txt"; this.smartFileCommunicationLog.FilePathName = fullPath; //this.smartFileCommunicationLog.Open(); //this.IsCommunicationLogOpen = true; @@ -1723,6 +1724,18 @@ namespace ITC81DB_0H.Forms for (int i = 0; i < byteData.Length; i++) collection.Add(byteData[i]); } + public byte Checksumcalculator1digit(byte[] byteArray) + { + byte step1 = 0, step2 = 0, step3 = 0; + + for (int i = 0; i < byteArray.Length; i++) + step1 += byteArray[i]; + + step2 = (byte)(step1 & 0x00ff); + step3 = (byte)(0x0100 - step2); + + return step3; + } private void ChecklogPrint(string receiveData, WeightData weight) { @@ -2276,7 +2289,8 @@ namespace ITC81DB_0H.Forms return ret; break; case "SR0": - if ((ret = this.ReceiveCommandSR0(lane, dataID, transferCount, receiveData)) != 0) + case "SM0": + if ((ret = this.ReceiveCommand(cmd, lane, dataID, transferCount, receiveData)) != 0) return ret; break; case "SC0": @@ -2309,10 +2323,6 @@ namespace ITC81DB_0H.Forms if ((ret = this.ReceiveCommandSD0(lane, dataID, transferCount, receiveData)) != 0) return ret; break; - case "SM0": - if ((ret = this.ReceiveCommandSM0(lane, dataID, transferCount, receiveData)) != 0) - return ret; - break; case "SB0": if ((ret = this.ReceiveCommandSB0(lane, dataID, transferCount, receiveData)) != 0) return ret; @@ -2428,7 +2438,7 @@ namespace ITC81DB_0H.Forms { this.IsBootingComplete = true; this.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterCount, ""); - this.SetTrackingHistoryData(Define.E_TrackingOperation.BootingComplete, ""); + this.SetTrackingHistoryData(Define.E_TrackingOperation.Booting, ""); if (this.CurrentSystemStatus.CurrentDisplay != Define.E_DisplayStore.MainDisplay) { @@ -2927,8 +2937,8 @@ namespace ITC81DB_0H.Forms return ret; } - // 운전시 중량(여기서 변경되는 부분은 SM0에도 적용해야 함) - private int ReceiveCommandSR0(string lane, string dataID, string transferCount, string receiveData) + // 운전시 중량 + private int ReceiveCommand(string cmd, string lane, string dataID, string transferCount, string receiveData) { int ret = 0; int temp = 0; @@ -2938,19 +2948,44 @@ namespace ITC81DB_0H.Forms switch (lane) { case "A": - #region Value Assign - this.CurrentWeightData.JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(0, 2)); - this.ConverterAlarm(this.CurrentWeightData, receiveData.Substring(2, 3)); - this.CurrentWeightData.Weight = Helper.StringToWeight(receiveData.Substring(5, 5), this.SystemConfig1.DecimalPlaces); - this.CurrentWeightData.WeightString = receiveData.Substring(5, 5); - this.CurrentWeightData.ADCValue = receiveData.Substring(10, 5); - //this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(15, 4).Trim()); + switch (cmd) + { + case "SR0": // 운전 시 중량 + #region Value Assign + this.CurrentWeightData.JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(0, 2)); + this.ConverterAlarm(this.CurrentWeightData, receiveData.Substring(2, 3)); + this.CurrentWeightData.Weight = Helper.StringToWeight(receiveData.Substring(5, 5), this.SystemConfig1.DecimalPlaces); + this.CurrentWeightData.WeightString = receiveData.Substring(5, 5); + this.CurrentWeightData.ADCValue = receiveData.Substring(10, 5); + //this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(15, 4).Trim()); - this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus); - this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount); + this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus); + this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount); + + this.CurrentWeightData.Status = Define.E_WeightStatus.WeightChange; + #endregion + break; + case "SM0": // 랜덤모드 사용 + 운전 시 중량 + #region Value Assign + this.SystemConfig1.ProductNumber = int.Parse(receiveData.Substring(0, 4)); + + this.CurrentWeightData.JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(4, 2)); + this.ConverterAlarm(this.CurrentWeightData, receiveData.Substring(6, 3)); + this.CurrentWeightData.Weight = Helper.StringToWeight(receiveData.Substring(9, 5), this.SystemConfig1.DecimalPlaces); + this.CurrentWeightData.WeightString = receiveData.Substring(9, 5); + this.CurrentWeightData.ADCValue = receiveData.Substring(14, 5); + this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(19, 4).Trim()); + + this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus); + this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount); + + this.CurrentWeightData.Status = Define.E_WeightStatus.WeightChange; + #endregion + break; + default: + break; + } - this.CurrentWeightData.Status = Define.E_WeightStatus.WeightChange; - #endregion // 통신 제대로 받으면 ACK this.TransferData(string.Format("{0}{1}{2}{3}", CommunicationCommand.RunWeightData, (int)Define.E_ResponseData.ACK, dataID, transferCount), CommunicationID.MainBoard); @@ -3030,7 +3065,7 @@ namespace ITC81DB_0H.Forms case 13: this.TransferSerialCOM1(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); break; - case 17 : + case 17: this.TransferSerialCOM1(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); break; case 18: @@ -3057,17 +3092,29 @@ namespace ITC81DB_0H.Forms this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK } break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: // Modbus RTU(Master 사용 시 - Write multiple register) + case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) { - byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusRTUSlaveIDCOM1, this.SystemConfig2.ModbusRTUStartAddressCOM1); + byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM1, this.SystemConfig2.ModbusRTUStartAddressCOM1); this.TransferSerialCOM1(sendData); } break; - case (int)Define.E_SerialMode.f23_STD2: + case (int)Define.E_CommMode.f23_STD2: this.TransferSerialCOM1(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.TransferSerialCOM1(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.TransferSerialCOM1(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + this.TransferSerialCOM1(this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.TransferSerialCOM1(this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; default: break; } @@ -3160,17 +3207,29 @@ namespace ITC81DB_0H.Forms this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK } break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: // Modbus RTU(Master 사용 시 - Write multiple register) + case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) { - byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusRTUSlaveIDCOM3, this.SystemConfig2.ModbusRTUStartAddressCOM3); + byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM3, this.SystemConfig2.ModbusRTUStartAddressCOM3); this.TransferSerialCOM3(sendData); } break; - case (int)Define.E_SerialMode.f23_STD2: + case (int)Define.E_CommMode.f23_STD2: this.TransferSerialCOM3(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.TransferSerialCOM3(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.TransferSerialCOM3(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + this.TransferSerialCOM3(this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.TransferSerialCOM3(this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; default: break; } @@ -3263,17 +3322,29 @@ namespace ITC81DB_0H.Forms this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK } break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: // Modbus RTU(Master 사용 시 - Write multiple register) + case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) { - byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusRTUSlaveIDCOM4, this.SystemConfig2.ModbusRTUStartAddressCOM4); + byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM4, this.SystemConfig2.ModbusRTUStartAddressCOM4); this.TransferSerialCOM4(sendData); } break; - case (int)Define.E_SerialMode.f23_STD2: + case (int)Define.E_CommMode.f23_STD2: this.TransferSerialCOM4(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.TransferSerialCOM4(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.TransferSerialCOM4(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + this.TransferSerialCOM4(this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.TransferSerialCOM4(this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; default: break; } @@ -3375,7 +3446,7 @@ namespace ITC81DB_0H.Forms this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK } break; - case (int)Define.E_EthernetMode.f22_Modbus_TCP: // 22, Modbus TCP + case (int)Define.E_CommMode.f22_Modbus: // 22, Modbus TCP if (this.SystemConfig2.ModbusTCPSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) { byte[] sendData = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusTCPStartAddress); @@ -3383,10 +3454,23 @@ namespace ITC81DB_0H.Forms this.EthernetServerSendMessage(client, sendData); } break; - case (int)Define.E_EthernetMode.f23_STD2: + case (int)Define.E_CommMode.f23_STD2: this.EthernetServerSendMessage(client, this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.EthernetServerSendMessage(client, this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.EthernetServerSendMessage(client, this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + this.EthernetServerSendMessage(client, this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.EthernetServerSendMessage(client, this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; default: break; } @@ -3500,7 +3584,7 @@ namespace ITC81DB_0H.Forms this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK } break; - case (int)Define.E_EthernetMode.f22_Modbus_TCP: // 22, Modbus TCP + case (int)Define.E_CommMode.f22_Modbus: // 22, Modbus TCP if (this.SystemConfig2.ModbusTCPSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) { this.ClientSendDatabyteArray = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusTCPStartAddress); @@ -3508,870 +3592,21 @@ namespace ITC81DB_0H.Forms this.EthernetWeightDataForModbus(this.ClientSendDatabyteArray); } break; - case (int)Define.E_EthernetMode.f23_STD2: + case (int)Define.E_CommMode.f23_STD2: this.ClientSendDataString = this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem); this.EthernetWeightData(this.ClientSendDataString); break; - default: + case (int)Define.E_CommMode.f24_MULTi_JET: + this.EthernetWeightData(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); break; - } - #endregion - } - break; - default: - break; - } - #endregion - - #region 카운터출력 - - #region Counting Output 1 - temp = this.SystemConfig2.CountingOutput1Number; - - if (this.SystemConfig2.CountingOutput1Mode != 0 && temp != 0) - { - switch (this.SystemConfig2.CountingOutput1Mode) - { - case 1: // Pass - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - case 2: // NG - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over - || this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - case 3: // Over - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - case 4: // Under - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23. 알람 조건이 충족하여 장비가 정지되었습니다 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - default: - break; - } - } - #endregion - - #region Counting Output 2 - temp = this.SystemConfig2.CountingOutput2Number; - - if (this.SystemConfig2.CountingOutput2Mode != 0 && temp != 0) - { - switch (this.SystemConfig2.CountingOutput2Mode) - { - case 1: // Pass - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } - break; - case 2: // NG - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over - || this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } - break; - case 3: // Over - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } - break; - case 4: // Under - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } - break; - default: - break; - } - } - #endregion - - this.ChildFormMainDisplay.MainDisplayWeightBigScreen.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count); - this.ChildFormMainDisplay.MainDisplayWeightSmall.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count); - #endregion - - // CurrentDisplay - switch (this.CurrentSystemStatus.CurrentDisplay) - { - case Define.E_DisplayStore.MainDisplay: - #region MainDisplay - if (this.SystemConfig1.IsBarcodeEnable == true) - { - this.CurrentBarcode.BarcodeDequeue(); - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateBarcodeDisplay(this.CurrentBarcode); - - if (this.CurrentBarcode.GetQueueCount > 0) - this.BarcodeProductChange(this.CurrentBarcode); - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData); - } - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateStartWeightDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData); - - if (this.SystemConfig1.DatabackupFormat == 1) - { - #region OPT1 - 종근당 옵션 - if (this.timeOut.Enabled == true) - this.timeOut.Enabled = false; - - //if (this.CollectionBufferWeightData.Count != 0) - //{ - // if (this.CurrentJudgmentResult.PreviousRejectData != Define.E_JudgmentResult.None) - // this.CollectionBufferWeightData[0].Status = this.CurrentJudgmentResult.PreviousRejectData.ToString(); - // else - // this.CollectionBufferWeightData[0].Status = Define.E_JudgmentResult.OM.ToString(); - // this.DataBackup1(this.CollectionBufferWeightData[0]); - // this.CollectionBufferWeightData.Clear(); - //} - - this.CollectionBufferWeightData.Add(new DataBackupOPT1()); - this.CollectionBufferWeightData[this.CollectionBufferWeightData.Count - 1].SetData( - this.CurrentProductItem, this.CurrentWeightData, this.SystemConfig1, DateTime.Now); - - if (this.CurrentJudgmentSetItem.Sorter2Mode == 3) - this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter2DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter2RunTime * 5) + 1000; - else - this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter1DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter1RunTime * 5) + 1000; - this.timeOut.Enabled = true; - #endregion - } - else - { - #region STD1 - if (this.CurrentWeightData.JudgmentStatus != Define.E_JudgmentStatus.Empty) - this.TrackingInspectionData0(this.CurrentWeightData); - #endregion - } - - // 표준분포 - this.CurrentWeightData.SetNormalDistribution(this.CurrentProductItem.CollectionNormalDistributionRange, this.CurrentWeightData.WeightString); - #endregion - break; - default: - break; - } - break; - default: - break; - } - } - catch - { - ret = -1; - } - - return ret; - } - // 랜덤모드 사용 시 운전시 중량 - private int ReceiveCommandSM0(string lane, string dataID, string transferCount, string receiveData) - { - int ret = 0; - int temp = 0; - - try - { - switch (lane) - { - case "A": - #region Value Assign - this.SystemConfig1.ProductNumber = int.Parse(receiveData.Substring(0, 4)); - - this.CurrentWeightData.JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(4, 2)); - this.ConverterAlarm(this.CurrentWeightData, receiveData.Substring(6, 3)); - this.CurrentWeightData.Weight = Helper.StringToWeight(receiveData.Substring(9, 5), this.SystemConfig1.DecimalPlaces); - this.CurrentWeightData.WeightString = receiveData.Substring(9, 5); - this.CurrentWeightData.ADCValue = receiveData.Substring(14, 5); - this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(19, 4).Trim()); - - this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus); - this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount); - - this.CurrentWeightData.Status = Define.E_WeightStatus.WeightChange; - #endregion - // 통신 제대로 받으면 ACK - this.TransferData(string.Format("{0}{1}{2}{3}", CommunicationCommand.RunWeightData, (int)Define.E_ResponseData.ACK, dataID, transferCount), CommunicationID.MainBoard); - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, - this.CurrentProductItem, this.CurrentWeightData); - - // V6.2.0 - if (this.OverloadWeight <= this.CurrentWeightData.Weight) - { - this.CurrentWeightData.WeightString = this.CurrentCalibrationItem.OverloadWeightString; - this.CurrentWeightData.Weight = this.OverloadWeight; - } - - #region 통신 - // 통신 COM1 - if (this.SystemConfig1.SerialCOM1Mode != 0) - { - #region COM1 - switch (this.SystemConfig1.SerialCOM1Mode) - { - case 1: - this.TransferSerialCOM1(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.TransferSerialCOM1(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.TransferSerialCOM1(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM1(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM1_Step = 1; - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.TransferSerialCOM1(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.TransferSerialCOM1(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.TransferSerialCOM1(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.TransferSerialCOM1(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1)); - break; - case 10: - this.TransferSerialCOM1(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.TransferSerialCOM1(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.TransferSerialCOM1(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.TransferSerialCOM1(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.TransferSerialCOM1(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.TransferSerialCOM1(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.TransferSerialCOM1(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.TransferSerialCOM1(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM1(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_SerialMode.f23_STD2: - this.TransferSerialCOM1(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - default: - break; - } - #endregion - } - // 통신 COM3 - if (this.SystemConfig1.SerialCOM3Mode != 0) - { - #region COM3 - switch (this.SystemConfig1.SerialCOM3Mode) - { - case 1: - this.TransferSerialCOM3(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.TransferSerialCOM3(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.TransferSerialCOM3(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM3(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM3_Step = 1; - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.TransferSerialCOM3(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.TransferSerialCOM3(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.TransferSerialCOM3(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.TransferSerialCOM3(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM3)); - break; - case 10: - this.TransferSerialCOM3(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.TransferSerialCOM3(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.TransferSerialCOM3(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.TransferSerialCOM3(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.TransferSerialCOM3(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.TransferSerialCOM3(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.TransferSerialCOM3(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.TransferSerialCOM3(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM3(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_SerialMode.f23_STD2: - this.TransferSerialCOM3(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - default: - break; - } - #endregion - } - // 통신 COM4 - if (this.SystemConfig1.SerialCOM4Mode != 0) - { - #region COM4 - switch (this.SystemConfig1.SerialCOM4Mode) - { - case 1: - this.TransferSerialCOM4(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.TransferSerialCOM4(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.TransferSerialCOM4(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM4(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM4_Step = 1; - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.TransferSerialCOM4(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.TransferSerialCOM4(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.TransferSerialCOM4(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.TransferSerialCOM4(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM4)); - break; - case 10: - this.TransferSerialCOM4(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.TransferSerialCOM4(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.TransferSerialCOM4(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.TransferSerialCOM4(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.TransferSerialCOM4(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.TransferSerialCOM4(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.TransferSerialCOM4(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.TransferSerialCOM4(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM4(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_SerialMode.f23_STD2: - this.TransferSerialCOM4(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - default: - break; - } - #endregion - } - - // 이더넷 - switch (this.SystemConfig2.EthernetOperationMode) - { - case 1: - if (this.smartTCPMultiServer.ClientInfoList != null) - { - if (this.SystemConfig2.EthernetCommMode != 0) - { - foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList) - { - #region Server - switch (this.SystemConfig2.EthernetCommMode) - { - case 1: - this.EthernetServerSendMessage(client, - this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.EthernetServerSendMessage(client, this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.EthernetServerSendMessage(client, this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM1_Step = 1; - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.EthernetServerSendMessage(client, this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.EthernetServerSendMessage(client, this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.EthernetServerSendMessage(client, this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.EthernetServerSendMessage(client, this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1)); - break; - case 10: - this.EthernetServerSendMessage(client, this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.EthernetServerSendMessage(client, this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.EthernetServerSendMessage(client, this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.EthernetServerSendMessage(client, this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.EthernetServerSendMessage(client, this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.EthernetServerSendMessage(client, this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_EthernetMode.f23_STD2: - this.EthernetServerSendMessage(client, - this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - default: - break; - } - #endregion - } - } - } - break; - case 2: - if (this.SystemConfig2.EthernetCommMode != 0) - { - #region Client - switch (this.SystemConfig2.EthernetCommMode) - { - case 1: - this.EthernetWeightData(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + case (int)Define.E_CommMode.f26_LINX8830: + this.EthernetWeightData(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); break; - case 2: - this.EthernetWeightData(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); + case (int)Define.E_CommMode.f27_MYJET: + this.EthernetWeightData(this.Transfer_27_MYJET(false, this.CurrentWeightData)); break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.EthernetWeightData(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetWeightData(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM1_Step = 1; - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.EthernetWeightData(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.EthernetWeightData(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.EthernetWeightData(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.EthernetWeightData(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1)); - break; - case 10: - this.EthernetWeightData(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.EthernetWeightData(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.EthernetWeightData(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.EthernetWeightData(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.EthernetWeightData(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.EthernetWeightData(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.EthernetWeightData(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.EthernetWeightData(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetWeightData(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_EthernetMode.f23_STD2: - this.EthernetWeightData(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.EthernetWeightData(this.Transfer_28_OPT4(false, this.CurrentWeightData)); break; default: break; @@ -4642,6 +3877,7 @@ namespace ITC81DB_0H.Forms if (this.SystemConfig1.IsBarcodeEnable == true) { this.CurrentBarcode.BarcodeDequeue(); + if (this.ChildFormMainDisplay != null) this.ChildFormMainDisplay.UpdateBarcodeDisplay(this.CurrentBarcode); @@ -4882,6 +4118,15 @@ namespace ITC81DB_0H.Forms #endregion #region Communication protocol + public string PadLeft(int length, string sValue) + { + string temp; + + temp = sValue.PadLeft(length, ' '); + + return temp; + } + private string Transfer_1_STD1(SystemConfigurationItem1 system, WeightData weight, ProductItem product) { StringBuilder sb = new StringBuilder(); @@ -6465,6 +5710,193 @@ namespace ITC81DB_0H.Forms return sb.ToString(); } + private byte[] Transfer_24_MULTi_JET(bool isFillZero, WeightData weight) + { + byte slaveAddress = 1; + string tempString = ""; + byte[] byteArray = new byte[29]; + byte[] date = new UTF8Encoding().GetBytes(string.Format("{0:yyyy.MM.dd}", DateTime.Now)); + byte[] bytes = new byte[7]; + + byteArray[0] = 0x1B; + byteArray[1] = 0x02; + if (this.SystemConfig2.EthernetOperationMode != 0) + { + if (this.smartTCPMultiServer.IsStart == true && this.smartTCPMultiServer.ClientInfoList.Length != 0) + { + string temp = this.smartTCPMultiServer.ClientInfoList[0].strIPAddress.Trim(); + string[] splitTemp = temp.Split('.'); + slaveAddress = Convert.ToByte(splitTemp[3]); + } + } + else + { + if (this.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f24_MULTi_JET) + slaveAddress = Convert.ToByte(this.SystemConfig3.MULTiJETSlaveAddressCOM1); + else if (this.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f24_MULTi_JET) + slaveAddress = Convert.ToByte(this.SystemConfig3.MULTiJETSlaveAddressCOM3); + else if (this.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f24_MULTi_JET) + slaveAddress = Convert.ToByte(this.SystemConfig3.MULTiJETSlaveAddressCOM4); + } + byteArray[2] = slaveAddress; + byteArray[3] = 0x1D; // 고정값, 원격 필드 데이터 다운로드(1D) + byteArray[4] = 0x02; // 데이터 개수 + byteArray[5] = 0x01; // 필드ID(마킹기 화면에서 설정 가능) + byteArray[6] = 0x0A; // 현재 필드ID 자리수 + for (int i = 0; i < date.Length; i++) + byteArray[7 + i] = date[i]; + byteArray[17] = 0x02; // 필드ID(마킹기 화면에서 설정 가능) + byteArray[18] = 0x07; // 현재 필드ID 자리수 + + if (isFillZero == true) + tempString = Helper.StringZeroFillDigits6(Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces)) + 'g'; + else + tempString = this.PadLeft(6, Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces)) + 'g'; + + for (int i = 0; i < tempString.Length; i++) + { + bytes[i] = Convert.ToByte(tempString[i]); + byteArray[19 + i] = bytes[i]; + } + byteArray[26] = 0x1B; + byteArray[27] = 0x03; + byteArray[28] = this.Checksumcalculator1digit(byteArray); + + return byteArray; + } + private byte[] Transfer_26_LINX8830(bool isFillZero, WeightData weight) + { + byte[] byteArray = new byte[13]; + byte[] bytes = new byte[6]; + + // 0~4 고정값 + byteArray[0] = 0x1b; + byteArray[1] = 0x02; + byteArray[2] = 0x1D; + byteArray[3] = 0x06; + byteArray[4] = 0x00; + + if (weight.Weight >= 0.0) + { + if (isFillZero == true) + bytes = new UTF8Encoding().GetBytes(Helper.StringZeroFillDigits6(Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + else + bytes = new UTF8Encoding().GetBytes(this.PadLeft(6, Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + } + else + { + if (isFillZero == true) + bytes = new UTF8Encoding().GetBytes(Helper.StringZeroFillDigits6(Helper.DoubleToString(0.0, this.SystemConfig1.DecimalPlaces))); + else + bytes = new UTF8Encoding().GetBytes(this.PadLeft(6, Helper.DoubleToString(0.0, this.SystemConfig1.DecimalPlaces))); + } + + for (int i = 0; i < bytes.Length; i++) + { + byteArray[i + 5] = bytes[i]; + } + + // 11~12 고정값 + byteArray[11] = 0x1b; + byteArray[12] = 0x03; + + return byteArray; + } + private byte[] Transfer_27_MYJET(bool isFillZero, WeightData weight) + { + byte[] byteArray = new byte[16]; + byte[] bytes = new byte[6]; + + // 0~6 고정값 + byteArray[0] = 0x1b; + byteArray[1] = 0x02; + string[] ethernetAddr = this.SystemConfig2.EthernetAddress.Split('.'); + byteArray[2] = Helper.StringToHex(ethernetAddr[ethernetAddr.Length - 1]); // Server IP 맨 마지막자리 + byteArray[3] = 0x1D; + byteArray[4] = 0x01; + byteArray[5] = 0x01; + byteArray[6] = 0x06; + + if (weight.Weight >= 0.0) + { + if (isFillZero == true) + bytes = new UTF8Encoding().GetBytes(Helper.StringZeroFillDigits6(Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + else + bytes = new UTF8Encoding().GetBytes(this.PadLeft(6, Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + } + else + { + if (isFillZero == true) + bytes = new UTF8Encoding().GetBytes(Helper.StringZeroFillDigits6(Helper.DoubleToString(0.0, this.SystemConfig1.DecimalPlaces))); + else + bytes = new UTF8Encoding().GetBytes(this.PadLeft(6, Helper.DoubleToString(0.0, this.SystemConfig1.DecimalPlaces))); + } + + for (int i = 0; i < bytes.Length; i++) + { + byteArray[i + 7] = bytes[i]; + } + + // 13~14 고정값 + byteArray[13] = 0x1b; + byteArray[14] = 0x03; + + byteArray[15] = 0x00; + byteArray[15] = this.Checksumcalculator1digit(byteArray); + + return byteArray; + } + private string Transfer_28_OPT4(bool isFillZero, WeightData weight) + { + if (this.SystemConfig2.Barcode == 0) + return ""; + + StringBuilder sb = new StringBuilder(); + DateTime nowTime = DateTime.Now; + + sb.Append((char)0x02); + sb.Append(string.Format("{0:yyyy-MM-dd HH:mm:ss}", nowTime)); + sb.Append(";"); + switch (weight.JudgmentStatus) + { + case Define.E_JudgmentStatus.Empty: + break; + case Define.E_JudgmentStatus.Under: + sb.Append("U"); + break; + case Define.E_JudgmentStatus.Pass: + sb.Append("P"); + break; + case Define.E_JudgmentStatus.Over: + sb.Append("O"); + break; + case Define.E_JudgmentStatus.Double: + sb.Append("D"); + break; + case Define.E_JudgmentStatus.Metal: + sb.Append("M"); + break; + case Define.E_JudgmentStatus.ExNg: + sb.Append("E"); + break; + case Define.E_JudgmentStatus.LengthError: + sb.Append("L"); + break; + default: + sb.Append("E"); + break; + } + sb.Append(";"); + if (isFillZero == true) + sb.Append(Helper.StringZeroFillDigits6(Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + else + sb.Append(this.PadLeft(6, Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + sb.Append(";"); + sb.Append(this.CurrentBarcode.BarcodePeek()); + sb.Append((char)0x03); + + return sb.ToString(); + } #endregion #region SerialCommunication @@ -8982,9 +8414,9 @@ namespace ITC81DB_0H.Forms structItem.ModbusTCPSelectFunction = this.SystemConfig2.ModbusTCPSelectFunction; structItem.BLDCTotalMotorNum = this.SystemConfig2.BLDCTotalMotorNum; structItem.ModbusRTUSelectFunction = this.SystemConfig2.ModbusRTUSelectFunction; - structItem.ModbusRTUSlaveIDCOM1 = this.SystemConfig2.ModbusRTUSlaveIDCOM1; - structItem.ModbusRTUSlaveIDCOM3 = this.SystemConfig2.ModbusRTUSlaveIDCOM3; - structItem.ModbusRTUSlaveIDCOM4 = this.SystemConfig2.ModbusRTUSlaveIDCOM4; + structItem.ModbusRTUSlaveIDCOM1 = this.SystemConfig2.ModbusSlaveIDCOM1; + structItem.ModbusRTUSlaveIDCOM3 = this.SystemConfig2.ModbusSlaveIDCOM3; + structItem.ModbusRTUSlaveIDCOM4 = this.SystemConfig2.ModbusSlaveIDCOM4; structItem.Barcode = this.SystemConfig2.Barcode; structItem.EthernetLocalPort = this.SystemConfig2.EthernetLocalPort; structItem.SortingPointLength = this.SystemConfig2.SortingPointLength; @@ -9088,9 +8520,9 @@ namespace ITC81DB_0H.Forms structItem.ModbusTCPSelectFunction = item.ModbusTCPSelectFunction; structItem.BLDCTotalMotorNum = item.BLDCTotalMotorNum; structItem.ModbusRTUSelectFunction = item.ModbusRTUSelectFunction; - structItem.ModbusRTUSlaveIDCOM1 = item.ModbusRTUSlaveIDCOM1; - structItem.ModbusRTUSlaveIDCOM3 = item.ModbusRTUSlaveIDCOM3; - structItem.ModbusRTUSlaveIDCOM4 = item.ModbusRTUSlaveIDCOM4; + structItem.ModbusRTUSlaveIDCOM1 = item.ModbusSlaveIDCOM1; + structItem.ModbusRTUSlaveIDCOM3 = item.ModbusSlaveIDCOM3; + structItem.ModbusRTUSlaveIDCOM4 = item.ModbusSlaveIDCOM4; structItem.Barcode = item.Barcode; structItem.EthernetLocalPort = item.EthernetLocalPort; structItem.SortingPointLength = item.SortingPointLength; @@ -9212,9 +8644,9 @@ namespace ITC81DB_0H.Forms this.SystemConfig2.ModbusTCPSelectFunction = structItem.ModbusTCPSelectFunction; this.SystemConfig2.ModbusRTUSelectFunction = structItem.ModbusRTUSelectFunction; - this.SystemConfig2.ModbusRTUSlaveIDCOM1 = structItem.ModbusRTUSlaveIDCOM1; - this.SystemConfig2.ModbusRTUSlaveIDCOM3 = structItem.ModbusRTUSlaveIDCOM3; - this.SystemConfig2.ModbusRTUSlaveIDCOM4 = structItem.ModbusRTUSlaveIDCOM4; + this.SystemConfig2.ModbusSlaveIDCOM1 = structItem.ModbusRTUSlaveIDCOM1; + this.SystemConfig2.ModbusSlaveIDCOM3 = structItem.ModbusRTUSlaveIDCOM3; + this.SystemConfig2.ModbusSlaveIDCOM4 = structItem.ModbusRTUSlaveIDCOM4; this.SystemConfig2.ModbusRTUStartAddressCOM1 = structItem.ModbusRTUStartAddressCOM1; this.SystemConfig2.ModbusRTUStartAddressCOM3 = structItem.ModbusRTUStartAddressCOM3; @@ -9310,10 +8742,10 @@ namespace ITC81DB_0H.Forms structItem.DummyInt23 = 0; structItem.DummyInt24 = 0; structItem.DummyInt25 = 0; - structItem.DummyInt26 = 0; - structItem.DummyInt27 = 0; - structItem.DummyInt28 = 0; - structItem.DummyInt29 = 0; + structItem.MULTiJETSlaveAddressCOM1 = this.SystemConfig3.MULTiJETSlaveAddressCOM1; + structItem.MULTiJETSlaveAddressCOM3 = this.SystemConfig3.MULTiJETSlaveAddressCOM3; + structItem.MULTiJETSlaveAddressCOM4 = this.SystemConfig3.MULTiJETSlaveAddressCOM4; + structItem.MULTiJETSlaveAddressEthernet = this.SystemConfig3.MULTiJETSlaveAddressEthernet; structItem.StoragePeriod = this.SystemConfig3.StoragePeriod; structItem.DummyString1 = "0"; @@ -9412,10 +8844,10 @@ namespace ITC81DB_0H.Forms structItem.DummyInt23 = 0; structItem.DummyInt24 = 0; structItem.DummyInt25 = 0; - structItem.DummyInt26 = 0; - structItem.DummyInt27 = 0; - structItem.DummyInt28 = 0; - structItem.DummyInt29 = 0; + structItem.MULTiJETSlaveAddressCOM1 = item.MULTiJETSlaveAddressCOM1; + structItem.MULTiJETSlaveAddressCOM3 = item.MULTiJETSlaveAddressCOM3; + structItem.MULTiJETSlaveAddressCOM4 = item.MULTiJETSlaveAddressCOM4; + structItem.MULTiJETSlaveAddressEthernet = item.MULTiJETSlaveAddressEthernet; structItem.StoragePeriod = item.StoragePeriod; structItem.DummyString1 = "0"; @@ -9466,6 +8898,11 @@ namespace ITC81DB_0H.Forms this.SystemConfig3.IsPart11 = structItem.IsPart11; + this.SystemConfig3.MULTiJETSlaveAddressCOM1 = structItem.MULTiJETSlaveAddressCOM1; + this.SystemConfig3.MULTiJETSlaveAddressCOM3 = structItem.MULTiJETSlaveAddressCOM3; + this.SystemConfig3.MULTiJETSlaveAddressCOM4 = structItem.MULTiJETSlaveAddressCOM4; + this.SystemConfig3.MULTiJETSlaveAddressEthernet = structItem.MULTiJETSlaveAddressEthernet; + this.SystemConfig3.StoragePeriod = structItem.StoragePeriod; } catch @@ -10423,8 +9860,8 @@ namespace ITC81DB_0H.Forms structItem.Dummy3 = "0"; structItem.Dummy4 = "0"; structItem.Dummy5 = "0"; - structItem.Dummy6 = "0"; - structItem.Dummy7 = "0"; + structItem.OPT2ZeroZoneCycle = "0"; + structItem.OPT2ZeroZoneCount = "0"; this.smartFileIO.WriteStructure(structItem, 0); } @@ -10466,8 +9903,8 @@ namespace ITC81DB_0H.Forms structItem.Dummy3 = "0"; structItem.Dummy4 = "0"; structItem.Dummy5 = "0"; - structItem.Dummy6 = "0"; - structItem.Dummy7 = "0"; + structItem.OPT2ZeroZoneCycle = "0"; + structItem.OPT2ZeroZoneCount = "0"; this.smartFileIO.WriteStructure(structItem, 0); this.smartFileIO.Close(); @@ -10790,8 +10227,8 @@ namespace ITC81DB_0H.Forms structItem.OverRange = this.CurrentProductItem.OverRange; structItem.UnderRange = this.CurrentProductItem.UnderRange; structItem.TareRange = this.CurrentProductItem.TareRange; - structItem.DummyString1 = "0"; - structItem.DummyString2 = "0"; + structItem.DispenserDelayTime1 = this.CurrentProductItem.DispenserDelayTime1; + structItem.DispenserDelayTime2 = this.CurrentProductItem.DispenserDelayTime2; structItem.DummyString3 = "0"; structItem.DummyString4 = "0"; @@ -10842,8 +10279,8 @@ namespace ITC81DB_0H.Forms structItem.PassRange = item.PassRange; structItem.UnderRange = item.UnderRange; structItem.TareRange = item.TareRange; - structItem.DummyString1 = "0"; - structItem.DummyString2 = "0"; + structItem.DispenserDelayTime1 = item.DispenserDelayTime1; + structItem.DispenserDelayTime2 = item.DispenserDelayTime2; structItem.DummyString3 = "0"; structItem.DummyString4 = "0"; @@ -10880,8 +10317,8 @@ namespace ITC81DB_0H.Forms structItem.PassRange = items[i].PassRange; structItem.UnderRange = items[i].UnderRange; structItem.TareRange = items[i].TareRange; - structItem.DummyString1 = "0"; - structItem.DummyString2 = "0"; + structItem.DispenserDelayTime1 = items[i].DispenserDelayTime1; + structItem.DispenserDelayTime2 = items[i].DispenserDelayTime2; structItem.DummyString3 = "0"; structItem.DummyString4 = "0"; @@ -10922,6 +10359,8 @@ namespace ITC81DB_0H.Forms item.OverRange = structItem.OverRange; item.UnderRange = structItem.UnderRange; item.TareRange = structItem.TareRange; + item.DispenserDelayTime1 = structItem.DispenserDelayTime1; + item.DispenserDelayTime2 = structItem.DispenserDelayTime2; } catch { @@ -10992,6 +10431,8 @@ namespace ITC81DB_0H.Forms items[i].PassRange = structProduct.PassRange; items[i].UnderRange = structProduct.UnderRange; items[i].TareRange = structProduct.TareRange; + items[i].DispenserDelayTime1 = structProduct.DispenserDelayTime1; + items[i].DispenserDelayTime2 = structProduct.DispenserDelayTime2; } } } @@ -11597,6 +11038,7 @@ namespace ITC81DB_0H.Forms UserManager.UserListLoginDataEvent += this.UserManager_UserListLoginDataEvent; UserManager.UserListLogoutDataEvent += this.UserManager_UserListLogoutDataEvent; UserManager.UserListGetListNameDataEvent += this.UserManager_UserListGetListNameDataEvent; + UserManager.UserListGetVersionDataEvent += this.UserManager_UserListGetVersionDataEvent; UserManager.IntializeUserManager(this.PathSDCardSystemFile1Folder); @@ -12860,12 +12302,12 @@ namespace ITC81DB_0H.Forms this.OpenSmartUartLink(); #region Communication - if (this.SystemConfig1.SerialCOM1Mode != (int)Define.E_SerialMode.f0_None) + if (this.SystemConfig1.SerialCOM1Mode != (int)Define.E_CommMode.f0_None) { switch (this.SystemConfig1.SerialCOM1Mode) { - case (int)Define.E_SerialMode.f16_OPC: - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f16_OPC: + case (int)Define.E_CommMode.f22_Modbus: this.ChildFormMainDisplay.MainBottomModbusIconAdd(true); break; default: @@ -12876,12 +12318,12 @@ namespace ITC81DB_0H.Forms this.OpenSerialCOM1(); } - if (this.SystemConfig1.SerialCOM3Mode != (int)Define.E_SerialMode.f0_None) + if (this.SystemConfig1.SerialCOM3Mode != (int)Define.E_CommMode.f0_None) { switch (this.SystemConfig1.SerialCOM3Mode) { - case (int)Define.E_SerialMode.f16_OPC: - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f16_OPC: + case (int)Define.E_CommMode.f22_Modbus: this.ChildFormMainDisplay.MainBottomModbusIconAdd(true); break; default: @@ -12892,12 +12334,12 @@ namespace ITC81DB_0H.Forms this.OpenSerialCOM3(); } - if (this.SystemConfig1.SerialCOM4Mode != (int)Define.E_SerialMode.f0_None) + if (this.SystemConfig1.SerialCOM4Mode != (int)Define.E_CommMode.f0_None) { switch (this.SystemConfig1.SerialCOM4Mode) { - case (int)Define.E_SerialMode.f16_OPC: - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f16_OPC: + case (int)Define.E_CommMode.f22_Modbus: this.ChildFormMainDisplay.MainBottomModbusIconAdd(true); break; default: @@ -13088,7 +12530,7 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f16_OPC: + case (int)Define.E_CommMode.f16_OPC: #region OPC try { @@ -13096,9 +12538,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM1); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM1); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM1); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM1); this.TransferSerialCOM1(responseData); @@ -13111,11 +12553,11 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f22_Modbus: #region Modbus RTU this.ChildFormMainDisplay.MainDisplayModbus.UpdateReceiveCount(); - if (this.SystemConfig2.ModbusRTUSlaveIDCOM1 != Convert.ToInt32(readByte[0])) + if (this.SystemConfig2.ModbusSlaveIDCOM1 != Convert.ToInt32(readByte[0])) return; if (readByte[1] == 0x03) // Read Holding Register @@ -13127,9 +12569,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_03); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM1, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM1, ModbusFunctionCode.FunctionCode_03); else - responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM1, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM1, ModbusFunctionCode.FunctionCode_03); this.TransferSerialCOM1(responseData); @@ -13204,9 +12646,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM1); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM1); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM1); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM1); this.TransferSerialCOM1(responseData); @@ -13399,7 +12841,7 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f16_OPC: + case (int)Define.E_CommMode.f16_OPC: #region OPC try { @@ -13407,9 +12849,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM3); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM3); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM3); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM3); this.TransferSerialCOM3(responseData); @@ -13422,11 +12864,11 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f22_Modbus: #region Modbus RTU this.ChildFormMainDisplay.MainDisplayModbus.UpdateReceiveCount(); - if (this.SystemConfig2.ModbusRTUSlaveIDCOM3 != Convert.ToInt32(readByte[0])) + if (this.SystemConfig2.ModbusSlaveIDCOM3 != Convert.ToInt32(readByte[0])) return; if (readByte[1] == 0x03) // Read Holding Register @@ -13438,9 +12880,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_03); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM3, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM3, ModbusFunctionCode.FunctionCode_03); else - responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM3, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM3, ModbusFunctionCode.FunctionCode_03); this.TransferSerialCOM3(responseData); @@ -13515,9 +12957,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM3); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM3); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM3); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM3); this.TransferSerialCOM3(responseData); @@ -13741,7 +13183,7 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f16_OPC: + case (int)Define.E_CommMode.f16_OPC: #region OPC try { @@ -13749,9 +13191,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM4); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM4); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM4); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM4); this.TransferSerialCOM4(responseData); @@ -13764,11 +13206,11 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f22_Modbus: #region Modbus RTU this.ChildFormMainDisplay.MainDisplayModbus.UpdateReceiveCount(); - if (this.SystemConfig2.ModbusRTUSlaveIDCOM4 != Convert.ToInt32(readByte[0])) + if (this.SystemConfig2.ModbusSlaveIDCOM4 != Convert.ToInt32(readByte[0])) return; if (readByte[1] == 0x03) // Read Holding Register @@ -13780,9 +13222,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_03); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM4, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM4, ModbusFunctionCode.FunctionCode_03); else - responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM4, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM4, ModbusFunctionCode.FunctionCode_03); this.TransferSerialCOM4(responseData); @@ -13857,9 +13299,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM4); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM4); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM4); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM4); this.TransferSerialCOM4(responseData); @@ -14026,7 +13468,7 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_EthernetMode.f16_OPC: + case (int)Define.E_CommMode.f16_OPC: #region OPC if (this.smartTCPMultiServer.ClientInfoList != null) { @@ -14045,7 +13487,7 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_EthernetMode.f22_Modbus_TCP: + case (int)Define.E_CommMode.f22_Modbus: #region Modbus TCP if (this.smartTCPMultiServer.ClientInfoList != null) { @@ -14664,6 +14106,17 @@ namespace ITC81DB_0H.Forms { } } + private void UserManager_UserListGetVersionDataEvent(object data) + { + try + { + if (this.ChildFormMenu.CenterInforSystem != null) + this.ChildFormMenu.CenterInforSystem.UpdatePart11UserManagerVersionDisplay(data.ToString()); + } + catch + { + } + } #endregion #region EncryptionEvent @@ -14683,6 +14136,11 @@ namespace ITC81DB_0H.Forms } } + private void AesEncryption_GetVersionDataEvent(object data) + { + if (this.ChildFormMenu.CenterInforSystem != null) + this.ChildFormMenu.CenterInforSystem.UpdatePart11AesEncryptionVersionDisplay(data.ToString()); + } #endregion #endregion } diff --git a/ITC81DB_0H/Forms/FormMainDisplay.cs b/ITC81DB_0H/Forms/FormMainDisplay.cs index 775ddd2..a1dd9dd 100644 --- a/ITC81DB_0H/Forms/FormMainDisplay.cs +++ b/ITC81DB_0H/Forms/FormMainDisplay.cs @@ -46,6 +46,7 @@ namespace ITC81DB_0H.Forms this.ParentForm = parent; this.InitializeDesign(); + this.InitializeControl(); this.DefaultSetting(); } #endregion @@ -193,19 +194,6 @@ namespace ITC81DB_0H.Forms this.Controls.Add(this.MainAlarm); this.Controls.Add(this.MainDisplayFeedback); this.Controls.Add(this.MainDisplayModbus); - - if (this.ParentForm.SystemConfig1.IsLogin == true) - { - this.labelUserID.Visible = true; - this.labelUserLevel.Visible = true; - this.buttonUser.Visible = true; - } - else - { - this.labelUserID.Visible = false; - this.labelUserLevel.Visible = false; - this.buttonUser.Visible = false; - } } private void DefaultSetting() { @@ -216,9 +204,7 @@ namespace ITC81DB_0H.Forms this.pictureBoxStop.Visible = true; this.pictureBoxStart.Visible = false; - - this.InitializeControl(); - + // 알람 표시 this.pictureBoxIconAlarm.Visible = false; this.MainAlarm.Visible = false; @@ -235,14 +221,26 @@ namespace ITC81DB_0H.Forms else this.buttonConveyorUpDown.Visible = false; - if (this.ParentForm.SystemConfig1.IsLogin == true) - this.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus); + if (this.ParentForm.SystemConfig1.IsLogin == false) + this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.NotLogin; else - this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Admin; + { + this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.LogOut; + + this.LoginVisible(true); + } + + this.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus); this.CurrentDisplay = Define.E_MainDisplayStore.BarGraph; this.DisplayBottomMain(this.CurrentDisplay); } + public void LoginVisible(bool bValue) + { + this.buttonUser.Visible = bValue; + this.labelUserID.Visible = bValue; + this.labelUserLevel.Visible = bValue; + } public void DisplayHiddenMenu(bool visible) { @@ -407,8 +405,6 @@ namespace ITC81DB_0H.Forms { string id = "", group = "", expireDate = ""; - this.labelExpireOfPassword.Visible = true; - switch (status.CurrentUser.Group) { case Define.E_UserGroup.LogOut: @@ -440,6 +436,9 @@ namespace ITC81DB_0H.Forms case Define.E_UserGroup.Level1: id = status.CurrentUser.ID; group = this.ParentForm.SystemConfig2.UserGroupLevel1Name; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; @@ -459,6 +458,9 @@ namespace ITC81DB_0H.Forms id = status.CurrentUser.ID; group = this.ParentForm.SystemConfig2.UserGroupLevel2Name; + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; @@ -476,6 +478,9 @@ namespace ITC81DB_0H.Forms case Define.E_UserGroup.Level3: id = status.CurrentUser.ID; group = this.ParentForm.SystemConfig2.UserGroupLevel3Name; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; @@ -504,6 +509,9 @@ namespace ITC81DB_0H.Forms else group = "Administrator"; + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; @@ -531,6 +539,9 @@ namespace ITC81DB_0H.Forms else group = "Developer"; + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; @@ -551,8 +562,6 @@ namespace ITC81DB_0H.Forms this.buttonClear.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsMainDisplayClear; this.buttonSubMenu.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsMainDisplaySubMenu; - this.labelExpireOfPassword.Visible = false; - if (status.Equipment == Define.E_EquipmentStatus.Stop) this.buttonMenu.Enabled = true; else @@ -571,6 +580,8 @@ namespace ITC81DB_0H.Forms else group = "Log out"; + this.labelExpireOfPassword.Visible = false; + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff; @@ -748,7 +759,7 @@ namespace ITC81DB_0H.Forms } public void ChangeProductNumber(int productNumber) { - this.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ProductNumber, "", + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ProductNo, "", this.ParentForm.SystemConfig1.ProductNumber.ToString(), productNumber.ToString()); this.ParentForm.ClearAlarm(0); @@ -866,6 +877,10 @@ namespace ITC81DB_0H.Forms else { this.buttonUser.ButtonUp(); + + this.DisplayRefresh(this.ParentForm.CurrentSystemStatus); + this.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus); + this.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus); } } public void Logout() diff --git a/ITC81DB_0H/Forms/FormMenu.cs b/ITC81DB_0H/Forms/FormMenu.cs index 2d65679..9c8134d 100644 --- a/ITC81DB_0H/Forms/FormMenu.cs +++ b/ITC81DB_0H/Forms/FormMenu.cs @@ -229,6 +229,14 @@ namespace ITC81DB_0H.Forms this.CollectionButtonMenu.Add(this.buttonMain); this.InitializeControl(); + + if (this.ParentForm.SystemConfig1.IsLogin == true) + this.LoginVisible(true); + } + public void LoginVisible(bool bValue) + { + this.labelUserID.Visible = bValue; + this.labelUserLevel.Visible = bValue; } private void InitializeControl() { @@ -399,271 +407,6 @@ namespace ITC81DB_0H.Forms this.Controls.Add(this.CenterInforSystem3); } - private bool UI_Invoke(ThreadStart invoker) - { - try - { - if (this.InvokeRequired) - { - if (this.IsDisposed) - return true; - - this.Invoke(invoker); - } - else - { - invoker(); - } - - return true; - - } - catch (Exception e) - { - return false; - } - - } - - public void CurrentControlEnable(bool enable) - { - foreach (SmartButton button in this.CollectionButtonMenu) - button.Enabled = enable; - - switch (this.SelectedSideMenu) - { - case Define.E_MenuSide.Basic: - this.BottomBasic.CurrentControlEnable(enable); - break; - case Define.E_MenuSide.Configuration: - this.BottomConfiguration.CurrentControlEnable(enable); - break; - case Define.E_MenuSide.System: - this.BottomSystem.CurrentControlEnable(enable); - break; - case Define.E_MenuSide.Equipment: - this.BottomEquipment.CurrentControlEnable(enable); - break; - case Define.E_MenuSide.Information: - this.BottomInformation.CurrentControlEnable(enable); - break; - default: - break; - } - } - public void UpdateDisplayUser(SystemStatus status) - { - string id = "", group = "", expireDate = ""; - - this.labelExpireOfPassword.Visible = true; - - switch (status.CurrentUser.Group) - { - case Define.E_UserGroup.LogOut: - id = ""; - if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) - group = "Ausloggen"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) - group = "登出"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) - group = "Выйти."; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) - group = "Cerrar sesión"; - else - group = "Log out"; - - this.labelExpireOfPassword.Visible = false; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff; - - this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsBasicEnable; - this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsConfiEnable; - this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsSystemEnable; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsLogEnable; - this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsInforEnable; - break; - case Define.E_UserGroup.Level1: - id = status.CurrentUser.ID; - group = this.ParentForm.SystemConfig2.UserGroupLevel1Name; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; - - this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsBasicEnable; - this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsConfiEnable; - this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsSystemEnable; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsLogEnable; - this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsInforEnable; - break; - case Define.E_UserGroup.Level2: - id = status.CurrentUser.ID; - group = this.ParentForm.SystemConfig2.UserGroupLevel2Name; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; - - this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsBasicEnable; - this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsConfiEnable; - this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsSystemEnable; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsLogEnable; - this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsInforEnable; - break; - case Define.E_UserGroup.Level3: - id = status.CurrentUser.ID; - group = this.ParentForm.SystemConfig2.UserGroupLevel3Name; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; - - this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsBasicEnable; - this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsConfiEnable; - this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsSystemEnable; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsLogEnable; - this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsInforEnable; - break; - case Define.E_UserGroup.Admin: - id = status.CurrentUser.ID; - if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) - group = "Administrator"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) - group = "行政"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) - group = "Администратор"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) - group = "Administrator"; - else - group = "Administrator"; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; - - this.buttonBasic.Enabled = true; - this.buttonConfiguration.Enabled = true; - this.buttonSystem.Enabled = true; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = true; - this.buttonInformation.Enabled = true; - break; - case Define.E_UserGroup.Developer: - id = status.CurrentUser.ID; - if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) - group = "Entwickler"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) - group = "开发商"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) - group = "Разработчик"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) - group = "Desarrollador"; - else - group = "Developer"; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; - - this.buttonBasic.Enabled = true; - this.buttonConfiguration.Enabled = true; - this.buttonSystem.Enabled = true; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = true; - this.buttonInformation.Enabled = true; - break; - case Define.E_UserGroup.NotLogin: - this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsBasicEnable; - this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsConfiEnable; - this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsSystemEnable; - this.buttonEquipment.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsEquipEnable; - this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsLogEnable; - this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsInforEnable; - break; - default: - id = ""; - if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) - group = "Ausloggen"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) - group = "登出"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) - group = "Выйти."; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) - group = "Cerrar sesión"; - else - group = "Log out"; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff; - - this.buttonBasic.Enabled = false; - this.buttonConfiguration.Enabled = false; - this.buttonSystem.Enabled = false; - this.buttonEquipment.Enabled = false; - this.buttonLog.Enabled = true; - this.buttonInformation.Enabled = true; - break; - } - - if (this.ParentForm.SystemConfig1.IsLogin == true) - { - if (this.ParentForm.SystemConfig3.IsPart11 == true) - { - expireDate = this.ParentForm.ChildFormMainDisplay.DisplayExpireOfPassword(status.CurrentUser.Group); - if (expireDate != "-") - { - int intExpireDate = int.Parse(expireDate); - - if (intExpireDate == 0) - { - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOff; - this.labelExpireOfPassword.Text = "D-0"; - } - else if (intExpireDate < 0) - { - if (intExpireDate * -1 > this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword) - expireDate = "-" + (this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword - 1).ToString(); - - if (intExpireDate >= -10) - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOff; - else - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; - this.labelExpireOfPassword.Text = "D" + expireDate; - } - else - { - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; - this.labelExpireOfPassword.Text = "D+" + expireDate; - } - } - else - { - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; - this.labelExpireOfPassword.Text = "-"; - } - } - else - { - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; - this.labelExpireOfPassword.Text = "-"; - } - } - - if (this.labelUserLevel.Text != group) - this.labelUserLevel.Text = group; - if (this.labelUserID.Text != id) - this.labelUserID.Text = id; - } - private bool EquipmentRun(Define.E_DisplayStore currentDisplay) - { - if (currentDisplay == Define.E_DisplayStore.SystemJudgment - || currentDisplay == Define.E_DisplayStore.SystemSorterSetting - || currentDisplay == Define.E_DisplayStore.SystemBLDCMotorSetting) - return true; - else - return false; - } - #region Log private void CreateHeaderFile(string headerFilePath, string sourceFilePath, FileHeaderItem header) { @@ -1149,11 +892,286 @@ namespace ITC81DB_0H.Forms } #endregion - // Menu User - public void UpdateLevelNameDisplay(SystemConfigurationItem2 data) + private bool UI_Invoke(ThreadStart invoker) { - this.CenterEquipUser.UpdateLevelNameDisplay(data); + try + { + if (this.InvokeRequired) + { + if (this.IsDisposed) + return true; + + this.Invoke(invoker); + } + else + { + invoker(); + } + + return true; + + } + catch (Exception e) + { + return false; + } + } + + public void CurrentControlEnable(bool enable) + { + foreach (SmartButton button in this.CollectionButtonMenu) + button.Enabled = enable; + + switch (this.SelectedSideMenu) + { + case Define.E_MenuSide.Basic: + this.BottomBasic.CurrentControlEnable(enable); + break; + case Define.E_MenuSide.Configuration: + this.BottomConfiguration.CurrentControlEnable(enable); + break; + case Define.E_MenuSide.System: + this.BottomSystem.CurrentControlEnable(enable); + break; + case Define.E_MenuSide.Equipment: + this.BottomEquipment.CurrentControlEnable(enable); + break; + case Define.E_MenuSide.Information: + this.BottomInformation.CurrentControlEnable(enable); + break; + default: + break; + } + } + public void UpdateDisplayUser(SystemStatus status) + { + string id = "", group = "", expireDate = ""; + + switch (status.CurrentUser.Group) + { + case Define.E_UserGroup.LogOut: + id = ""; + if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + group = "Ausloggen"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) + group = "登出"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) + group = "Выйти."; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + group = "Cerrar sesión"; + else + group = "Log out"; + + this.labelExpireOfPassword.Visible = false; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff; + + this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsBasicEnable; + this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsConfiEnable; + this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsSystemEnable; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsLogEnable; + this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsInforEnable; + break; + case Define.E_UserGroup.Level1: + id = status.CurrentUser.ID; + group = this.ParentForm.SystemConfig2.UserGroupLevel1Name; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; + + this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsBasicEnable; + this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsConfiEnable; + this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsSystemEnable; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsLogEnable; + this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsInforEnable; + break; + case Define.E_UserGroup.Level2: + id = status.CurrentUser.ID; + group = this.ParentForm.SystemConfig2.UserGroupLevel2Name; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; + + this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsBasicEnable; + this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsConfiEnable; + this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsSystemEnable; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsLogEnable; + this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsInforEnable; + break; + case Define.E_UserGroup.Level3: + id = status.CurrentUser.ID; + group = this.ParentForm.SystemConfig2.UserGroupLevel3Name; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; + + this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsBasicEnable; + this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsConfiEnable; + this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsSystemEnable; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsLogEnable; + this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsInforEnable; + break; + case Define.E_UserGroup.Admin: + id = status.CurrentUser.ID; + if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + group = "Administrator"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) + group = "行政"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) + group = "Администратор"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + group = "Administrator"; + else + group = "Administrator"; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; + + this.buttonBasic.Enabled = true; + this.buttonConfiguration.Enabled = true; + this.buttonSystem.Enabled = true; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = true; + this.buttonInformation.Enabled = true; + break; + case Define.E_UserGroup.Developer: + id = status.CurrentUser.ID; + if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + group = "Entwickler"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) + group = "开发商"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) + group = "Разработчик"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + group = "Desarrollador"; + else + group = "Developer"; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; + + this.buttonBasic.Enabled = true; + this.buttonConfiguration.Enabled = true; + this.buttonSystem.Enabled = true; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = true; + this.buttonInformation.Enabled = true; + break; + case Define.E_UserGroup.NotLogin: + this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsBasicEnable; + this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsConfiEnable; + this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsSystemEnable; + this.buttonEquipment.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsEquipEnable; + this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsLogEnable; + this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsInforEnable; + break; + default: + id = ""; + if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + group = "Ausloggen"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) + group = "登出"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) + group = "Выйти."; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + group = "Cerrar sesión"; + else + group = "Log out"; + + this.labelExpireOfPassword.Visible = false; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff; + + this.buttonBasic.Enabled = false; + this.buttonConfiguration.Enabled = false; + this.buttonSystem.Enabled = false; + this.buttonEquipment.Enabled = false; + this.buttonLog.Enabled = true; + this.buttonInformation.Enabled = true; + break; + } + + if (this.ParentForm.SystemConfig1.IsLogin == true) + { + if (this.ParentForm.SystemConfig3.IsPart11 == true) + { + expireDate = this.ParentForm.ChildFormMainDisplay.DisplayExpireOfPassword(status.CurrentUser.Group); + if (expireDate != "-") + { + int intExpireDate = int.Parse(expireDate); + + if (intExpireDate == 0) + { + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOff; + this.labelExpireOfPassword.Text = "D-0"; + } + else if (intExpireDate < 0) + { + if (intExpireDate * -1 > this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword) + expireDate = "-" + (this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword - 1).ToString(); + + if (intExpireDate >= -10) + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOff; + else + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; + this.labelExpireOfPassword.Text = "D" + expireDate; + } + else + { + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; + this.labelExpireOfPassword.Text = "D+" + expireDate; + } + } + else + { + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; + this.labelExpireOfPassword.Text = "-"; + } + } + else + { + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; + this.labelExpireOfPassword.Text = "-"; + } + } + + if (this.labelUserLevel.Text != group) + this.labelUserLevel.Text = group; + if (this.labelUserID.Text != id) + this.labelUserID.Text = id; + } + private bool EquipmentRun(Define.E_DisplayStore currentDisplay) + { + if (currentDisplay == Define.E_DisplayStore.SystemJudgment + || currentDisplay == Define.E_DisplayStore.SystemSorterSetting + || currentDisplay == Define.E_DisplayStore.SystemBLDCMotorSetting) + return true; + else + return false; + } + public void CallBackGetUserData(UserManager.UserMgr_user_list_t userList) { this.CenterEquipUser.CallBackGetUserData(userList); @@ -2266,19 +2284,6 @@ namespace ITC81DB_0H.Forms this.EncFileName = ""; this.SelectedDataType = Define.E_DataType.None; - if (this.ParentForm.SystemConfig1.IsLogin == false) - { - this.labelUserID.Visible = false; - this.labelUserLevel.Visible = false; - this.labelExpireOfPassword.Visible = false; - } - else - { - this.labelUserID.Visible = true; - this.labelUserLevel.Visible = true; - this.labelExpireOfPassword.Visible = true; - } - if (this.buttonBasic.Enabled == true) { this.buttonBasic.ButtonDown(); diff --git a/ITC81DB_0H/ITC81DB_2H.csproj b/ITC81DB_0H/ITC81DB_2H.csproj index 461a433..a5efc11 100644 --- a/ITC81DB_0H/ITC81DB_2H.csproj +++ b/ITC81DB_0H/ITC81DB_2H.csproj @@ -119,6 +119,12 @@ ControlCenterLogOthers.cs + + UserControl + + + ControlConfiMULTiJET.cs + UserControl @@ -655,6 +661,10 @@ ControlConfiModbus.cs Designer + + ControlConfiMULTiJET.cs + Designer + ControlConfiSerialBarcode.cs Designer diff --git a/ITC81DB_0H/Part11_Encryption/Encryption.Define.cs b/ITC81DB_0H/Part11_Encryption/Encryption.Define.cs index 5d5acb4..e29040f 100644 --- a/ITC81DB_0H/Part11_Encryption/Encryption.Define.cs +++ b/ITC81DB_0H/Part11_Encryption/Encryption.Define.cs @@ -10,12 +10,21 @@ namespace ITC81DB_0H.Part11_Encryption { private const string PathDll = "SD Card\\Run\\DllAes128.dll"; + private delegate void fnAesVersionCB(StringBuilder version); + private static fnAesVersionCB fnAesVersionCallBack; + public delegate void fnAesEncryptionCB(ref auth_encryption_status_t encryption_status); public static fnAesEncryptionCB fnAesEncryptionCallBack; + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + private static extern void DLL_AES_Register_VersionCB(fnAesVersionCB func); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] public static extern void DLL_AES_Register_EncryptionCB(fnAesEncryptionCB func); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + private static extern void DLL_SAES_Getversion(); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] public static extern void DLL_AES_Activation(); diff --git a/ITC81DB_0H/Part11_Encryption/Encryption.cs b/ITC81DB_0H/Part11_Encryption/Encryption.cs index a631eac..533d8fb 100644 --- a/ITC81DB_0H/Part11_Encryption/Encryption.cs +++ b/ITC81DB_0H/Part11_Encryption/Encryption.cs @@ -10,10 +10,14 @@ namespace ITC81DB_0H.Part11_Encryption { public delegate void ObjectEventHandler(object data); public static event ObjectEventHandler DllAesEncryption_Event; + public static event ObjectEventHandler DllAesEncryption_GetVersionDataEvent; public static void InitializeEncryption() { // register callback + fnAesVersionCallBack = AesEncryption_VersionCallback; + DLL_AES_Register_VersionCB(fnAesVersionCallBack); + fnAesEncryptionCallBack = cbAesEncryption; DLL_AES_Register_EncryptionCB(fnAesEncryptionCallBack); @@ -29,6 +33,10 @@ namespace ITC81DB_0H.Part11_Encryption DLL_AES_Encryption(pInFileName, pOutFileName, encrypt, compress); } + public static void AesEncryption_GetVersion() + { + DLL_SAES_Getversion(); + } #endregion #region Aes_Callback @@ -37,6 +45,18 @@ namespace ITC81DB_0H.Part11_Encryption if (DllAesEncryption_Event != null) DllAesEncryption_Event(encryption_status); } + private static void AesEncryption_VersionCallback(StringBuilder version) + { + try + { + if (DllAesEncryption_GetVersionDataEvent != null) + DllAesEncryption_GetVersionDataEvent(version); + } + catch + { + + } + } #endregion } } diff --git a/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs b/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs index a16cc08..05f487d 100644 --- a/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs +++ b/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs @@ -12,6 +12,9 @@ namespace ITC81DB_0H.Part11_UserManager { private const string PathDll = "SD Card\\Run\\DllUserMgr.dll"; + private delegate void fnUserMgrVersionCB(StringBuilder version); + private static fnUserMgrVersionCB fnUserMgrVersionCallBack; + private delegate void fnUserMgrDebugCB(int level, StringBuilder pMessage); private static fnUserMgrDebugCB fnUserMgrDebugCallBack; @@ -51,6 +54,8 @@ namespace ITC81DB_0H.Part11_UserManager private delegate void fnUserMgrGetListNameCB(ref UserMgr_user_list_name_t user_name); private static fnUserMgrGetListNameCB fnUsermgrGetListNameCallBack; + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + private static extern void DLL_UserMgr_Register_VersionCB(fnUserMgrVersionCB func); [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] private static extern void DLL_UserMgr_Register_DebugCB(fnUserMgrDebugCB func); @@ -94,6 +99,9 @@ namespace ITC81DB_0H.Part11_UserManager [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] private static extern void DLL_UserMgr_HelloWorld(); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + private static extern void DLL_UserMgr_Getversion(); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] private static extern void DLL_UserMgr_Activation(); diff --git a/ITC81DB_0H/Part11_UserManager/UserManager.cs b/ITC81DB_0H/Part11_UserManager/UserManager.cs index b5c95a2..f0bfb79 100644 --- a/ITC81DB_0H/Part11_UserManager/UserManager.cs +++ b/ITC81DB_0H/Part11_UserManager/UserManager.cs @@ -19,6 +19,7 @@ namespace ITC81DB_0H.Part11_UserManager public static event ObjectEventHandler UserListLoginTimeoutDataEvent; public static event ObjectEventHandler UserListGetListDataEvent; public static event ObjectEventHandler UserListGetListNameDataEvent; + public static event ObjectEventHandler UserListGetVersionDataEvent; public delegate void IntObjectEventHandler(int status, object data); public static event IntObjectEventHandler UserListLoginDataEvent; @@ -31,6 +32,9 @@ namespace ITC81DB_0H.Part11_UserManager //Console.Write("Initialize User Manger \n"); // regisetr callback + fnUserMgrVersionCallBack = UserManager_VersionCallback; + DLL_UserMgr_Register_VersionCB(fnUserMgrVersionCallBack); + fnUserMgrDebugCallBack = UserManager_DebugCallback; DLL_UserMgr_Register_DebugCB(fnUserMgrDebugCallBack); @@ -79,7 +83,7 @@ namespace ITC81DB_0H.Part11_UserManager DLL_UserMgr_SetFolder(pFolder); // Test Only - //TestUserListData(); + //TestUserListData(); } public static void TestUserListData() { @@ -289,6 +293,10 @@ namespace ITC81DB_0H.Part11_UserManager { DLL_UserMgr_GetUserListName(); } + public static void UserManager_GetVersion() + { + DLL_UserMgr_Getversion(); + } #endregion #region UM_CALLBACK @@ -301,7 +309,7 @@ namespace ITC81DB_0H.Part11_UserManager } catch { - } + } } private static void UserManager_GetListCallBack(ref UserMgr_user_list_t user_list) { @@ -333,7 +341,7 @@ namespace ITC81DB_0H.Part11_UserManager UserListLogoutDataEvent(status); } - catch + catch { } } @@ -355,7 +363,7 @@ namespace ITC81DB_0H.Part11_UserManager if (UserListLockDataEvent != null) UserListLockDataEvent(user_lock); } - catch + catch { } } @@ -366,7 +374,7 @@ namespace ITC81DB_0H.Part11_UserManager if (UserListDefautSettingDataEvent != null) UserListDefautSettingDataEvent(status); } - catch + catch { } } @@ -410,7 +418,7 @@ namespace ITC81DB_0H.Part11_UserManager if (UserListAddDataEvent != null) UserListAddDataEvent(user_add); } - catch + catch { } } @@ -435,10 +443,22 @@ namespace ITC81DB_0H.Part11_UserManager try { } - catch + catch { } } + private static void UserManager_VersionCallback(StringBuilder version) + { + try + { + if (UserListGetVersionDataEvent != null) + UserListGetVersionDataEvent(version); + } + catch + { + + } + } #endregion } } diff --git a/ITC81DB_0H/Version.txt b/ITC81DB_0H/Version.txt index 3cfafc7..9a662da 100644 --- a/ITC81DB_0H/Version.txt +++ b/ITC81DB_0H/Version.txt @@ -12,6 +12,13 @@ ⺻ м 跮 */ +@ Ver 3.1.0 by CJY + - 2023.7.21 + - Ver 3.0.1 Modify + - SerialMode ߰ + - Part11 (, 丮α ׸ ߰ ) + - ȭ ٱ׷ ӵǥ 500 ̸̻ x + @ Ver 3.0.1 by CJY - 2023.6.21 - Ver 3.0.0 Modify diff --git a/ITC81DB_0H/bin/Release/DllAes128.dll b/ITC81DB_0H/bin/Release/DllAes128.dll index c6de404..cb66331 100644 Binary files a/ITC81DB_0H/bin/Release/DllAes128.dll and b/ITC81DB_0H/bin/Release/DllAes128.dll differ diff --git a/ITC81DB_0H/bin/Release/DllUserMgr.dll b/ITC81DB_0H/bin/Release/DllUserMgr.dll index ee3a758..4deab23 100644 Binary files a/ITC81DB_0H/bin/Release/DllUserMgr.dll and b/ITC81DB_0H/bin/Release/DllUserMgr.dll differ diff --git a/ITC81DB_0H/bin/Release/ITC81DB_2H.exe b/ITC81DB_0H/bin/Release/ITC81DB_2H.exe index 29638d0..7bcd366 100644 Binary files a/ITC81DB_0H/bin/Release/ITC81DB_2H.exe and b/ITC81DB_0H/bin/Release/ITC81DB_2H.exe differ diff --git a/ITC81DB_0H/obj/Release/ITC81DB_2H.csproj.FileListAbsolute.txt b/ITC81DB_0H/obj/Release/ITC81DB_2H.csproj.FileListAbsolute.txt index a9e10f9..690f4f3 100644 --- a/ITC81DB_0H/obj/Release/ITC81DB_2H.csproj.FileListAbsolute.txt +++ b/ITC81DB_0H/obj/Release/ITC81DB_2H.csproj.FileListAbsolute.txt @@ -77,3 +77,4 @@ D:\Laboratory\ITC81DB_2H\ITC81DB_0H\obj\Release\ITC81DB_0H.Controls.ControlCente D:\Laboratory\ITC81DB_2H\ITC81DB_0H\obj\Release\ITC81DB_0H.Controls.ControlCenterLogInspection.resources D:\Laboratory\ITC81DB_2H\ITC81DB_0H\obj\Release\ITC81DB_0H.Controls.ControlCenterLogOthers.resources D:\Laboratory\ITC81DB_2H\ITC81DB_0H\obj\Release\ITC81DB_0H.Controls.ControlCenterEquipMyPage.resources +D:\Laboratory\ITC81DB_2H\ITC81DB_0H\obj\Release\ITC81DB_0H.ControlConfiMULTiJET.resources diff --git a/ITC81DB_0H/obj/Release/ITC81DB_2H.exe b/ITC81DB_0H/obj/Release/ITC81DB_2H.exe index 29638d0..7bcd366 100644 Binary files a/ITC81DB_0H/obj/Release/ITC81DB_2H.exe and b/ITC81DB_0H/obj/Release/ITC81DB_2H.exe differ