123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data; // DataRowCollection
- using System.Windows.Forms;
- using System.Drawing;
- namespace IControls_FireManager
- {
- // 트리뷰 공통 루틴은 여기에서 구현한다
-
- public static class _Tree
- {
- // 트리 생성
- public static TreeView Create(string TreeViewName)
- {
- TreeView treeview = new TreeView();
- treeview.Dock = System.Windows.Forms.DockStyle.Fill;
- treeview.Location = new System.Drawing.Point(0, 0);
- treeview.Name = TreeViewName;
- return treeview;
- }
- // Name 검색해서 노드삭제
- public static bool DelNodeName_By_Name(TreeView pTreeView, string Name)
- {
- TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
- if (Ctrls.Length > 0)
- {
- try
- {
- Ctrls[0].Remove();
- return true;
- }
- catch { return false; }
- }
- return false;
- }
- // Name 검색해서 노드삭제 (단 해당 수신기에 해당하는 것만 삭제, 페이지 삭제에서만 사용하도록 한다)
- public static bool DelNodeName_By_Name_Check_ReceiverID(TreeView pTreeView, string Name, string RECEIVER_ID)
- {
- TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
- if (Ctrls.Length > 0)
- {
- try
- {
- // 페이지 노드의 경우
- if(Ctrls[0].Parent.Parent.Name==RECEIVER_ID)
- Ctrls[0].Remove();
- return true;
- }
- catch { return false; }
- }
- return false;
- }
- // Name 검색해서 Text 변경
- public static bool SetNodeText_By_Name(TreeView pTreeView, string Name, string Text)
- {
- TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
- if (Ctrls.Length > 0)
- {
- try
- {
- Ctrls[0].Text = Text;
- return true;
- }
- catch { return false; }
- }
- return false;
- }
- // Name 검색해서 SelectedImageIndex 변경
- public static bool SetNodeSelectedImageIndex_By_Name(TreeView pTreeView, string Name, int ImageIndex)
- {
- TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
- if (Ctrls.Length > 0)
- {
- try
- {
- Ctrls[0].SelectedImageIndex = ImageIndex;
- return true;
- }
- catch { return false; }
- }
- return false;
- }
- // Name 검색해서 모든노드 색 지정하기
- public static bool SetNodeColor_By_Name(TreeView pTreeView, string Name, Color pColor)
- {
- TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
- if (Ctrls.Length > 0)
- {
- try
- {
- Ctrls[0].ForeColor = pColor;
- return true;
- }
- catch { return false; }
- }
- return false;
- }
- // Name 검색해서 노드 정보 가져오기
- public static TreeNode GetNode_By_Name(TreeView pTreeView, string Name)
- {
- TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
- if (Ctrls.Length > 0)
- {
- try
- {
- return Ctrls[0];
- }
- catch { return null; }
- }
- return null;
- }
-
- // Name 검색해서 해당 노드의 자식노드를 셋팅하자
- public static bool SetChildNodeText_By_Name(TreeView pTreeView, TreeNode pNode, string Name, string Text)
- {
- TreeNode[] Ctrls = pTreeView.Nodes[0].Nodes[pNode.Index].Nodes.Find(Name, true);
- if (Ctrls.Length > 0)
- {
- try
- {
- Ctrls[0].Text = Text;
- return true;
- }
- catch { return false; }
- }
- return false;
- }
- ///
- /// 노드추가 (노드 위치 정보를 아는 경우)
- ///
- public static void NodeAdd(TreeView pTreeView, TreeNode pNode, string key, string text, Object_Type ImageType)
- {
- if (pNode.Nodes.ContainsKey(key) == true)
- {
- _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
- return;
- }
- else
- {
- //pTreeView.BeginUpdate(); // 트리 편집 시작
- switch(pNode.Level)
- {
- case 0: // Root
- pTreeView.Nodes.Add(key, text, (int)ImageType, (int)ImageType);
- break;
- case 1: // Root - Node
- pTreeView.Nodes[0].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
- break;
- case 2: // Root - Node - Node
- pTreeView.Nodes[0].Nodes[pNode.Index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
- break;
- case 3: // Root - Node - Node - Node
- pTreeView.Nodes[0].Nodes[pNode.Parent.Index].Nodes[pNode.Index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
- break;
- case 4: // Root - Node - Node - Node - Node
- pTreeView.Nodes[0].Nodes[pNode.Parent.Parent.Index].Nodes[pNode.Parent.Index].Nodes[pNode.Index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
- break;
- }
- //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
- //pTreeView.EndUpdate();// 트리 편집 종료
- }
- }
- ///
- /// 노드추가 (노드 위치 정보를 모르는 경우)
- ///
- // Root
- public static void NodeAdd_Root(TreeView pTreeView, string key, string text, Object_Type ImageType)
- {
- if (pTreeView.Nodes.ContainsKey(key) == true)
- {
- _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
- return;
- }
- else
- {
- //pTreeView.BeginUpdate(); // 트리 편집 시작
- pTreeView.Nodes.Add(key, text, (int)ImageType, (int)ImageType);
- //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
- //pTreeView.EndUpdate();// 트리 편집 종료
-
- }
- }
- // Root - Node
- public static void NodeAdd_Root_Node(TreeView pTreeView, int root_index, string key, string text, Object_Type ImageType)
- {
- if (pTreeView.Nodes.ContainsKey(key) == true)
- {
- _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
- return;
- }
- else
- {
- //pTreeView.BeginUpdate(); // 트리 편집 시작
- pTreeView.Nodes[root_index].Nodes.Add(key, text, (int)ImageType, (int)ImageType); //ex) 아이콘트롤스 ->기술연구소 또는 프로젝트사업부 추가
- //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
- //pTreeView.EndUpdate();// 트리 편집 종료
-
- }
- }
- // Root - Node - Node
- public static void NodeAdd_Root_Node_Node(TreeView pTreeView, int root_index, int depth1_index, string key, string text, Object_Type ImageType)
- {
- if (pTreeView.Nodes.ContainsKey(key) == true)
- {
- _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
- return;
- }
- else
- {
- //pTreeView.BeginUpdate(); // 트리 편집 시작
- pTreeView.Nodes[root_index].Nodes[depth1_index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
- //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
- //pTreeView.EndUpdate();// 트리 편집 종료
-
- }
- }
- // Root - Node - Node - Node
- public static void NodeAdd_Root_Node_Node_Node(TreeView pTreeView, int root_index, int depth1_index, int depth2_index, string key, string text, Object_Type ImageType)
- {
- if (pTreeView.Nodes.ContainsKey(key) == true)
- {
- _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
- return;
- }
- else
- {
- //pTreeView.BeginUpdate(); // 트리 편집 시작
- pTreeView.Nodes[root_index].Nodes[depth1_index].Nodes[depth2_index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
- //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
- //pTreeView.EndUpdate();// 트리 편집 종료
-
- }
- }
- // Root - Node - Node - Node - Node
- public static void NodeAdd_Root_Node_Node_Node_Node(TreeView pTreeView, int root_index, int depth1_index, int depth2_index, int depth3_index, string key, string text, Object_Type ImageType)
- {
- if (pTreeView.Nodes.ContainsKey(key) == true)
- {
- _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
- return;
- }
- else
- {
- //pTreeView.BeginUpdate(); // 트리 편집 시작
- pTreeView.Nodes[root_index].Nodes[depth1_index].Nodes[depth2_index].Nodes[depth3_index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
- //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
- //pTreeView.EndUpdate();// 트리 편집 종료
- }
- }
-
-
- // 트리 노드를 선택하고 Text 를 변경하는 경우
- public static void TreeViewNodeTextChanged(TreeView pTreeView, string Text, ToolStripItemClickedEventArgs e)
- {
- if (e.ClickedItem.Text == Text)
- {
- pTreeView.LabelEdit = true;
- if (!pTreeView.SelectedNode.IsEditing)
- {
- pTreeView.SelectedNode.BeginEdit();
- }
- }
- }
- ///
- /// 정보에 의해 트리 정보를 변경
- ///
- public static void ChangeColor_By_Data(TreeView pTreeView, string Name, string Data)
- {
- // 노드 색상
- Color Apply_Color = Color.Blue;
- Color Basic_Color = Color.Black;
- // 트리 검색
- TreeNode EditNode = GetNode_By_Name(pTreeView, Name);
- // 오브젝트 트리 색상 반영
- if (Data == null || Data.Trim().Length == 0 || Data == _Text.None)
- {
- EditNode.ForeColor = Basic_Color;
- }
- else
- {
- EditNode.ForeColor = Apply_Color;
- }
- }
-
- ///
- /// 트리 정보를 가져오는 루틴
- ///
- // DB를 이용해서 Device System 트리 로드
- public static void Load_SystemTreeInfo(TreeView treeview)
- {
- // 노드 추가
-
- // 트리 초기화
- treeview.Nodes.Clear();
-
- // 일단 기본값
- if (_Data.Project_Name == null)
- _Tree.NodeAdd_Root(treeview, _Text.UI_TREE_ROOT_KEY, _Text.DEFAULT_PROJECT_NAME, Object_Type.PROJECT);
- else
- _Tree.NodeAdd_Root(treeview, _Text.UI_TREE_ROOT_KEY, _Data.Project_Name, Object_Type.PROJECT);
- // 트리 인덱스
- int TreeNodeInfo_Level_1th_MaxIndex = 0;
-
- ///
- /// 수신기 최대 인덱스 값 구하기
- ///
- foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
- if (TreeNodeInfo_Level_1th_MaxIndex <= ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_INDEX)
- TreeNodeInfo_Level_1th_MaxIndex = ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_INDEX;
-
-
- // 수신기 의 트리 인덱스 정보
- for (int h = 0; h <= TreeNodeInfo_Level_1th_MaxIndex; h++)
- {
- foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
- {
- if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_INDEX == h)
- {
- _RECEIVER RECEIVER = (_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID];
- ///
- /// LEVEL 1 수신기 노드 추가
- ///
- NodeAdd_Root_Node(treeview, 0, RECEIVER.ID, RECEIVER.KEY_NAME, Object_Type.RECEIVER);
- ///
- /// LEVEL 2 노드 추가
- ///
- string temp_key = null;
- string temp_name = null;
- // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
- TreeNode Added_RECEIVER = _Tree.GetNode_By_Name(treeview, RECEIVER.ID);
- ///
- /// 입출력
- ///
- // 입출력 노드 추가
- temp_key = ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Set_SubKey(RECEIVER, _Text.UI_TREE_INOUTPUT);
- temp_name = _Text.UI_TREE_INOUTPUT;
- _Tree.NodeAdd_Root_Node_Node(treeview, 0, Added_RECEIVER.Index, temp_key, temp_name, Object_Type.INOUT);
- // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
- TreeNode Added_INOUTPUT = _Tree.GetNode_By_Name(treeview, temp_key);
- // 통신 보드 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_COM_BOARD);
- temp_name = _Text.UI_TREE_COM_BOARD;
- _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_INOUTPUT.Index, temp_key, temp_name, Object_Type.COM_BOARD);
- // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
- TreeNode Added_COM_BOARD = _Tree.GetNode_By_Name(treeview, temp_key);
- for (int i = 1; i <= RECEIVER.COM_BOARD_MAX_NUM; i++)
- {
- temp_key = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_COM_BOARD_KEY, i));
- temp_name = ((_COM_BOARD)RECEIVER.Hash_COM_BOARD[temp_key]).Get_KEY_NAME();
- _Tree.NodeAdd_Root_Node_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_INOUTPUT.Index, Added_COM_BOARD.Index, temp_key, temp_name, Object_Type.COM_BOARDS);
- }
- // IO 보드 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_IO_BOARD);
- _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_INOUTPUT.Index, temp_key, _Text.UI_TREE_IO_BOARD, Object_Type.IO_BOARD);
- // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
- TreeNode Added_IO_BOARD = _Tree.GetNode_By_Name(treeview, temp_key);
- for (int i = 1; i <= RECEIVER.IO_BOARD_MAX_NUM; i++)
- {
- temp_key = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_IO_BOARD_KEY, i));
- temp_name = ((_IO_BOARD)RECEIVER.Hash_IO_BOARD[temp_key]).Get_KEY_NAME(); //_Text.UI_TREE_IO_BOARD + i.ToString();
- _Tree.NodeAdd_Root_Node_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_INOUTPUT.Index, Added_IO_BOARD.Index, temp_key, temp_name, Object_Type.IO_BOARD);
- }
- // 키패드 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_KEYPAD);
- _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_INOUTPUT.Index, temp_key, _Text.UI_TREE_KEYPAD, Object_Type.KEYPAD);
- // 비상방송 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_EMERGENCY_BROADCAST);
- _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_INOUTPUT.Index, temp_key, _Text.UI_TREE_EMERGENCY_BROADCAST, Object_Type.EMERGENCY_BROADCAST);
- ///
- /// 포인트
- ///
- // 포인트 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_POINT);
- _Tree.NodeAdd_Root_Node_Node(treeview, 0, Added_RECEIVER.Index, temp_key, _Text.UI_TREE_POINT, Object_Type.POINT);
- // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
- TreeNode Added_POINT = _Tree.GetNode_By_Name(treeview, temp_key);
- // 입력 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_POINT_INPUT);
- _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_POINT.Index, temp_key, _Text.UI_TREE_POINT_INPUT, Object_Type.INPUT);
- // 출력 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_POINT_OUTPUT);
- _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_POINT.Index, temp_key, _Text.UI_TREE_POINT_OUTPUT, Object_Type.OUTPUT);
- ///
- /// 연동
- ///
- // 연동 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_OPER);
- _Tree.NodeAdd_Root_Node_Node(treeview, 0, Added_RECEIVER.Index, temp_key, _Text.UI_TREE_OPER, Object_Type.OPER);
- // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
- TreeNode Added_OPER = _Tree.GetNode_By_Name(treeview, temp_key);
- // 그룹 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_OPER_GROUP);
- _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_OPER.Index, temp_key, _Text.UI_TREE_OPER_GROUP, Object_Type.OPER_GROUP);
- // 연동설정 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_OPER_SET);
- _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_OPER.Index, temp_key, _Text.UI_TREE_OPER_SET, Object_Type.OPER_SET);
- ///
- /// 그래픽
- ///
- // 그래픽 노드 추가
- temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_IMAGE);
- _Tree.NodeAdd_Root_Node_Node(treeview, 0, Added_RECEIVER.Index, temp_key, _Text.UI_TREE_IMAGE, Object_Type.IMAGE);
-
- }
- }
- }
- // 변수 초기화
- TreeNodeInfo_Level_1th_MaxIndex = 0;
- //// 트리 전체 축소
- //treeview.CollapseAll();
- //// 트리는 수신기 노드만 표시할수있도록 한다
- //treeview.Nodes[0].Expand();
- //// 추가한 수신기 노드 개수 만큼 열수 있도록 카운트
- //int temp = 0;
- //foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
- //{
- // treeview.Nodes[0].Nodes[temp++].Expand();
- //}
- }
- // Device System 트리 저장
- public static void Save_SystemTreeInfo(TreeView treeview)
- {
- TreeNode result = null;
- //// 루트 : 프로젝트 명
- //result = GetNode_By_Name(treeview, _Text.UI_TREE_ROOT_KEY);
- //_Data.Project_Name = result.Text;
- //
- foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID) // 수신기 해쉬테이블 및 키리스트 조회
- {
- result = GetNode_By_Name(treeview, RECEIVER_ID);
- if (result != null)
- {
- ///
- /// 수신기
- ///
- ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_DEPTH = result.Level;
- ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_INDEX = result.Index;
- ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_PARENT = result.Parent.Name;
- ///
- /// 입출력
- ///
- ///
- /// 입출력 - 통신 보드
- ///
- //foreach (string COM_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).List_COM_BOARD_ID)
- //{
- // result = GetNode_By_Name(treeview, COM_BOARD_ID);
- // ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).NODE.T_DEPTH = result.Level;
- // ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).NODE.T_INDEX = result.Index;
- // ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).NODE.T_INDEX = result.Index;
- //}
- ///
- /// 입출력 - IO 보드
- ///
- //foreach (string IO_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).List_IO_BOARD_ID)
- //{
- // result = GetNode_By_Name(treeview, IO_BOARD_ID);
- // ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).NODE.T_DEPTH = result.Level;
- // ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).NODE.T_INDEX = result.Index;
- // ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).NODE.T_INDEX = result.Index;
- //}
- ///
- /// 입출력 - 키패드
- ///
- ///
- /// 입출력 - 비상방송
- ///
- ///
- /// 포인트
- ///
- ///
- /// 포인트 - 입력
- ///
-
- ///
- /// 포인트 - 출력
- ///
- ///
- /// 연동
- ///
- ///
- /// 연동 - 그래픽
- ///
- ///
- /// 연동 - 연동설정
- ///
- ///
- /// 그래픽
- ///
- ///
- /// 그래픽 - 이미지
- ///
-
- }
- }
- }
- }
- }
|