using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Janus.Windows.GridEX; using System.Collections; /// /// 기본 UI 프레임 구조 설명 /// 1.Panel 안에 Tab가 존재한다 /// 2.각 Tab 페이지안에 원하는 GridEx 가 존재한다 /// 3.트리에서 선택한 노드에 의해 페이지가 다르게 보여질 수 있다. (탭페이지의 상단은 감추고 페이지만 선택되므로 UI 프레임을 동적으로 구현하지 않아도 됩니다) /// 4.각 GridEx 는 컬럼헤더가 동적으로 생성됩니다 (물론 고정으로 미리 생성해도 상관없습니다. 다만 정확하게 컬럼명이 무엇인지 알기만 한다면 접근가능 합니다) /// 5.각 GridEx 는 컬럼헤더의 명을 토대로 리스트에 데이터를 표시합니다 /// namespace IControls_FireManager { public partial class Frame_Work : Form { /// /// 컬럼 관리 리스트 /// /// _GirdEx 클래스를 통해 동적으로 생성되는 컬럼들은 속성들이 공통적으로 동일하게 됩니다 /// 이렇게 생성된 컬럼들을 각각 개별적으로 속성들을 편집하고 싶을때 사용합니다 /// 만약 화면에 표로 표시하지 않는 경우에는 사용하지 않아도 됩니다. /// 즉 컬럼관리 리스트와 컬럼명 문자열 리스트 사용하지 않으면 됩니다, 각 뷰에 미리 삽입된 GridEx 는 삭제해버리세요 /// // 프로젝트 List GridEXColumnList_Project = new List(); // 수신기 List GridEXColumnList_Receiver = new List(); // 수신기 - 입출력 List GridEXColumnList_InOut = new List(); // 수신기 - 입출력 - 통신보드 List GridEXColumnList_InOut_CommBoard = new List(); // 수신기 - 입출력 - IO보드 List GridEXColumnList_InOut_IOBoard = new List(); // 수신기 - 입출력 - 키패드 List GridEXColumnList_InOut_KeyPAD = new List(); // 수신기 -입출력 - 비상방송 List GridEXColumnList_InOut_EmergencyBroadcast = new List(); // 수신기 - 포인트 List GridEXColumnList_Point = new List(); // 수신기 - 포인트 - 입력 List GridEXColumnList_Point_Input = new List(); // 수신기 - 포인트 - 출력 List GridEXColumnList_Point_Output = new List(); // 수신기 - 연동 List GridEXColumnList_Oper = new List(); // 수신기 - 연동 - 그룹 (미사용) //List GridEXColumnList_Oper_Group = new List(); // 수신기 - 연동 - 연동설정 (미사용) //List GridEXColumnList_Oper_Set = new List(); // 수신기 - 그래픽 List GridEXColumnList_Image = new List(); /// /// 컬럼명 문자열 배열 리스트 /// /// 사전에 미리 지정된 컬럼명을 불러들여서, 이를 토대로 GridEx 의 컬럼헤더가 생성합니다 /// 차후 데이터를 쓰거나 읽을때도 컬럼 헤더명을 이용하여 접근가능합니다. 현재는 각 페이지 별로 헤더명이 형식에 맞게 저장되어있습니다 /// // 프로젝트 string[] ColumnNames_Project = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_PROJECT_COLUMNNAME); // 수신기 string[] ColumnNames_Receiver = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_RECEIVER_COLUMNNAME); // 수신기 - 입출력 string[] ColumnNames_InOut = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_INOUT_COLUMNNAME); // 수신기 - 입출력 - 통신보드 string[] ColumnNames_InOut_CommBoard = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_INOUT_COMMBOARD_COLUMNNAME); // 수신기 - 입출력 - IO보드 string[] ColumnNames_InOut_IOBoard = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_INOUT_IOBOARD_COLUMNNAME); // 수신기 - 입출력 - 키패드 string[] ColumnNames_InOut_KeyPad = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_INOUT_KEYPAD_COLUMNNAME); // 수신기 - 입출력 - 비상방송 string[] ColumnNames_InOut_EmergencyBroadcast = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_INOUT_EMERGENCYBROADCAST_COLUMNNAME); // 수신기 - 포인트 string[] ColumnNames_Point = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_POINT_COLUMNNAME); // 수신기 - 포인트 - 입력 string[] ColumnNames_Point_Input = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_POINT_INPUT_COLUMNNAME); // 수신기 - 포인트 - 출력 string[] ColumnNames_Point_Output = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_POINT_OUTPUT_COLUMNNAME); // 수신기 - 연동 string[] ColumnNames_Oper = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_OPER_COLUMNNAME); // 수신기 - 연동 - 그룹 string[] ColumnNames_Oper_Group = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_OPER_GROUP_COLUMNNAME); // 수신기 - 연동 - 연동설정 string[] ColumnNames_Oper_Set = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_OPER_SET_COLUMNNAME); // 수신기 - 그래픽 string[] ColumnNames_Image = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_IMAGE_COLUMNNAME); // 크로스 스레드 해결 delegate void Cross_Thread(string RECEIVER_ID); // 컬럼 사이즈 일반 int ColumnNames_Image_PageName = 150; // 페이지 이름 int ColumnNames_Image_ButtonIconCount = 100; // 버튼 총개수 int ColumnNames_Image_DeviceIconCount = 100; // 디바이스 총개수 // 데이타바인딩용 (포인트 입력 및 출력) DataSet DataSet_Point_Input = new DataSet(); DataSet DataSet_Point_Output = new DataSet(); // 생성자 public Frame_Work() { /// /// 초기화 /// InitializeComponent(); /// /// 이벤트 핸들러 등록 /// // 폼닫기 이벤트 핸들러 등록 (이벤트 핸들러 해제용) this.FormClosing += new FormClosingEventHandler(CreateForm_FormClosing); // 윈도우 스타일 변경 이벤트 핸들러 등록 _Event.WindowStyleSet_SendMessage_Event += new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event); // 페이지별 생성 이벤트 핸들러 등록 _Event.WorkViewPageName_SendMessage_Event += new _Event.WorkViewPageName_SendMessage_Handler(_Event_WorkViewPageName_SendMessage_Event); // 비상방송 코드편집 이벤트 핸들러 등록 _Event.EmergencyCodeEdit_SendMessage_Event += new _Event.EmergencyCodeEdit_SendMessage_Handler(_Event_EmergencyCodeEdit_SendMessage_Event); // 워크뷰 초기화 이벤트 (예시 : 다른뷰 -> 워크뷰) 핸들러 등록 _Event.WorkView_Clear_SendMessage_Event += new _Event.WorkView_Clear_SendMessage_Handler(_Event_WorkView_Clear_SendMessage_Event); // 수신기 추가 및 편집 폼에서 작업 완료 이벤트 핸들러 등록 _Event.WorkViewPageName_Receiver_SendMessage_Event += new _Event.WorkViewPageName_Receiver_SendMessage_Handler(_Event_WorkViewPageName_Receiver_SendMessage_Event); // 캡쳐 동작 핸들러 등록 _Event.Capture_Save_SendMessage_Event += new _Event.Capture_Save_SendMessage_Handler(_Event_Capture_Save_SendMessage_Event); // 트리뷰 초기화 이벤트 및 프로젝트 열기 혹은 새로만들기 겸용 핸들러 등록 //_Event.TreeView_Clear_SendMessage_Event += new _Event.TreeView_Clear_SendMessage_Handler(_Event_TreeView_Clear_SendMessage_Event); /// /// 스타일 변경 /// UI_Style_Initialize(); /// /// 탭페이지 속성 변경 /// // 세부보기 탭은 보여지지 않는다 this.uiTab_DeviceListInfo.ShowTabs = false; // 프로젝트 노드 탭페이지가 제일 먼저 선택된다 this.uiTabPage_Project.Selected = true; /// /// Device List Info 초기화 (컬럼명 생성) /// // Project DeviceListInfo_GridEx_Initialize(Object_Type.PROJECT, ColumnNames_Project, gridEX_Project); // 수신기 DeviceListInfo_GridEx_Initialize(Object_Type.RECEIVER, ColumnNames_Receiver, gridEX_Receiver); // 수신기 - 입출력 DeviceListInfo_GridEx_Initialize(Object_Type.INOUT, ColumnNames_InOut, gridEX_InOut); // 수신기 - 입출력 - 통신보드 DeviceListInfo_GridEx_Initialize(Object_Type.COM_BOARD, ColumnNames_InOut_CommBoard, gridEX_InOut_CommBoard); // 수신기 - 입출력 - IO보드 DeviceListInfo_GridEx_Initialize(Object_Type.IO_BOARD, ColumnNames_InOut_IOBoard, gridEX_InOut_IOBoard); // 수신기 - 입출력 - 키패드 DeviceListInfo_GridEx_Initialize(Object_Type.KEYPAD, ColumnNames_InOut_KeyPad, gridEX_InOut_KeyPad); // 수신기 - 입출력 - 비상방송 DeviceListInfo_GridEx_Initialize(Object_Type.EMERGENCY_BROADCAST, ColumnNames_InOut_EmergencyBroadcast, gridEX_InOut_EmergencyBroadcast); // 수신기 - 포인트 DeviceListInfo_GridEx_Initialize(Object_Type.POINT, ColumnNames_Point, gridEX_Point); // 수신기 - 포인트 - 입력 DeviceListInfo_GridEx_Initialize(Object_Type.INPUT, ColumnNames_Point_Input, gridEX_Point_Input); // 수신기 - 포인트 - 출력 DeviceListInfo_GridEx_Initialize(Object_Type.OUTPUT, ColumnNames_Point_Output, gridEX_Point_Output); // 수신기 - 연동 DeviceListInfo_GridEx_Initialize(Object_Type.OPER, ColumnNames_Oper, gridEX_Oper); // 수신기 - 그래픽 DeviceListInfo_GridEx_Initialize(Object_Type.IMAGE, ColumnNames_Image, gridEX_Image); /// /// 그룹 및 연동설정의 경우 오로지 OPER_SET 페이지만 이용한다 /// DeviceListInfo_Form_Initialize(Object_Type.OPER_SET); /// /// 포인트의 입력 및 출력의 경우 데이타바인딩용 컬럼으로 생성해야한다 /// _Dataset.Create_Table(DataSet_Point_Input); _Dataset.Create_Table(DataSet_Point_Output); _Dataset.Add_DataColumn(DataSet_Point_Input, ColumnNames_Point_Input, ColumnNames_Point_Input); // 키 정보와 UI 표시부는 동일하다 _Dataset.Add_DataColumn(DataSet_Point_Output, ColumnNames_Point_Output, ColumnNames_Point_Output); // 키 정보와 UI 표시부는 동일하다 /// /// 수동 컬럼 속성 조정 (동적으로 생성된 컬럼헤더의 속성을 변경하고 싶다면 아래와 같이 조절) /// // // 사이즈 변경 (컬럼 사이즈 조절, 단 바운딩되면 다시 재조절해야되고 그 루틴은 각각 함수에 존재함) // // Project GridEXColumnList_Project[1].Width = 200; // 수신기 GridEXColumnList_Receiver[1].Width = 200; // 수신기 - 포인트 GridEXColumnList_Point[0].Width = 200; GridEXColumnList_Point[1].Width = 200; GridEXColumnList_Point[2].Width = 200; // 수신기 - 포인트 - 입력 GridEXColumnList_Point_Input[0].Width = 100; // No GridEXColumnList_Point_Input[1].Width = 150; // 회로번호 GridEXColumnList_Point_Input[2].Width = 150; // 설비종류 GridEXColumnList_Point_Input[3].Width = 150; // 위치 GridEXColumnList_Point_Input[4].Width = 150; // 디바이스명칭 GridEXColumnList_Point_Output[0].Width = 100; GridEXColumnList_Point_Output[1].Width = 150; GridEXColumnList_Point_Output[2].Width = 150; GridEXColumnList_Point_Output[3].Width = 150; GridEXColumnList_Point_Output[4].Width = 150; // 수신기 - 연동 GridEXColumnList_Oper[0].Width = 200; GridEXColumnList_Oper[1].Width = 200; GridEXColumnList_Oper[2].Width = 200; GridEXColumnList_Oper[3].Width = 200; // 수신기 - 그래픽 // DataApplytoGridex_Image () 함수에서 재조절함 (컬럼명에 의해 사이즈가 변경되는 것이 많다) GridEXColumnList_Image[0].Width = ColumnNames_Image_PageName; GridEXColumnList_Image[1].Width = ColumnNames_Image_ButtonIconCount; GridEXColumnList_Image[2].Width = ColumnNames_Image_DeviceIconCount; } /// /// 폼닫기 이벤트를 등록 /// public void CreateForm_FormClosing(object sender, FormClosingEventArgs e) { // 이벤트 핸들러 해제용 // 윈도우 스타일 변경 이벤트 핸들러 해제 _Event.WindowStyleSet_SendMessage_Event -= new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event); // 페이지별 생성 이벤트 핸들러 등록 _Event.WorkViewPageName_SendMessage_Event -= new _Event.WorkViewPageName_SendMessage_Handler(_Event_WorkViewPageName_SendMessage_Event); // 비상방송 코드편집 이벤트 핸들러 해제 _Event.EmergencyCodeEdit_SendMessage_Event -= new _Event.EmergencyCodeEdit_SendMessage_Handler(_Event_EmergencyCodeEdit_SendMessage_Event); // 트리뷰에 전체 노드 삭제 이벤트 핸들러 해제 _Event.WorkView_Clear_SendMessage_Event -= new _Event.WorkView_Clear_SendMessage_Handler(_Event_WorkView_Clear_SendMessage_Event); // 수신기 추가 및 편집 폼에서 작업 완료 이벤트 핸들러 해제 _Event.WorkViewPageName_Receiver_SendMessage_Event -= new _Event.WorkViewPageName_Receiver_SendMessage_Handler(_Event_WorkViewPageName_Receiver_SendMessage_Event); // 캡쳐 동작 핸들러 해제 _Event.Capture_Save_SendMessage_Event -= new _Event.Capture_Save_SendMessage_Handler(_Event_Capture_Save_SendMessage_Event); // 트리뷰 초기화 이벤트 및 프로젝트 열기 혹은 새로만들기 겸용 핸들러 해제 //_Event.TreeView_Clear_SendMessage_Event -= new _Event.TreeView_Clear_SendMessage_Handler(_Event_TreeView_Clear_SendMessage_Event); } // 윈도우 스타일 변경 이벤트 public void _Event_WindowStyleSet_SendMessage_Event() { UI_Style_Initialize(); } // 스타일 초기화 함수 private void UI_Style_Initialize() { } /// /// 폼생성 /// public void DeviceListInfo_Form_Initialize(Object_Type Oevice_type) { switch (Oevice_type) { case Object_Type.OPER_SET: { // 그룹 및 연동설정 폼은 1개로 처리한다 // 수신기 - 연동 - 그룹 // 수신기 - 연동 - 연동설정 Form_ConfigMAP ConfigMAP = new Form_ConfigMAP(); // 프레임으로 추가 _Frame.Create(this.uiPanel_WorkViewContainer_Oper_Set, ConfigMAP); } break; } } /// /// 컬럼헤더 생성 /// public void DeviceListInfo_GridEx_Initialize(Object_Type Oevice_type, string[] ColumnNames, GridEX Gridex) { // UI 초기화 Gridex.ClearItems(); // 컬럼을 생성한다 switch (Oevice_type) { // Project case Object_Type.PROJECT: { GridEXColumnList_Project.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) GridEXColumnList_Project.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } break; // 수신기 case Object_Type.RECEIVER: { GridEXColumnList_Receiver.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) { // cyim - 2012.8.13 // // 예제 - 수신기 노드를 선택하면 4가지 타입의 데이타가 표시됩니다 // -> 텍스트박스(일반) , 체크박스 , 콤보박스, 버튼 // 헤더문구는 UI_WORKFRAME_RECEIVER_COLUMNNAME =>"Text;Checkbox;Button;Combobox"; 가 있다고 가정합니다. // 컬럼을 제어할수 있는 GridEXColumnList_Receiver 의 리스트에는 각각 Text;Checkbox;Button;Combobox 정보가 있습니다. // /* // 일반 if(ColumnName=="Text") GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, ColumnName)); // 체크박스 else if (ColumnName == "Checkbox") GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, ColumnName)); // 버튼 else if (ColumnName == "Button") GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.ButtonCell, ColumnName)); // 콤보박스 else if (ColumnName == "Combobox") { //콤보박스안에 글자를 삽입한후 컬럼을 추가한다 ArrayList ComboboxText = new ArrayList(); ComboboxText.Add("Test1"); ComboboxText.Add("Test2"); GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.Combo, ButtonStyle.NoButton, ColumnName,ComboboxText)); } */ GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } } break; // 수신기 - 입출력 case Object_Type.INOUT: { GridEXColumnList_InOut.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) { if (ColumnName == "UseFlag") { GridEXColumnList_InOut.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, false, ColumnName)); } else { GridEXColumnList_InOut.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } } } break; // 수신기 - 입출력 - 통신보드 case Object_Type.COM_BOARD: { GridEXColumnList_InOut_CommBoard.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) { if ((ColumnName == "UseFlag") || (ColumnName == "Ch1_Use") || (ColumnName == "Ch2_Use") || (ColumnName == "Ch3_Use") || (ColumnName == "Ch4_Use")) // cyim 2016.10.31 : 워크뷰에서 통신보드 보기 화면에서 채널3,4 정보가 표시되지 않는 문제 { GridEXColumnList_InOut_CommBoard.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, false, ColumnName)); } else { GridEXColumnList_InOut_CommBoard.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } } } break; // 수신기 - 입출력 - IO보드 case Object_Type.IO_BOARD: { GridEXColumnList_InOut_IOBoard.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) { if (ColumnName == "UseFlag") { GridEXColumnList_InOut_IOBoard.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, false, ColumnName)); } else { GridEXColumnList_InOut_IOBoard.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } } } break; // 수신기 - 입출력 - 키패드 case Object_Type.KEYPAD: { GridEXColumnList_InOut_KeyPAD.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) { if (ColumnName == "UseFlag") { GridEXColumnList_InOut_KeyPAD.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, false, ColumnName)); } else { GridEXColumnList_InOut_KeyPAD.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } } } break; // 수신기 - 입출력 - 비상방송 case Object_Type.EMERGENCY_BROADCAST: { GridEXColumnList_InOut_EmergencyBroadcast.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) { if (ColumnName == "UseFlag") { GridEXColumnList_InOut_EmergencyBroadcast.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, false, ColumnName)); } else { GridEXColumnList_InOut_EmergencyBroadcast.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } } } break; // 수신기 - 포인트 case Object_Type.POINT: { GridEXColumnList_Point.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) GridEXColumnList_Point.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } break; // 수신기 - 포인트 - 입력 case Object_Type.INPUT: { GridEXColumnList_Point_Input.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) GridEXColumnList_Point_Input.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } break; // 수신기 - 포인트 - 출력 case Object_Type.OUTPUT: { GridEXColumnList_Point_Output.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) GridEXColumnList_Point_Output.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } break; // 수신기 - 연동 case Object_Type.OPER: { GridEXColumnList_Oper.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) GridEXColumnList_Oper.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } break; // 수신기 - 연동 - 그룹 (미사용) case Object_Type.OPER_GROUP: //{ // GridEXColumnList_Oper_Group.Clear(); // 컬럼 리스트 초기화 // foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) // GridEXColumnList_Oper_Group.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, ColumnName)); //} break; // 수신기 - 연동 - 연동설정 (미사용) case Object_Type.OPER_SET: //{ // GridEXColumnList_Oper_Set.Clear(); // 컬럼 리스트 초기화 // foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) // GridEXColumnList_Oper_Set.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, ColumnName)); //} break; // 수신기 - 그래픽 case Object_Type.IMAGE: { GridEXColumnList_Image.Clear(); // 컬럼 리스트 초기화 foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성) GridEXColumnList_Image.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName)); } break; } // 컬럼셋 추가 (컬럼 갯수 만큼) GridEXColumnSet gridEXColumnSet = _Gridex.ColumnSet_Add(Gridex, null, null, ColumnNames.Length, 400); // 컬럼셋 위치 조절 // 생성한 컬럼을 컬럼셋 인덱스에 맞게 생성한다 for (int i = 0; i < ColumnNames.Length; i++) _Gridex.ColumnSet_AddColumn(Gridex, gridEXColumnSet, ColumnNames[i], i); } /// /// 수신기 추가 및 편집 폼에서 작업 완료 이벤트 /// //public void _Event_TreeView_Clear_SendMessage_Event(string ProjectName) //{ // DataApplytoGridex_Project(); //} /// /// 수신기 추가 및 편집 폼에서 작업 완료 이벤트 /// delegate void CallBack_DataApplytoGridex_Receiver_Set(string RECEIVER_ID); public void _Event_WorkViewPageName_Receiver_SendMessage_Event(string RECEIVER_ID) { if (this.InvokeRequired) { CallBack_DataApplytoGridex_Receiver_Set d = new CallBack_DataApplytoGridex_Receiver_Set(_Event_WorkViewPageName_Receiver_SendMessage_Event); this.Invoke(d, new object[] { RECEIVER_ID }); } else { DataApplytoGridex_Receiver(RECEIVER_ID); } } /// /// 화면 캡쳐 이벤트 /// public void _Event_Capture_Save_SendMessage_Event(string RECEIVER_ID, string PAGE_ID) { // 특별처리 캡쳐 진행중 if (_Data.Enable_Capture == true) { ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).Capure_Image_Page = _Graphic.Capture_By_Component(this.pictureBox_Background); } } /// /// 노드 전부 삭제 이벤트 /// public void _Event_WorkView_Clear_SendMessage_Event() { // 페이지 선택 this.uiTabPage_Project.Selected = true; // UI 초기화 this.gridEX_Project.ClearItems(); } /// /// 비상방송 코드편집 실행하면 발생하는 이벤트 /// public void _Event_EmergencyCodeEdit_SendMessage_Event(string RECEIVER_ID) { // 입력 //DataApplytoGridex_Point_Input(); // 출력 //DataApplytoGridex_Point_Output(); if (this.uiTabPage_Point.InvokeRequired) { Cross_Thread d = new Cross_Thread(_Event_EmergencyCodeEdit_SendMessage_Event); this.Invoke(d, new object[] { RECEIVER_ID }); } else { // 입력 출력 모두 표시 DataApplytoGridex_Point(RECEIVER_ID); } } /// /// 노드를 클릭하면 발생하는 이벤트 /// 예시 : 시스템 트리 노드를 선택하면 노드에 따라 탭페이지가 변경된다 /// 아래의 함수 파라미터는 용도에 따라 변경 하세요 /// public void _Event_WorkViewPageName_SendMessage_Event(string RECEIVER_ID, Object_Type TypeName, string NodeKey, string NodeText) { // 트리뷰에서 선택한 노드에 따라 페이지가 달리 보여진다 switch (TypeName) { // 프로젝트 case Object_Type.PROJECT: DataApplytoGridex_Project(); break; // 수신기 case Object_Type.RECEIVER: DataApplytoGridex_Receiver(RECEIVER_ID); break; // 수신기 - 입출력 case Object_Type.INOUT: DataApplytoGridex_InOut(RECEIVER_ID); break; // 수신기 - 입출력 - 통신보드 case Object_Type.COM_BOARD: DataApplytoGridex_InOut_ComBoard(RECEIVER_ID); break; // 수신기 - 입출력 - IO보드 case Object_Type.IO_BOARD: DataApplytoGridex_InOut_IOBoard(RECEIVER_ID); break; // 수신기 - 입출력 - 키패드 case Object_Type.KEYPAD: DataApplytoGridex_InOut_KeyPad(RECEIVER_ID); break; // 수신기 - 입출력 - 비상방송 case Object_Type.EMERGENCY_BROADCAST: DataApplytoGridex_InOut_EmergencyBroadCast(RECEIVER_ID); break; // 수신기 - 포인트 case Object_Type.POINT: DataApplytoGridex_Point(RECEIVER_ID); break; // 수신기 - 포인트 - 입력 case Object_Type.INPUT: DataApplytoGridex_Point_Input(RECEIVER_ID); break; // 수신기 - 포인트 - 출력 case Object_Type.OUTPUT: DataApplytoGridex_Point_Output(RECEIVER_ID); break; // 수신기 - 연동 case Object_Type.OPER: DataApplytoGridex_Oper(RECEIVER_ID); break; // 수신기 - 연동 - 그룹 (한개의 폼을 동일하게 처리 : 그룹 및 연동설정) case Object_Type.OPER_GROUP: DataApplytoGridex_Oper_Group(RECEIVER_ID); break; // 수신기 - 연동 - 연동설정 (한개의 폼을 동일하게 처리 : 그룹 및 연동설정) case Object_Type.OPER_SET: DataApplytoGridex_Oper_Set(RECEIVER_ID); break; // 수신기 - 그래픽 case Object_Type.IMAGE: DataApplytoGridex_Image(RECEIVER_ID); break; // 수신기 - 그래픽 - 페이지 case Object_Type.PAGE: DataApplytoGridex_Image_Page(RECEIVER_ID, NodeKey, NodeText); break; } } /// /// GridEx 데이타 적용 - 프로젝트 /// public void DataApplytoGridex_Project() { string sRecoverMode; string sJumpToView; // 페이지 선택 this.uiTabPage_Project.Selected = true; // UI 초기화 this.gridEX_Project.ClearItems(); // Root 의 컬럼명은 // "수신기명;빌딩이름;수신기IP;EventPort;CommandPort;축적시간;화재모드;화재시화면전환" /// /// 컬럼 내용 추가 /// // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다 foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID) { if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).RECOVER_MODE == false) sRecoverMode = "자동복구"; else sRecoverMode = "지속"; if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).JUMP_TO_VIEW == true) sJumpToView = "전환함"; else sJumpToView = "전환안함"; string GridexAddItem = // 수신기 ColumnNames_Project[0] + _Text.Equal + "Receiver" + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).ID + _Text.SemiColon + // 빌딩명 ColumnNames_Project[1] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NAME + _Text.SemiColon + // 수신기IP ColumnNames_Project[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).IP + _Text.SemiColon + // EventPort ColumnNames_Project[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).EVENT_PORT + _Text.SemiColon + // CommandPort ColumnNames_Project[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).COMMAND_PORT + _Text.SemiColon + // 축적시간 ColumnNames_Project[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).FIRE_ACCUMULATION_SECOND + _Text.SemiColon + // 화재모드 ColumnNames_Project[6] + _Text.Equal + sRecoverMode + _Text.SemiColon + // 화재시화면전환 ColumnNames_Project[7] + _Text.Equal + sJumpToView + _Text.SemiColon + // 네트워크 마스터 모드 ColumnNames_Project[8] + _Text.Equal + (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MASTER_FLAG ? "Y" : "N") + _Text.SemiColon + // 모델정보 ColumnNames_Project[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL; // cyim 2016.12.02 : 수신기 모델 설정 기능 추가 // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_Project, false, GridexAddItem); } } /// /// GridEx 데이타 적용 - 수신기 /// public void DataApplytoGridex_Receiver(string pRECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//(pRECEIVER_ID); // 페이지 선택 this.uiTabPage_Receiver.Selected = true; // UI 초기화 this.gridEX_Receiver.ClearItems(); // Receiver 의 컬럼명은 // "Name;빌딩 /// // 컬럼 내용 추가 => "Text;Checkbox;Button;Combobox"" /* string GridexAddItem = // 일반 (데이타는 일반 문자열) ColumnNames_Receiver[0] + _Text.Equal + "Receiver" + _Text.SemiColon + // 체크박스 (데이타는 반드시 True 혹은 False) ColumnNames_Receiver[1] + _Text.Equal + true.ToString() + _Text.SemiColon + // 버튼 (데이타는 버튼 텍스트입니다) ColumnNames_Receiver[2] + _Text.Equal + "버튼" + _Text.SemiColon + // 콤보박스 (데이타는 콤보박스의 첫번째 문자열입니다 (콤보박스의 데이타는 사전에 생성될때 추가하는 루틴이 존재합니다) ColumnNames_Receiver[3] + _Text.Equal + "첫번째글자"; */ string sRecoverMode; string sJumpToView; foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID) { if (pRECEIVER_ID == ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).ID) { if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).RECOVER_MODE == false) sRecoverMode = "자동복구"; else sRecoverMode = "지속"; if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).JUMP_TO_VIEW == true) sJumpToView = "전환함"; else sJumpToView = "전환안함"; string GridexAddItem = // 수신기 ColumnNames_Receiver[0] + _Text.Equal + "Receiver" + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).ID + _Text.SemiColon + // 빌딩명 ColumnNames_Receiver[1] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NAME + _Text.SemiColon + // 수신기IP ColumnNames_Receiver[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).IP + _Text.SemiColon + // EventPort ColumnNames_Receiver[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).EVENT_PORT + _Text.SemiColon + // CommandPort ColumnNames_Receiver[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).COMMAND_PORT + _Text.SemiColon + // 축적시간 ColumnNames_Receiver[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).FIRE_ACCUMULATION_SECOND + _Text.SemiColon + // 화재모드 ColumnNames_Receiver[6] + _Text.Equal + sRecoverMode + _Text.SemiColon + // 화재시화면전환 ColumnNames_Receiver[7] + _Text.Equal + sJumpToView + _Text.SemiColon + // 네트워크 마스터 모드 ColumnNames_Receiver[8] + _Text.Equal + (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MASTER_FLAG ? "Y" : "N") + _Text.SemiColon + // 모델정보 ColumnNames_Project[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL; // cyim 2016.12.02 : 수신기 모델 설정 기능 추가 // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_Receiver, false, GridexAddItem); } } } /// /// GridEx 데이타 적용 - 수신기 - 입출력 /// public void DataApplytoGridex_InOut(string pRECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//(pRECEIVER_ID); // 페이지 선택 this.uiTabPage_InOut.Selected = true; // UI 초기화 this.gridEX_InOut.ClearItems(); // ColumnNames_InOut 의 컬럼명은 // "CommID;COMM_NAME;COMM_PORT;BAUD_RATE;PARITY;DATABITS;STOPBITS;COMM_TIMEOUT;COMM_DELAY;DELTA_VOLT;RETRY_COUNT;UseFlag" /// /// 컬럼 내용 추가 /// // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다 foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID) { if (pRECEIVER_ID == ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).ID) { // CommBoard 정보 출력 string GridexAddItem = // CommID ColumnNames_InOut[0] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.COMM_ID + _Text.SemiColon + // COMM_Name ColumnNames_InOut[1] + _Text.Equal + "통신 보드" + _Text.SemiColon + // COMM_Port ColumnNames_InOut[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Get_COM_PORT() + _Text.SemiColon + // Baud_Rate ColumnNames_InOut[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Get_COM_BAUDRATE() + _Text.SemiColon + // Parity ColumnNames_InOut[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Get_COM_PARITY() + _Text.SemiColon + // DataBits ColumnNames_InOut[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Get_COM_DATABITS() + _Text.SemiColon + // StopBits ColumnNames_InOut[6] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Get_COM_STOPBIT() + _Text.SemiColon + // Comm_TimeOut ColumnNames_InOut[7] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.TimeOut.ToString() + _Text.SemiColon + // Comm_Delay ColumnNames_InOut[8] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Delay.ToString() + _Text.SemiColon + // Delta_Volt ColumnNames_InOut[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Delta_Volt.ToString() + _Text.SemiColon + // Retry_Count ColumnNames_InOut[10] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Retry_Count.ToString() + _Text.SemiColon + // UseFlag ColumnNames_InOut[11] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Use_Flag.ToString(); // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_InOut, false, GridexAddItem); // IOBoard 정보 출력 GridexAddItem = ColumnNames_InOut[0] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.COMM_ID + _Text.SemiColon + // COMM_Name ColumnNames_InOut[1] + _Text.Equal + "IO 보드" + _Text.SemiColon + // COMM_Port ColumnNames_InOut[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Get_COM_PORT() + _Text.SemiColon + // Baud_Rate ColumnNames_InOut[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Get_COM_BAUDRATE() + _Text.SemiColon + // Parity ColumnNames_InOut[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Get_COM_PARITY() + _Text.SemiColon + // DataBits ColumnNames_InOut[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Get_COM_DATABITS() + _Text.SemiColon + // StopBits ColumnNames_InOut[6] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Get_COM_STOPBIT() + _Text.SemiColon + // Comm_TimeOut ColumnNames_InOut[7] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.TimeOut.ToString() + _Text.SemiColon + // Comm_Delay ColumnNames_InOut[8] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Delay.ToString() + _Text.SemiColon + // Delta_Volt ColumnNames_InOut[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Delta_Volt.ToString() + _Text.SemiColon + // Retry_Count ColumnNames_InOut[10] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Retry_Count.ToString() + _Text.SemiColon + // UseFlag ColumnNames_InOut[11] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Use_Flag.ToString(); // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_InOut, false, GridexAddItem); // KeyPAD 정보 출력 GridexAddItem = ColumnNames_InOut[0] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.COMM_ID + _Text.SemiColon + // COMM_Name ColumnNames_InOut[1] + _Text.Equal + "KeyPAD" + _Text.SemiColon + // COMM_Port ColumnNames_InOut[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Get_COM_PORT() + _Text.SemiColon + // Baud_Rate ColumnNames_InOut[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Get_COM_BAUDRATE() + _Text.SemiColon + // Parity ColumnNames_InOut[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Get_COM_PARITY() + _Text.SemiColon + // DataBits ColumnNames_InOut[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Get_COM_DATABITS() + _Text.SemiColon + // StopBits ColumnNames_InOut[6] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Get_COM_STOPBIT() + _Text.SemiColon + // Comm_TimeOut ColumnNames_InOut[7] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.TimeOut.ToString() + _Text.SemiColon + // Comm_Delay ColumnNames_InOut[8] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Delay.ToString() + _Text.SemiColon + // Delta_Volt ColumnNames_InOut[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Delta_Volt.ToString() + _Text.SemiColon + // Retry_Count ColumnNames_InOut[10] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Retry_Count.ToString() + _Text.SemiColon + // UseFlag ColumnNames_InOut[11] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Use_Flag.ToString(); // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_InOut, false, GridexAddItem); // 비상방송 정보 출력 GridexAddItem = ColumnNames_InOut[0] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.COMM_ID + _Text.SemiColon + // COMM_Name ColumnNames_InOut[1] + _Text.Equal + "비상방송" + _Text.SemiColon + // COMM_Port ColumnNames_InOut[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Get_COM_PORT() + _Text.SemiColon + // Baud_Rate ColumnNames_InOut[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Get_COM_BAUDRATE() + _Text.SemiColon + // Parity ColumnNames_InOut[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Get_COM_PARITY() + _Text.SemiColon + // DataBits ColumnNames_InOut[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Get_COM_DATABITS() + _Text.SemiColon + // StopBits ColumnNames_InOut[6] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Get_COM_STOPBIT() + _Text.SemiColon + // Comm_TimeOut ColumnNames_InOut[7] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.TimeOut.ToString() + _Text.SemiColon + // Comm_Delay ColumnNames_InOut[8] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Delay.ToString() + _Text.SemiColon + // Delta_Volt ColumnNames_InOut[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Delta_Volt.ToString() + _Text.SemiColon + // Retry_Count ColumnNames_InOut[10] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Retry_Count.ToString() + _Text.SemiColon + // UseFlag ColumnNames_InOut[11] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Use_Flag.ToString(); // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_InOut, false, GridexAddItem); } } } /// /// GridEx 데이타 적용 - 수신기 - 입출력 - 통신보드 /// public void DataApplytoGridex_InOut_ComBoard(string pRECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//pRECEIVER_ID); // 페이지 선택 this.uiTabPage_InOut_CommBoard.Selected = true; // UI 초기화 this.gridEX_InOut_CommBoard.ClearItems(); // ColumnNames_CommBoard 의 컬럼명은 // BoardID;BoardName;UseFlag;Ch1_Use;Ch2_Use /// /// 컬럼 내용 추가 /// // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다 foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID) { if (pRECEIVER_ID == RECEIVER_ID) { foreach (string COM_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).List_COM_BOARD_ID) { if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL != "IFC3300") //3000 이하 { int temp = Convert.ToInt32(((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID); if (temp == 15) { ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bUse_Flag = true; ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh1_Use_Flag = true; } if (temp > 15) break; if (temp != 0) { string GridexAddItem = // BoardID ColumnNames_InOut_CommBoard[0] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID + _Text.SemiColon + // BoardName ColumnNames_InOut_CommBoard[1] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME + _Text.SemiColon + // UseFlag ColumnNames_InOut_CommBoard[2] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bUse_Flag.ToString() + _Text.SemiColon + // Ch1_Use ColumnNames_InOut_CommBoard[3] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh1_Use_Flag.ToString() + _Text.SemiColon + // Ch2_Use ColumnNames_InOut_CommBoard[4] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh2_Use_Flag.ToString() + _Text.SemiColon + // Ch3_Use ColumnNames_InOut_CommBoard[5] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh3_Use_Flag.ToString() + _Text.SemiColon + // Ch4_Use ColumnNames_InOut_CommBoard[6] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh4_Use_Flag.ToString(); // cyim 2016.10.31 : 워크뷰에서 통신보드 보기 화면에서 채널3,4 정보가 표시되지 않는 문제 // 생성된 컬럼명에 맞게 데이타를 추가한다 if (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID <= 64) _Gridex.Column_Data_Add(this.gridEX_InOut_CommBoard, false, GridexAddItem); } } else //3300 { string GridexAddItem = // BoardID ColumnNames_InOut_CommBoard[0] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID + _Text.SemiColon + // BoardName ColumnNames_InOut_CommBoard[1] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME + _Text.SemiColon + // UseFlag ColumnNames_InOut_CommBoard[2] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bUse_Flag.ToString() + _Text.SemiColon + // Ch1_Use ColumnNames_InOut_CommBoard[3] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh1_Use_Flag.ToString() + _Text.SemiColon + // Ch2_Use ColumnNames_InOut_CommBoard[4] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh2_Use_Flag.ToString() + _Text.SemiColon + // Ch3_Use ColumnNames_InOut_CommBoard[5] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh3_Use_Flag.ToString() + _Text.SemiColon + // Ch4_Use ColumnNames_InOut_CommBoard[6] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh4_Use_Flag.ToString(); // cyim 2016.10.31 : 워크뷰에서 통신보드 보기 화면에서 채널3,4 정보가 표시되지 않는 문제 // 생성된 컬럼명에 맞게 데이타를 추가한다 if (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID <= 64) _Gridex.Column_Data_Add(this.gridEX_InOut_CommBoard, false, GridexAddItem); } } } if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL != "IFC3300") { GridEXColumnList_InOut_CommBoard[5].Visible = false; GridEXColumnList_InOut_CommBoard[6].Visible = false; } } } /// /// GridEx 데이타 적용 - 수신기 - 입출력 - IO보드 /// public void DataApplytoGridex_InOut_IOBoard(string pRECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//pRECEIVER_ID); // 페이지 선택 this.uiTabPage_InOut_IOBoard.Selected = true; // UI 초기화 this.gridEX_InOut_IOBoard.ClearItems(); // ColumnNames_IOBoard 의 컬럼명은 // BoardID;BoardName;UseFlag /// /// 컬럼 내용 추가 /// // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다 foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID) { if (pRECEIVER_ID == RECEIVER_ID) { foreach (string IO_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).List_IO_BOARD_ID) { if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL != "IFC3300") { int temp = Convert.ToInt32(((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID); if (temp != 0) { string GridexAddItem = // BoardID ColumnNames_InOut_IOBoard[0] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID + _Text.SemiColon + // BoardName ColumnNames_InOut_IOBoard[1] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_NAME + _Text.SemiColon + // UseFlag ColumnNames_InOut_IOBoard[2] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag.ToString(); // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_InOut_IOBoard, false, GridexAddItem); } } else { string GridexAddItem = // BoardID ColumnNames_InOut_IOBoard[0] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID + _Text.SemiColon + // BoardName ColumnNames_InOut_IOBoard[1] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_NAME + _Text.SemiColon + // UseFlag ColumnNames_InOut_IOBoard[2] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag.ToString(); // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_InOut_IOBoard, false, GridexAddItem); } } } } } /// /// GridEx 데이타 적용 - 수신기 - 입출력 - 키패드 /// public void DataApplytoGridex_InOut_KeyPad(string pRECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//pRECEIVER_ID); // 페이지 선택 this.uiTabPage_InOut_KeyPad.Selected = true; // UI 초기화 this.gridEX_InOut_KeyPad.ClearItems(); // ColumnNames_CommBoard 의 컬럼명은 // BoardID;BoardName;UseFlag /// /// 컬럼 내용 추가 /// // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다 foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID) { if (pRECEIVER_ID == RECEIVER_ID) { // 널값 보완 코드 ^^; if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).KEYPAD != null) { string GridexAddItem = // BoardID ColumnNames_InOut_KeyPad[0] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).KEYPAD.BOARD_ID + _Text.SemiColon + // BoardName ColumnNames_InOut_KeyPad[1] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).KEYPAD.BOARD_NAME + _Text.SemiColon + // UseFlag ColumnNames_InOut_KeyPad[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Use_Flag.ToString(); // cyim 2014.5.22 입출력수정을 해도 변동이 없는 상황 수정 // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_InOut_KeyPad, false, GridexAddItem); } } } } /// /// GridEx 데이타 적용 - 수신기 - 입출력 - 비상방송 /// public void DataApplytoGridex_InOut_EmergencyBroadCast(string pRECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//pRECEIVER_ID); // 페이지 선택 this.uiTabPage_InOut_EmergencyBroadcast.Selected = true; // UI 초기화 this.gridEX_InOut_EmergencyBroadcast.ClearItems(); // ColumnNames_CommBoard 의 컬럼명은 // BoardID;BoardName;UseFlag /// /// 컬럼 내용 추가 /// // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다 foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID) { if (pRECEIVER_ID == RECEIVER_ID) { // 널값 보완 코드 ^^; if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).EMERGENCY_BROADCAST != null) { string GridexAddItem = // BoardID ColumnNames_InOut_EmergencyBroadcast[0] + _Text.Equal + "-" + _Text.SemiColon + // BoardName ColumnNames_InOut_EmergencyBroadcast[1] + _Text.Equal + "비상방송" + _Text.SemiColon + // UseFlag ColumnNames_InOut_EmergencyBroadcast[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Use_Flag.ToString(); // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_InOut_EmergencyBroadcast, false, GridexAddItem); } } } } /// /// GridEx 데이타 적용 - 수신기 - 포인트 /// public void DataApplytoGridex_Point(string RECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//RECEIVER_ID); // 페이지 선택 this.uiTabPage_Point.Selected = true; // UI 초기화 this.gridEX_Point.ClearItems(); string input = _Text.Zero; string output = _Text.Zero; //ColumnNames_Point 의 컬럼명은 "입력 포인트 총개수;출력 포인트 총개수;등록일"; // 입력 개수 DataRowCollection DB_TABLE_DEVICE_IN = null; // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경 if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL == "IFC3300") { // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME DB_TABLE_DEVICE_IN = _Db.ExecuteRead_SqlDataAdapter(_Sql.Count_TB_DEVICE_BigReceiver("1", "I", RECEIVER_ID)); } else { // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME DB_TABLE_DEVICE_IN = _Db.ExecuteRead_SqlDataAdapter(_Sql.Count_TB_DEVICE("1", "15", "I", RECEIVER_ID)); } if (DB_TABLE_DEVICE_IN != null) { foreach (DataRow dr in DB_TABLE_DEVICE_IN) { input = dr[0].ToString(); } } // 출력 개수 DataRowCollection DB_TABLE_DEVICE_OUT = null; // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경 if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL == "IFC3300") { // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME DB_TABLE_DEVICE_OUT = _Db.ExecuteRead_SqlDataAdapter(_Sql.Count_TB_DEVICE_BigReceiver("1", "O", RECEIVER_ID)); } else { // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME DB_TABLE_DEVICE_OUT = _Db.ExecuteRead_SqlDataAdapter(_Sql.Count_TB_DEVICE("1", "15", "O", RECEIVER_ID)); } if (DB_TABLE_DEVICE_OUT != null) { foreach (DataRow dr in DB_TABLE_DEVICE_OUT) { output = dr[0].ToString(); } } // 등록일 출력 string RegDate = "-"; // 없으면 "-" // TB_DEVICE 테이블의 첫 레코드를 가져와서 등록일을 얻음 DataRowCollection DB_Search_TB_DEVICE = _Db.ExecuteRead_SqlDataAdapter(_Sql.Get_ColumnFirstValue("TB_DEVICE", "1", RECEIVER_ID)); if (DB_Search_TB_DEVICE != null) { foreach (DataRow Record in DB_Search_TB_DEVICE) { try { // 시간정보는 버리고 등록일만 얻음 RegDate = Convert.ToDateTime(Record[12].ToString()).ToString("yyyy-MM-dd"); } catch { RegDate = DateTime.Now.ToString("yyyy-MM-dd"); } // 속도 향상을 위해 한번만 실행되도록 한다 break; } } string GridexAddItem = // 입력 포인트 총개수 ColumnNames_Point[0] + _Text.Equal + input + _Text.SemiColon + // 출력 포인트 총개수 ColumnNames_Point[1] + _Text.Equal + output + _Text.SemiColon + // 출력 포인트 총개수 ColumnNames_Point[2] + _Text.Equal + RegDate; // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_Point, false, GridexAddItem); } /// /// GridEx 데이타 적용 - 수신기 - 포인트 - 입력 /// public void DataApplytoGridex_Point_Input(string RECEIVER_ID) { /// // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//RECEIVER_ID); // 페이지 선택 this.uiTabPage_Point_Input.Selected = true; // UI 초기화 this.gridEX_Point_Input.BoundMode = BoundMode.Unbound; this.gridEX_Point_Input.ClearItems(); // 데이타셋도 반드시 초기화가 되어야 한다 DataSet_Point_Input.Tables[0].Rows.Clear(); // 아직 디바이스 정보가 저장되어 있지 않다 if (_Data.Hash_ImportPoint.ContainsKey(RECEIVER_ID) == false) return; //ColumnNames_Point_Input 의 컬럼명은 "No;회로번호;설비종류;위치;디바이스명칭" // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME DataRowCollection DB_TABLE_DEVICE = ((_ImportPoint)_Data.Hash_ImportPoint[RECEIVER_ID]).IN_Points; // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능 ArrayList SortSupport = new ArrayList(); // DataSet 내용을 수정한다 for (int i = 0; i < DB_TABLE_DEVICE.Count; i++) { // 레코드 정보 DataRow dr = DB_TABLE_DEVICE[i]; if (_Convert.Exception_Into_object(dr[3], dr[4], dr[5], dr[6], dr[7]) == true) { // 매개변수 순서 => COMM_ID, BOARD_ID, LOOP_NO, REPEATER_ID, DEVICE_ID, INOUT_TYPE MskDeviceIDString dev_s = new MskDeviceIDString( _Convert.Null_to_IntZero(dr[3].ToString()), _Convert.Null_to_IntZero(dr[4].ToString()), _Convert.Null_to_IntZero(dr[5].ToString()), _Convert.Null_to_IntZero(dr[6].ToString()), _Convert.Null_to_IntZero(dr[7].ToString()), dr[8].ToString(), RECEIVER_ID); // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경 // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능 _OrderByCircuitNo OrderByCircuitNo = new _OrderByCircuitNo(); OrderByCircuitNo.CircuitNo = dev_s.MskId; OrderByCircuitNo.Type = dr[0].ToString(); OrderByCircuitNo.Location = dr[1].ToString(); OrderByCircuitNo.DeviceNickName = dr[2].ToString(); OrderByCircuitNo.EmergencyCode = dr[10].ToString() + "-" + dr[11].ToString() + "-" + dr[12].ToString(); OrderByCircuitNo.XML = string.Format("MI{0:00}{1:00}{2:0}{3:000}{4}", Int32.Parse(RECEIVER_ID), _Convert.Null_to_IntZero(dr[4].ToString()), _Convert.Null_to_IntZero(dr[5].ToString()), _Convert.Null_to_IntZero(dr[6].ToString()), _Convert.Null_to_IntZero(dr[7].ToString())); SortSupport.Add(OrderByCircuitNo); //DataSet_Point_Input.Tables[0].Rows.Add( // // No // //string.Format("{0:d5}", (i + 1)), // (i + 1), // // 회로번호 // dev_s.MskId, // // 설비종류 // dr[0].ToString(), // // 위치 // dr[1].ToString(), // // 디바이스명칭 // dr[2].ToString(), // // 비상방송 // dr[10].ToString() + "-" + dr[11].ToString() + "-" + dr[12].ToString() // ); } } // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능 SortSupport.Sort(_Data.Sort_CircuitNo); for (int i = 0; i < SortSupport.Count; i++) { _OrderByCircuitNo OrderByCircuitNo = (_OrderByCircuitNo)SortSupport[i]; DataSet_Point_Input.Tables[0].Rows.Add( // No //string.Format("{0:d5}", (i + 1)), (i + 1), // 회로번호 OrderByCircuitNo.CircuitNo, // 설비종류 OrderByCircuitNo.Type, // 위치 OrderByCircuitNo.Location, // 디바이스명칭 OrderByCircuitNo.DeviceNickName, // 비상방송 OrderByCircuitNo.EmergencyCode, // XML OrderByCircuitNo.XML ); } // 데이타바인딩 적용 this.gridEX_Point_Input.BoundMode = BoundMode.Bound; this.gridEX_Point_Input.SetDataBinding(DataSet_Point_Input, "GetData"); this.gridEX_Point_Input.RetrieveStructure(); this.gridEX_Point_Input.ResumeLayout(); // // UI 조정 // // 정렬 for (int i = 0; i < ColumnNames_Point_Input.Length; i++) { this.gridEX_Point_Input.RootTable.Columns[i].HeaderAlignment = TextAlignment.Center; this.gridEX_Point_Input.RootTable.Columns[i].LineAlignment = TextAlignment.Center; this.gridEX_Point_Input.RootTable.Columns[i].TextAlignment = TextAlignment.Center; // 단, 이벤트명은 제외 } // 사이즈 this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[0]].Width = 100; // No this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[1]].Width = 150; // 회로번호 this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[2]].Width = 150; // 설비종류 this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[3]].Width = 150; // 위치 this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[4]].Width = 150; // 디바이스명칭 this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[5]].Width = 150; // 비상방송 this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[6]].Width = 150; // XML this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[0]].SortIndicator = SortIndicator.None; this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[1]].SortIndicator = SortIndicator.None; this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[2]].SortIndicator = SortIndicator.None; this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[3]].SortIndicator = SortIndicator.None; this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[4]].SortIndicator = SortIndicator.None; this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[5]].SortIndicator = SortIndicator.None; this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[6]].SortIndicator = SortIndicator.None; this.gridEX_Point_Input.RootTable.Columns[0].SortComparer = _Data.Sort_StringNumbering; } /// /// GridEx 데이타 적용 - 수신기 - 포인트 - 출력 /// public void DataApplytoGridex_Point_Output(string RECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//RECEIVER_ID); // 페이지 선택 this.uiTabPage_Point_Output.Selected = true; // UI 초기화 this.gridEX_Point_Output.BoundMode = BoundMode.Unbound; this.gridEX_Point_Output.ClearItems(); // 데이타셋도 반드시 초기화가 되어야 한다 DataSet_Point_Output.Tables[0].Rows.Clear(); // 아직 디바이스 정보가 저장되어 있지 않다 if (_Data.Hash_ImportPoint.ContainsKey(RECEIVER_ID) == false) return; //ColumnNames_Point_Output 의 컬럼명은 "No;회로번호;설비종류;위치;디바이스명칭" // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME DataRowCollection DB_TABLE_DEVICE = ((_ImportPoint)_Data.Hash_ImportPoint[RECEIVER_ID]).OUT_Points; // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능 ArrayList SortSupport = new ArrayList(); // DataSet 내용을 수정한다 for (int i = 0; i < DB_TABLE_DEVICE.Count; i++) { // 레코드 정보 DataRow dr = DB_TABLE_DEVICE[i]; if (_Convert.Exception_Into_object(dr[3], dr[4], dr[5], dr[6], dr[7]) == true) { // 매개변수 순서 => COMM_ID, BOARD_ID, LOOP_NO, REPEATER_ID, DEVICE_ID, INOUT_TYPE MskDeviceIDString dev_s = new MskDeviceIDString( _Convert.Null_to_IntZero(dr[3].ToString()), _Convert.Null_to_IntZero(dr[4].ToString()), _Convert.Null_to_IntZero(dr[5].ToString()), _Convert.Null_to_IntZero(dr[6].ToString()), _Convert.Null_to_IntZero(dr[7].ToString()), dr[8].ToString(), RECEIVER_ID); // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경 // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능 _OrderByCircuitNo OrderByCircuitNo = new _OrderByCircuitNo(); OrderByCircuitNo.CircuitNo = dev_s.MskId; OrderByCircuitNo.Type = dr[0].ToString(); OrderByCircuitNo.Location = dr[1].ToString(); OrderByCircuitNo.DeviceNickName = dr[2].ToString(); //_OrderByCircuitNo.EmergencyCode = dr[10].ToString() + "-" + dr[11].ToString() + "-" + dr[12].ToString(); SortSupport.Add(OrderByCircuitNo); //DataSet_Point_Output.Tables[0].Rows.Add( // // No // //string.Format("{0:d5}", (i + 1)), // (i + 1), // // 회로번호 // dev_s.MskId, // // 설비종류 // dr[0].ToString(), // // 위치 // dr[1].ToString(), // // 디바이스명칭 // dr[2].ToString()); } } // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능 SortSupport.Sort(_Data.Sort_CircuitNo); for (int i = 0; i < SortSupport.Count; i++) { _OrderByCircuitNo OrderByCircuitNo = (_OrderByCircuitNo)SortSupport[i]; DataSet_Point_Output.Tables[0].Rows.Add( // No //string.Format("{0:d5}", (i + 1)), (i + 1), // 회로번호 OrderByCircuitNo.CircuitNo, // 설비종류 OrderByCircuitNo.Type, // 위치 OrderByCircuitNo.Location, // 디바이스명칭 OrderByCircuitNo.DeviceNickName // 비상방송 //_OrderByCircuitNo.EmergencyCode ); } // 데이타바인딩 적용 this.gridEX_Point_Output.BoundMode = BoundMode.Bound; this.gridEX_Point_Output.SetDataBinding(DataSet_Point_Output, "GetData"); this.gridEX_Point_Output.RetrieveStructure(); this.gridEX_Point_Output.ResumeLayout(); // // UI 조정 // // 정렬 for (int i = 0; i < ColumnNames_Point_Output.Length; i++) { this.gridEX_Point_Output.RootTable.Columns[i].HeaderAlignment = TextAlignment.Center; this.gridEX_Point_Output.RootTable.Columns[i].LineAlignment = TextAlignment.Center; this.gridEX_Point_Output.RootTable.Columns[i].TextAlignment = TextAlignment.Center; // 단, 이벤트명은 제외 } // 사이즈 this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[0]].Width = 100; // No this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[1]].Width = 150; // 회로번호 this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[2]].Width = 150; // 설비종류 this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[3]].Width = 150; // 위치 this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[4]].Width = 150; // 디바이스명칭 this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[0]].SortIndicator = SortIndicator.None; this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[1]].SortIndicator = SortIndicator.None; this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[2]].SortIndicator = SortIndicator.None; this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[3]].SortIndicator = SortIndicator.None; this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[4]].SortIndicator = SortIndicator.None; this.gridEX_Point_Output.RootTable.Columns[0].SortComparer = _Data.Sort_StringNumbering; } /// /// GridEx 데이타 적용 - 수신기 - 연동 /// public void DataApplytoGridex_Oper(string RECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//RECEIVER_ID); // 페이지 선택 this.uiTabPage_Oper.Selected = true; // UI 초기화 this.gridEX_Oper.ClearItems(); // 갯수 int Group = 0; int Map = 0; // 등록일 출력 string RegDate_Group = "-"; // 없으면 "-" string RegDate_Map = "-"; // 없으면 "-" //ColumnNames_Oper 의 컬럼명은 "그룹 총개수;연동 총개수;그룹 최종등록일;연동 최종등록일"; // 그룹 개수 및 최종등록일 가져오기 DataRowCollection DB_TABLE_GROUP = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_GROUP", "UPDATE_TIME", RECEIVER_ID)); if (DB_TABLE_GROUP != null) { // 그룹 총개수 Group = DB_TABLE_GROUP.Count; foreach (DataRow dr in DB_TABLE_GROUP) { if (dr[4] != null && dr[4].ToString().Length != 0) { if (RegDate_Group == "-") RegDate_Group = Convert.ToDateTime(dr[4].ToString()).ToString("yyyy-MM-dd"); else { if (Convert.ToDateTime(RegDate_Group) < Convert.ToDateTime(dr[4].ToString())) RegDate_Group = Convert.ToDateTime(dr[4].ToString()).ToString("yyyy-MM-dd"); } } } } // 연동 개수 및 최종등록일 가져오기 DataRowCollection DB_TABLE_MAP = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_MAP", "UPDATE_TIME", RECEIVER_ID)); if (DB_TABLE_MAP != null) { // 연동 총개수 Map = DB_TABLE_MAP.Count; foreach (DataRow dr in DB_TABLE_MAP) { if (dr[6] != null && dr[6].ToString().Length != 0) { if (RegDate_Map == "-") RegDate_Map = Convert.ToDateTime(dr[6].ToString()).ToString("yyyy-MM-dd"); else { if (Convert.ToDateTime(RegDate_Map) < Convert.ToDateTime(dr[6].ToString())) RegDate_Map = Convert.ToDateTime(dr[6].ToString()).ToString("yyyy-MM-dd"); } } } } string GridexAddItem = // 입력 포인트 총개수 ColumnNames_Oper[0] + _Text.Equal + Group + _Text.SemiColon + // 출력 포인트 총개수 ColumnNames_Oper[1] + _Text.Equal + Map + _Text.SemiColon + // 출력 포인트 총개수 ColumnNames_Oper[2] + _Text.Equal + RegDate_Group + _Text.SemiColon + // 출력 포인트 총개수 ColumnNames_Oper[3] + _Text.Equal + RegDate_Map; // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_Oper, false, GridexAddItem); } /// /// GridEx 데이타 적용 - 수신기 - 연동 - 그룹 /// public void DataApplytoGridex_Oper_Group(string RECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//RECEIVER_ID); // 페이지 선택 (그룹 및 연동설정은 동일한 페이지를 사용한다) this.uiTabPage_Oper_Set.Selected = true; // 동일한 페이지 이므로 탭을 구분한다 _Event.WorkViewPageName_Oper_SendMessage_Write(RECEIVER_ID, Object_Type.OPER_GROUP); } /// /// GridEx 데이타 적용 - 수신기 - 연동 - 연동설정 /// public void DataApplytoGridex_Oper_Set(string RECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//RECEIVER_ID); // 페이지 선택 (그룹 및 연동설정은 동일한 페이지를 사용한다) this.uiTabPage_Oper_Set.Selected = true; // 동일한 페이지 이므로 탭을 구분한다 _Event.WorkViewPageName_Oper_SendMessage_Write(RECEIVER_ID, Object_Type.OPER_SET); } /// /// GridEx 데이타 적용 - 수신기 - 그래픽 /// public void DataApplytoGridex_Image(string RECEIVER_ID) { // // 데이타베이스 접근 경로 지정부 // _Data.DataBaseFilePath_Set(null);//RECEIVER_ID); // 페이지 선택 this.uiTabPage_Image.Selected = true; // UI 초기화 this.gridEX_Image.ClearItems(); // // 수신기 - 그래픽 컬럼 헤더 정의 // ArrayList NewColumnHeader = new ArrayList(); // 페이지당 현재 설정된 이름을 전부 가져온다 foreach (string PAGE_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).LIST_PAGE_ID) { if (((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).Receiver_ID == RECEIVER_ID) { foreach (string ICON_ID in ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).LIST_ICON_ID) { // 현재 설정된 아이콘의 이름을 모두 가져온다 string TempDeviceIconName = ((_PictureBoxItem)((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON[ICON_ID]).Device_Icon_NAME; // 중복 배제 및 공백 제거 (널값 허용안함) if (NewColumnHeader.Contains(TempDeviceIconName) == false && TempDeviceIconName != null && TempDeviceIconName.Length != 0) { NewColumnHeader.Add(TempDeviceIconName); } } } } // 디바이스 이름이 없다 if (NewColumnHeader.Count != 0) { // 컬럼헤더 초기화 this.gridEX_Image.RootTable.Columns.Clear(); // 컬럼헤더 문자열 string temp_ColumnNames = _Text.UI_WORKFRAME_IMAGE_COLUMNNAME; // 새로운 컬럼헤더 추가 foreach (string ColumnHeader in NewColumnHeader) temp_ColumnNames = temp_ColumnNames + _Text.SemiColon + ColumnHeader; // 컬럼헤더 문구 재정의 ColumnNames_Image = _Convert.String_to_ArrayString(temp_ColumnNames); // 컬럼헤더를 다시 생성 DeviceListInfo_GridEx_Initialize(Object_Type.IMAGE, ColumnNames_Image, gridEX_Image); } // 데이타 추가 foreach (string PAGE_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).LIST_PAGE_ID) { if (((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).Receiver_ID == RECEIVER_ID) { int Button_Icon_Count = 0; int Device_Icon_Count = 0; // 버튼 아이콘 및 디바이스 아이콘 총개수 구하기 foreach (string ICON_ID in ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).LIST_ICON_ID) { if (((_PictureBoxItem)((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON[ICON_ID]).ItemType == Item_Type.Button) Button_Icon_Count++; else if (((_PictureBoxItem)((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON[ICON_ID]).ItemType == Item_Type.Device) Device_Icon_Count++; } // 새로운 추가 컬럼에 따라 달리 동작함 string GridexAddItem = null; GridexAddItem = // Page Name ColumnNames_Image[0] + _Text.Equal + ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).NodeText + _Text.SemiColon + // Button ColumnNames_Image[1] + _Text.Equal + Button_Icon_Count + _Text.SemiColon + // Device ColumnNames_Image[2] + _Text.Equal + Device_Icon_Count; // 만약 새로운 추가 컬럼이 하나 이상 존재한다면 if (NewColumnHeader.Count != 0) { // 추가 컬럼을 상위 기본 정보외에 더 추가한다 for (int i = 3; i < NewColumnHeader.Count + 3; i++) { GridexAddItem = GridexAddItem + _Text.SemiColon + ColumnNames_Image[i] + _Text.Equal + Get_Count_By_Device_Icon_Name(RECEIVER_ID, PAGE_ID, ColumnNames_Image[i]); } // 아래 컬럼은 모두 고정함 // "페이지 이름": // "버튼 총개수": // "디바이스 총개수": this.gridEX_Image.FrozenColumns = 3; } // 컬럼헤더가 지나치게 글자가 긴 경우에는 사이즈 변경 foreach (GridEXColumn Column in GridEXColumnList_Image) { switch (Column.Key) { case "자동폐쇄장치 기동 확인": Column.Width = 150; // 기본 100 -> 150 break; case "전실댐퍼 기동 확인": case "전실댐퍼 수동 확인": Column.Width = 130; // 기본 100 -> 130 break; case "전실급기휀 기동": Column.Width = 150; // 기본 100 -> 150 break; case "페이지 이름": Column.Width = ColumnNames_Image_PageName; break; case "버튼 총개수": Column.Width = ColumnNames_Image_ButtonIconCount; break; case "디바이스 총개수": Column.Width = ColumnNames_Image_DeviceIconCount; break; default: Column.Width = 80; break; } } // 생성된 컬럼명에 맞게 데이타를 추가한다 _Gridex.Column_Data_Add(this.gridEX_Image, false, GridexAddItem); } } } // 해당 이름에 대한 디바이스 총개수 private int Get_Count_By_Device_Icon_Name(string RECEIVER_ID, string Page_ID, string Data) { int result = 0; foreach (string ICON_ID in ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[Page_ID]).LIST_ICON_ID) { if (((_PictureBoxItem)((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[Page_ID]).HASH_ICON[ICON_ID]).Device_Icon_NAME == Data) result++; } return result; } /// /// GridEx 데이타 적용 - 수신기 - 그래픽 - 페이지 /// public void DataApplytoGridex_Image_Page(string RECEIVER_ID, string PageNodeKey, string PageNodeText) { // 페이지 선택 this.uiTabPage_Image_Page.Selected = true; /// /// 오브젝트 트리 초기화 /// // 트리 초기화 this.treeView_ObjectTree.Nodes.Clear(); // 오브젝트 트리 - 프로젝트 노드 추가 _Tree.NodeAdd_Root(this.treeView_ObjectTree, _Text.UI_TREE_ROOT_KEY, PageNodeText, Object_Type.PAGE); // 오브젝트 트리 - 버튼 아이콘 노드 추가 : 버튼 아이콘 메인 _Tree.NodeAdd_Root_Node(this.treeView_ObjectTree, 0, _Text.UI_TREE_BUTTON_ICON, _Text.UI_TREE_BUTTON_ICON, Object_Type.BUTTON_ICON); // 오브젝트 트리 - 디바이스 아이콘 노드 추가 : 디바이스 아이콘 메인 _Tree.NodeAdd_Root_Node(this.treeView_ObjectTree, 0, _Text.UI_TREE_DEVICE_ICON, _Text.UI_TREE_DEVICE_ICON, Object_Type.DEVICE_ICON); /// /// 배경 픽쳐박스 초기화 /// this.panel_Page_Sub_BackGround.Controls.Clear(); this.pictureBox_Background = new PictureBox(); this.pictureBox_Background.MaximumSize = new System.Drawing.Size(1080, 720); this.pictureBox_Background.MinimumSize = new System.Drawing.Size(1080, 720); this.pictureBox_Background.Name = "pictureBox_Background"; this.pictureBox_Background.Size = new System.Drawing.Size(1080, 720); this.panel_Page_Sub_BackGround.Controls.Add(this.pictureBox_Background); // 아이콘의 총 개수 및 적용 개수를 파악하기 위한 변수 int ButtonIcon_AllCnt = 0; int ButtonIcon_ApplyCnt = 0; int DeviceIcon_AllCnt = 0; int DeviceIcon_ApplyCnt = 0; // 페이지 검색 foreach (string PAGE_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).LIST_PAGE_ID) { // 페이지명이 구분자이다. _Page 클래스의 아이디는 오로지 XML 생성시에 사용될 뿐이다 if (PageNodeKey == PAGE_ID) { // 배경그림을 저장하기 위해서 임시 맵디자이너 클래스 생성 Form_MapDesigner Temp_MapDesigner = new Form_MapDesigner(RECEIVER_ID, null, null); // 임시 리스트 및 해쉬 테이블을 만듬 -> 차후 TEMP_LIST_ICON_ID,TEMP_HASH_ICON 생성에서 사용함 ArrayList temp_list_icon_id = new ArrayList(); Hashtable temp_hash_icon = new Hashtable(); // 저장 정보를 토대로 리스트 및 해쉬 생성 - 불러오기 Temp_MapDesigner.Copy_HASH_LIST( ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).LIST_ICON_ID, ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON, temp_list_icon_id, temp_hash_icon); // // 배경그림 // // 그림을 전체 모드로 교체 (픽쳐박스의 크기에 따라 이미지 사이즈가 자동조절) this.pictureBox_Background.SizeMode = PictureBoxSizeMode.StretchImage; // 파일경로 + 파일명 this.pictureBox_Background.BackgroundImage = Image.FromFile(((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).PictureBoxItem_BackGround.FullPath_FileName); // // 아이콘 // // 배경에다가 그리자 Graphics gra = Graphics.FromImage(this.pictureBox_Background.BackgroundImage); // 아이콘 리스트를 기준으로 픽쳐박스 생성 foreach (string ICON_ID in temp_list_icon_id) { temp_hash_icon = ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON; //// 아이템 화면 배치 //_PictureBoxItem PictureBoxItem = Temp_MapDesigner.UI_Create_PictureBoxItem( // this.pictureBox_Background, // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).ItemType, // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).FullPath_FileName, // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).FileName, // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Location.X, // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Location.Y); /// /// 픽쳐박스 대신 Graphic 객체로 해결 /// // 그릴 이미지를 가져오기 Image Icon = ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Image; // 포인트 정보를 가져오기 Point point = new Point(((_PictureBoxItem)temp_hash_icon[ICON_ID]).Location.X, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Location.Y); // 배경에다가 그리자 (해상도 72 이든 96이든) gra.DrawImage(Icon, point.X, point.Y, Icon.Width, Icon.Height); /// /// 오브젝트 트리 /// // 버튼 아이콘의 경우 처리 if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).ItemType == Item_Type.Button) { // 트리 추가 _Tree.NodeAdd_Root_Node_Node(this.treeView_ObjectTree, 0, 0, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).NodeText(), Object_Type.BUTTON_DETAIL); // 오브젝트 트리 색상 반영 (버튼) _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Button_JumpPageName); // 개수 파악 ButtonIcon_AllCnt++; if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).Button_JumpPageName != "0") ButtonIcon_ApplyCnt++; } // 디바이스 아이콘의 경우 처리 else if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).ItemType == Item_Type.Device) { // 트리 추가 _Tree.NodeAdd_Root_Node_Node(this.treeView_ObjectTree, 0, 1, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).NodeText(), Object_Type.DEVICE_DETAIL); // 오브젝트 트리 색상 반영 (디바이스) _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Device_Oper_ID); // 개수 파악 DeviceIcon_AllCnt++; if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).Button_JumpPageName != "0") DeviceIcon_ApplyCnt++; } } // 오브젝트 트리 모두 확대 this.treeView_ObjectTree.ExpandAll(); // 오브젝트 트리 정렬 this.treeView_ObjectTree.Sort(); // // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다 // _Tree.SetNodeText_By_Name(this.treeView_ObjectTree, _Text.UI_TREE_BUTTON_ICON, string.Format("{0} [총합:{1} 적용:{2}]", _Text.UI_TREE_BUTTON_ICON, ButtonIcon_AllCnt, ButtonIcon_ApplyCnt)); _Tree.SetNodeText_By_Name(this.treeView_ObjectTree, _Text.UI_TREE_DEVICE_ICON, string.Format("{0} [총합:{1} 적용:{2}]", _Text.UI_TREE_DEVICE_ICON, DeviceIcon_AllCnt, DeviceIcon_ApplyCnt)); // 종료 break; } } } } }