_Tree.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data; // DataRowCollection
  6. using System.Windows.Forms;
  7. using System.Drawing;
  8. namespace IControls_FireManager
  9. {
  10. // 트리뷰 공통 루틴은 여기에서 구현한다
  11. public static class _Tree
  12. {
  13. // 트리 생성
  14. public static TreeView Create(string TreeViewName)
  15. {
  16. TreeView treeview = new TreeView();
  17. treeview.Dock = System.Windows.Forms.DockStyle.Fill;
  18. treeview.Location = new System.Drawing.Point(0, 0);
  19. treeview.Name = TreeViewName;
  20. return treeview;
  21. }
  22. // Name 검색해서 노드삭제
  23. public static bool DelNodeName_By_Name(TreeView pTreeView, string Name)
  24. {
  25. TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
  26. if (Ctrls.Length > 0)
  27. {
  28. try
  29. {
  30. Ctrls[0].Remove();
  31. return true;
  32. }
  33. catch { return false; }
  34. }
  35. return false;
  36. }
  37. // Name 검색해서 노드삭제 (단 해당 수신기에 해당하는 것만 삭제, 페이지 삭제에서만 사용하도록 한다)
  38. public static bool DelNodeName_By_Name_Check_ReceiverID(TreeView pTreeView, string Name, string RECEIVER_ID)
  39. {
  40. TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
  41. if (Ctrls.Length > 0)
  42. {
  43. try
  44. {
  45. // 페이지 노드의 경우
  46. if(Ctrls[0].Parent.Parent.Name==RECEIVER_ID)
  47. Ctrls[0].Remove();
  48. return true;
  49. }
  50. catch { return false; }
  51. }
  52. return false;
  53. }
  54. // Name 검색해서 Text 변경
  55. public static bool SetNodeText_By_Name(TreeView pTreeView, string Name, string Text)
  56. {
  57. TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
  58. if (Ctrls.Length > 0)
  59. {
  60. try
  61. {
  62. Ctrls[0].Text = Text;
  63. return true;
  64. }
  65. catch { return false; }
  66. }
  67. return false;
  68. }
  69. // Name 검색해서 SelectedImageIndex 변경
  70. public static bool SetNodeSelectedImageIndex_By_Name(TreeView pTreeView, string Name, int ImageIndex)
  71. {
  72. TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
  73. if (Ctrls.Length > 0)
  74. {
  75. try
  76. {
  77. Ctrls[0].SelectedImageIndex = ImageIndex;
  78. return true;
  79. }
  80. catch { return false; }
  81. }
  82. return false;
  83. }
  84. // Name 검색해서 모든노드 색 지정하기
  85. public static bool SetNodeColor_By_Name(TreeView pTreeView, string Name, Color pColor)
  86. {
  87. TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
  88. if (Ctrls.Length > 0)
  89. {
  90. try
  91. {
  92. Ctrls[0].ForeColor = pColor;
  93. return true;
  94. }
  95. catch { return false; }
  96. }
  97. return false;
  98. }
  99. // Name 검색해서 노드 정보 가져오기
  100. public static TreeNode GetNode_By_Name(TreeView pTreeView, string Name)
  101. {
  102. TreeNode[] Ctrls = pTreeView.Nodes.Find(Name, true);
  103. if (Ctrls.Length > 0)
  104. {
  105. try
  106. {
  107. return Ctrls[0];
  108. }
  109. catch { return null; }
  110. }
  111. return null;
  112. }
  113. // Name 검색해서 해당 노드의 자식노드를 셋팅하자
  114. public static bool SetChildNodeText_By_Name(TreeView pTreeView, TreeNode pNode, string Name, string Text)
  115. {
  116. TreeNode[] Ctrls = pTreeView.Nodes[0].Nodes[pNode.Index].Nodes.Find(Name, true);
  117. if (Ctrls.Length > 0)
  118. {
  119. try
  120. {
  121. Ctrls[0].Text = Text;
  122. return true;
  123. }
  124. catch { return false; }
  125. }
  126. return false;
  127. }
  128. ///
  129. /// 노드추가 (노드 위치 정보를 아는 경우)
  130. ///
  131. public static void NodeAdd(TreeView pTreeView, TreeNode pNode, string key, string text, Object_Type ImageType)
  132. {
  133. if (pNode.Nodes.ContainsKey(key) == true)
  134. {
  135. _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
  136. return;
  137. }
  138. else
  139. {
  140. //pTreeView.BeginUpdate(); // 트리 편집 시작
  141. switch(pNode.Level)
  142. {
  143. case 0: // Root
  144. pTreeView.Nodes.Add(key, text, (int)ImageType, (int)ImageType);
  145. break;
  146. case 1: // Root - Node
  147. pTreeView.Nodes[0].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
  148. break;
  149. case 2: // Root - Node - Node
  150. pTreeView.Nodes[0].Nodes[pNode.Index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
  151. break;
  152. case 3: // Root - Node - Node - Node
  153. pTreeView.Nodes[0].Nodes[pNode.Parent.Index].Nodes[pNode.Index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
  154. break;
  155. case 4: // Root - Node - Node - Node - Node
  156. pTreeView.Nodes[0].Nodes[pNode.Parent.Parent.Index].Nodes[pNode.Parent.Index].Nodes[pNode.Index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
  157. break;
  158. }
  159. //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
  160. //pTreeView.EndUpdate();// 트리 편집 종료
  161. }
  162. }
  163. ///
  164. /// 노드추가 (노드 위치 정보를 모르는 경우)
  165. ///
  166. // Root
  167. public static void NodeAdd_Root(TreeView pTreeView, string key, string text, Object_Type ImageType)
  168. {
  169. if (pTreeView.Nodes.ContainsKey(key) == true)
  170. {
  171. _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
  172. return;
  173. }
  174. else
  175. {
  176. //pTreeView.BeginUpdate(); // 트리 편집 시작
  177. pTreeView.Nodes.Add(key, text, (int)ImageType, (int)ImageType);
  178. //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
  179. //pTreeView.EndUpdate();// 트리 편집 종료
  180. }
  181. }
  182. // Root - Node
  183. public static void NodeAdd_Root_Node(TreeView pTreeView, int root_index, string key, string text, Object_Type ImageType)
  184. {
  185. if (pTreeView.Nodes.ContainsKey(key) == true)
  186. {
  187. _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
  188. return;
  189. }
  190. else
  191. {
  192. //pTreeView.BeginUpdate(); // 트리 편집 시작
  193. pTreeView.Nodes[root_index].Nodes.Add(key, text, (int)ImageType, (int)ImageType); //ex) 아이콘트롤스 ->기술연구소 또는 프로젝트사업부 추가
  194. //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
  195. //pTreeView.EndUpdate();// 트리 편집 종료
  196. }
  197. }
  198. // Root - Node - Node
  199. public static void NodeAdd_Root_Node_Node(TreeView pTreeView, int root_index, int depth1_index, string key, string text, Object_Type ImageType)
  200. {
  201. if (pTreeView.Nodes.ContainsKey(key) == true)
  202. {
  203. _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
  204. return;
  205. }
  206. else
  207. {
  208. //pTreeView.BeginUpdate(); // 트리 편집 시작
  209. pTreeView.Nodes[root_index].Nodes[depth1_index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
  210. //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
  211. //pTreeView.EndUpdate();// 트리 편집 종료
  212. }
  213. }
  214. // Root - Node - Node - Node
  215. 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)
  216. {
  217. if (pTreeView.Nodes.ContainsKey(key) == true)
  218. {
  219. _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
  220. return;
  221. }
  222. else
  223. {
  224. //pTreeView.BeginUpdate(); // 트리 편집 시작
  225. pTreeView.Nodes[root_index].Nodes[depth1_index].Nodes[depth2_index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
  226. //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
  227. //pTreeView.EndUpdate();// 트리 편집 종료
  228. }
  229. }
  230. // Root - Node - Node - Node - Node
  231. 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)
  232. {
  233. if (pTreeView.Nodes.ContainsKey(key) == true)
  234. {
  235. _Popup.MessageBoxPopup(0, _Text.OverLapSame, _Text.OK);
  236. return;
  237. }
  238. else
  239. {
  240. //pTreeView.BeginUpdate(); // 트리 편집 시작
  241. pTreeView.Nodes[root_index].Nodes[depth1_index].Nodes[depth2_index].Nodes[depth3_index].Nodes.Add(key, text, (int)ImageType, (int)ImageType);
  242. //SetNodeSelectedImageIndex_By_Name(pTreeView, key, (int)ImageType); // 노드를 선택하면 이미지가 변경되지 않도록 지정해준다
  243. //pTreeView.EndUpdate();// 트리 편집 종료
  244. }
  245. }
  246. // 트리 노드를 선택하고 Text 를 변경하는 경우
  247. public static void TreeViewNodeTextChanged(TreeView pTreeView, string Text, ToolStripItemClickedEventArgs e)
  248. {
  249. if (e.ClickedItem.Text == Text)
  250. {
  251. pTreeView.LabelEdit = true;
  252. if (!pTreeView.SelectedNode.IsEditing)
  253. {
  254. pTreeView.SelectedNode.BeginEdit();
  255. }
  256. }
  257. }
  258. ///
  259. /// 정보에 의해 트리 정보를 변경
  260. ///
  261. public static void ChangeColor_By_Data(TreeView pTreeView, string Name, string Data)
  262. {
  263. // 노드 색상
  264. Color Apply_Color = Color.Blue;
  265. Color Basic_Color = Color.Black;
  266. // 트리 검색
  267. TreeNode EditNode = GetNode_By_Name(pTreeView, Name);
  268. // 오브젝트 트리 색상 반영
  269. if (Data == null || Data.Trim().Length == 0 || Data == _Text.None)
  270. {
  271. EditNode.ForeColor = Basic_Color;
  272. }
  273. else
  274. {
  275. EditNode.ForeColor = Apply_Color;
  276. }
  277. }
  278. ///
  279. /// 트리 정보를 가져오는 루틴
  280. ///
  281. // DB를 이용해서 Device System 트리 로드
  282. public static void Load_SystemTreeInfo(TreeView treeview)
  283. {
  284. // 노드 추가
  285. // 트리 초기화
  286. treeview.Nodes.Clear();
  287. // 일단 기본값
  288. if (_Data.Project_Name == null)
  289. _Tree.NodeAdd_Root(treeview, _Text.UI_TREE_ROOT_KEY, _Text.DEFAULT_PROJECT_NAME, Object_Type.PROJECT);
  290. else
  291. _Tree.NodeAdd_Root(treeview, _Text.UI_TREE_ROOT_KEY, _Data.Project_Name, Object_Type.PROJECT);
  292. // 트리 인덱스
  293. int TreeNodeInfo_Level_1th_MaxIndex = 0;
  294. ///
  295. /// 수신기 최대 인덱스 값 구하기
  296. ///
  297. foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
  298. if (TreeNodeInfo_Level_1th_MaxIndex <= ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_INDEX)
  299. TreeNodeInfo_Level_1th_MaxIndex = ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_INDEX;
  300. // 수신기 의 트리 인덱스 정보
  301. for (int h = 0; h <= TreeNodeInfo_Level_1th_MaxIndex; h++)
  302. {
  303. foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
  304. {
  305. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_INDEX == h)
  306. {
  307. _RECEIVER RECEIVER = (_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID];
  308. ///
  309. /// LEVEL 1 수신기 노드 추가
  310. ///
  311. NodeAdd_Root_Node(treeview, 0, RECEIVER.ID, RECEIVER.KEY_NAME, Object_Type.RECEIVER);
  312. ///
  313. /// LEVEL 2 노드 추가
  314. ///
  315. string temp_key = null;
  316. string temp_name = null;
  317. // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
  318. TreeNode Added_RECEIVER = _Tree.GetNode_By_Name(treeview, RECEIVER.ID);
  319. ///
  320. /// 입출력
  321. ///
  322. // 입출력 노드 추가
  323. temp_key = ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Set_SubKey(RECEIVER, _Text.UI_TREE_INOUTPUT);
  324. temp_name = _Text.UI_TREE_INOUTPUT;
  325. _Tree.NodeAdd_Root_Node_Node(treeview, 0, Added_RECEIVER.Index, temp_key, temp_name, Object_Type.INOUT);
  326. // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
  327. TreeNode Added_INOUTPUT = _Tree.GetNode_By_Name(treeview, temp_key);
  328. // 통신 보드 노드 추가
  329. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_COM_BOARD);
  330. temp_name = _Text.UI_TREE_COM_BOARD;
  331. _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_INOUTPUT.Index, temp_key, temp_name, Object_Type.COM_BOARD);
  332. // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
  333. TreeNode Added_COM_BOARD = _Tree.GetNode_By_Name(treeview, temp_key);
  334. for (int i = 1; i <= RECEIVER.COM_BOARD_MAX_NUM; i++)
  335. {
  336. temp_key = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_COM_BOARD_KEY, i));
  337. temp_name = ((_COM_BOARD)RECEIVER.Hash_COM_BOARD[temp_key]).Get_KEY_NAME();
  338. _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);
  339. }
  340. // IO 보드 노드 추가
  341. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_IO_BOARD);
  342. _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);
  343. // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
  344. TreeNode Added_IO_BOARD = _Tree.GetNode_By_Name(treeview, temp_key);
  345. for (int i = 1; i <= RECEIVER.IO_BOARD_MAX_NUM; i++)
  346. {
  347. temp_key = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_IO_BOARD_KEY, i));
  348. temp_name = ((_IO_BOARD)RECEIVER.Hash_IO_BOARD[temp_key]).Get_KEY_NAME(); //_Text.UI_TREE_IO_BOARD + i.ToString();
  349. _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);
  350. }
  351. // 키패드 노드 추가
  352. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_KEYPAD);
  353. _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_INOUTPUT.Index, temp_key, _Text.UI_TREE_KEYPAD, Object_Type.KEYPAD);
  354. // 비상방송 노드 추가
  355. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_EMERGENCY_BROADCAST);
  356. _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);
  357. ///
  358. /// 포인트
  359. ///
  360. // 포인트 노드 추가
  361. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_POINT);
  362. _Tree.NodeAdd_Root_Node_Node(treeview, 0, Added_RECEIVER.Index, temp_key, _Text.UI_TREE_POINT, Object_Type.POINT);
  363. // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
  364. TreeNode Added_POINT = _Tree.GetNode_By_Name(treeview, temp_key);
  365. // 입력 노드 추가
  366. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_POINT_INPUT);
  367. _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_POINT.Index, temp_key, _Text.UI_TREE_POINT_INPUT, Object_Type.INPUT);
  368. // 출력 노드 추가
  369. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_POINT_OUTPUT);
  370. _Tree.NodeAdd_Root_Node_Node_Node(treeview, 0, Added_RECEIVER.Index, Added_POINT.Index, temp_key, _Text.UI_TREE_POINT_OUTPUT, Object_Type.OUTPUT);
  371. ///
  372. /// 연동
  373. ///
  374. // 연동 노드 추가
  375. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_OPER);
  376. _Tree.NodeAdd_Root_Node_Node(treeview, 0, Added_RECEIVER.Index, temp_key, _Text.UI_TREE_OPER, Object_Type.OPER);
  377. // 추가한 노드의 정보를 알아야 하위 트리에 추가할수 있다
  378. TreeNode Added_OPER = _Tree.GetNode_By_Name(treeview, temp_key);
  379. // 그룹 노드 추가
  380. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_OPER_GROUP);
  381. _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);
  382. // 연동설정 노드 추가
  383. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_OPER_SET);
  384. _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);
  385. ///
  386. /// 그래픽
  387. ///
  388. // 그래픽 노드 추가
  389. temp_key = RECEIVER.Set_SubKey(RECEIVER, _Text.UI_TREE_IMAGE);
  390. _Tree.NodeAdd_Root_Node_Node(treeview, 0, Added_RECEIVER.Index, temp_key, _Text.UI_TREE_IMAGE, Object_Type.IMAGE);
  391. }
  392. }
  393. }
  394. // 변수 초기화
  395. TreeNodeInfo_Level_1th_MaxIndex = 0;
  396. //// 트리 전체 축소
  397. //treeview.CollapseAll();
  398. //// 트리는 수신기 노드만 표시할수있도록 한다
  399. //treeview.Nodes[0].Expand();
  400. //// 추가한 수신기 노드 개수 만큼 열수 있도록 카운트
  401. //int temp = 0;
  402. //foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
  403. //{
  404. // treeview.Nodes[0].Nodes[temp++].Expand();
  405. //}
  406. }
  407. // Device System 트리 저장
  408. public static void Save_SystemTreeInfo(TreeView treeview)
  409. {
  410. TreeNode result = null;
  411. //// 루트 : 프로젝트 명
  412. //result = GetNode_By_Name(treeview, _Text.UI_TREE_ROOT_KEY);
  413. //_Data.Project_Name = result.Text;
  414. //
  415. foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID) // 수신기 해쉬테이블 및 키리스트 조회
  416. {
  417. result = GetNode_By_Name(treeview, RECEIVER_ID);
  418. if (result != null)
  419. {
  420. ///
  421. /// 수신기
  422. ///
  423. ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_DEPTH = result.Level;
  424. ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_INDEX = result.Index;
  425. ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NODE.T_PARENT = result.Parent.Name;
  426. ///
  427. /// 입출력
  428. ///
  429. ///
  430. /// 입출력 - 통신 보드
  431. ///
  432. //foreach (string COM_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).List_COM_BOARD_ID)
  433. //{
  434. // result = GetNode_By_Name(treeview, COM_BOARD_ID);
  435. // ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).NODE.T_DEPTH = result.Level;
  436. // ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).NODE.T_INDEX = result.Index;
  437. // ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).NODE.T_INDEX = result.Index;
  438. //}
  439. ///
  440. /// 입출력 - IO 보드
  441. ///
  442. //foreach (string IO_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).List_IO_BOARD_ID)
  443. //{
  444. // result = GetNode_By_Name(treeview, IO_BOARD_ID);
  445. // ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).NODE.T_DEPTH = result.Level;
  446. // ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).NODE.T_INDEX = result.Index;
  447. // ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).NODE.T_INDEX = result.Index;
  448. //}
  449. ///
  450. /// 입출력 - 키패드
  451. ///
  452. ///
  453. /// 입출력 - 비상방송
  454. ///
  455. ///
  456. /// 포인트
  457. ///
  458. ///
  459. /// 포인트 - 입력
  460. ///
  461. ///
  462. /// 포인트 - 출력
  463. ///
  464. ///
  465. /// 연동
  466. ///
  467. ///
  468. /// 연동 - 그래픽
  469. ///
  470. ///
  471. /// 연동 - 연동설정
  472. ///
  473. ///
  474. /// 그래픽
  475. ///
  476. ///
  477. /// 그래픽 - 이미지
  478. ///
  479. }
  480. }
  481. }
  482. }
  483. }