Frame_Work.cs 107 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using Janus.Windows.GridEX;
  10. using System.Collections;
  11. ///
  12. /// 기본 UI 프레임 구조 설명
  13. /// 1.Panel 안에 Tab가 존재한다
  14. /// 2.각 Tab 페이지안에 원하는 GridEx 가 존재한다
  15. /// 3.트리에서 선택한 노드에 의해 페이지가 다르게 보여질 수 있다. (탭페이지의 상단은 감추고 페이지만 선택되므로 UI 프레임을 동적으로 구현하지 않아도 됩니다)
  16. /// 4.각 GridEx 는 컬럼헤더가 동적으로 생성됩니다 (물론 고정으로 미리 생성해도 상관없습니다. 다만 정확하게 컬럼명이 무엇인지 알기만 한다면 접근가능 합니다)
  17. /// 5.각 GridEx 는 컬럼헤더의 명을 토대로 리스트에 데이터를 표시합니다
  18. ///
  19. namespace IControls_FireManager
  20. {
  21. public partial class Frame_Work : Form
  22. {
  23. ///
  24. /// 컬럼 관리 리스트
  25. ///
  26. /// _GirdEx 클래스를 통해 동적으로 생성되는 컬럼들은 속성들이 공통적으로 동일하게 됩니다
  27. /// 이렇게 생성된 컬럼들을 각각 개별적으로 속성들을 편집하고 싶을때 사용합니다
  28. /// 만약 화면에 표로 표시하지 않는 경우에는 사용하지 않아도 됩니다.
  29. /// 즉 컬럼관리 리스트와 컬럼명 문자열 리스트 사용하지 않으면 됩니다, 각 뷰에 미리 삽입된 GridEx 는 삭제해버리세요
  30. ///
  31. // 프로젝트
  32. List<GridEXColumn> GridEXColumnList_Project = new List<GridEXColumn>();
  33. // 수신기
  34. List<GridEXColumn> GridEXColumnList_Receiver = new List<GridEXColumn>();
  35. // 수신기 - 입출력
  36. List<GridEXColumn> GridEXColumnList_InOut = new List<GridEXColumn>();
  37. // 수신기 - 입출력 - 통신보드
  38. List<GridEXColumn> GridEXColumnList_InOut_CommBoard = new List<GridEXColumn>();
  39. // 수신기 - 입출력 - IO보드
  40. List<GridEXColumn> GridEXColumnList_InOut_IOBoard = new List<GridEXColumn>();
  41. // 수신기 - 입출력 - 키패드
  42. List<GridEXColumn> GridEXColumnList_InOut_KeyPAD = new List<GridEXColumn>();
  43. // 수신기 -입출력 - 비상방송
  44. List<GridEXColumn> GridEXColumnList_InOut_EmergencyBroadcast = new List<GridEXColumn>();
  45. // 수신기 - 포인트
  46. List<GridEXColumn> GridEXColumnList_Point = new List<GridEXColumn>();
  47. // 수신기 - 포인트 - 입력
  48. List<GridEXColumn> GridEXColumnList_Point_Input = new List<GridEXColumn>();
  49. // 수신기 - 포인트 - 출력
  50. List<GridEXColumn> GridEXColumnList_Point_Output = new List<GridEXColumn>();
  51. // 수신기 - 연동
  52. List<GridEXColumn> GridEXColumnList_Oper = new List<GridEXColumn>();
  53. // 수신기 - 연동 - 그룹 (미사용)
  54. //List<GridEXColumn> GridEXColumnList_Oper_Group = new List<GridEXColumn>();
  55. // 수신기 - 연동 - 연동설정 (미사용)
  56. //List<GridEXColumn> GridEXColumnList_Oper_Set = new List<GridEXColumn>();
  57. // 수신기 - 그래픽
  58. List<GridEXColumn> GridEXColumnList_Image = new List<GridEXColumn>();
  59. ///
  60. /// 컬럼명 문자열 배열 리스트
  61. ///
  62. /// 사전에 미리 지정된 컬럼명을 불러들여서, 이를 토대로 GridEx 의 컬럼헤더가 생성합니다
  63. /// 차후 데이터를 쓰거나 읽을때도 컬럼 헤더명을 이용하여 접근가능합니다. 현재는 각 페이지 별로 헤더명이 형식에 맞게 저장되어있습니다
  64. ///
  65. // 프로젝트
  66. string[] ColumnNames_Project = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_PROJECT_COLUMNNAME);
  67. // 수신기
  68. string[] ColumnNames_Receiver = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_RECEIVER_COLUMNNAME);
  69. // 수신기 - 입출력
  70. string[] ColumnNames_InOut = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_INOUT_COLUMNNAME);
  71. // 수신기 - 입출력 - 통신보드
  72. string[] ColumnNames_InOut_CommBoard = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_INOUT_COMMBOARD_COLUMNNAME);
  73. // 수신기 - 입출력 - IO보드
  74. string[] ColumnNames_InOut_IOBoard = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_INOUT_IOBOARD_COLUMNNAME);
  75. // 수신기 - 입출력 - 키패드
  76. string[] ColumnNames_InOut_KeyPad = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_INOUT_KEYPAD_COLUMNNAME);
  77. // 수신기 - 입출력 - 비상방송
  78. string[] ColumnNames_InOut_EmergencyBroadcast = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_INOUT_EMERGENCYBROADCAST_COLUMNNAME);
  79. // 수신기 - 포인트
  80. string[] ColumnNames_Point = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_POINT_COLUMNNAME);
  81. // 수신기 - 포인트 - 입력
  82. string[] ColumnNames_Point_Input = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_POINT_INPUT_COLUMNNAME);
  83. // 수신기 - 포인트 - 출력
  84. string[] ColumnNames_Point_Output = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_POINT_OUTPUT_COLUMNNAME);
  85. // 수신기 - 연동
  86. string[] ColumnNames_Oper = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_OPER_COLUMNNAME);
  87. // 수신기 - 연동 - 그룹
  88. string[] ColumnNames_Oper_Group = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_OPER_GROUP_COLUMNNAME);
  89. // 수신기 - 연동 - 연동설정
  90. string[] ColumnNames_Oper_Set = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_OPER_SET_COLUMNNAME);
  91. // 수신기 - 그래픽
  92. string[] ColumnNames_Image = _Convert.String_to_ArrayString(_Text.UI_WORKFRAME_IMAGE_COLUMNNAME);
  93. // 크로스 스레드 해결
  94. delegate void Cross_Thread(string RECEIVER_ID);
  95. // 컬럼 사이즈 일반
  96. int ColumnNames_Image_PageName = 150; // 페이지 이름
  97. int ColumnNames_Image_ButtonIconCount = 100; // 버튼 총개수
  98. int ColumnNames_Image_DeviceIconCount = 100; // 디바이스 총개수
  99. // 데이타바인딩용 (포인트 입력 및 출력)
  100. DataSet DataSet_Point_Input = new DataSet();
  101. DataSet DataSet_Point_Output = new DataSet();
  102. // 생성자
  103. public Frame_Work()
  104. {
  105. ///
  106. /// 초기화
  107. ///
  108. InitializeComponent();
  109. ///
  110. /// 이벤트 핸들러 등록
  111. ///
  112. // 폼닫기 이벤트 핸들러 등록 (이벤트 핸들러 해제용)
  113. this.FormClosing += new FormClosingEventHandler(CreateForm_FormClosing);
  114. // 윈도우 스타일 변경 이벤트 핸들러 등록
  115. _Event.WindowStyleSet_SendMessage_Event += new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event);
  116. // 페이지별 생성 이벤트 핸들러 등록
  117. _Event.WorkViewPageName_SendMessage_Event += new _Event.WorkViewPageName_SendMessage_Handler(_Event_WorkViewPageName_SendMessage_Event);
  118. // 비상방송 코드편집 이벤트 핸들러 등록
  119. _Event.EmergencyCodeEdit_SendMessage_Event += new _Event.EmergencyCodeEdit_SendMessage_Handler(_Event_EmergencyCodeEdit_SendMessage_Event);
  120. // 워크뷰 초기화 이벤트 (예시 : 다른뷰 -> 워크뷰) 핸들러 등록
  121. _Event.WorkView_Clear_SendMessage_Event += new _Event.WorkView_Clear_SendMessage_Handler(_Event_WorkView_Clear_SendMessage_Event);
  122. // 수신기 추가 및 편집 폼에서 작업 완료 이벤트 핸들러 등록
  123. _Event.WorkViewPageName_Receiver_SendMessage_Event += new _Event.WorkViewPageName_Receiver_SendMessage_Handler(_Event_WorkViewPageName_Receiver_SendMessage_Event);
  124. // 캡쳐 동작 핸들러 등록
  125. _Event.Capture_Save_SendMessage_Event += new _Event.Capture_Save_SendMessage_Handler(_Event_Capture_Save_SendMessage_Event);
  126. // 트리뷰 초기화 이벤트 및 프로젝트 열기 혹은 새로만들기 겸용 핸들러 등록
  127. //_Event.TreeView_Clear_SendMessage_Event += new _Event.TreeView_Clear_SendMessage_Handler(_Event_TreeView_Clear_SendMessage_Event);
  128. ///
  129. /// 스타일 변경
  130. ///
  131. UI_Style_Initialize();
  132. ///
  133. /// 탭페이지 속성 변경
  134. ///
  135. // 세부보기 탭은 보여지지 않는다
  136. this.uiTab_DeviceListInfo.ShowTabs = false;
  137. // 프로젝트 노드 탭페이지가 제일 먼저 선택된다
  138. this.uiTabPage_Project.Selected = true;
  139. ///
  140. /// Device List Info 초기화 (컬럼명 생성)
  141. ///
  142. // Project
  143. DeviceListInfo_GridEx_Initialize(Object_Type.PROJECT, ColumnNames_Project, gridEX_Project);
  144. // 수신기
  145. DeviceListInfo_GridEx_Initialize(Object_Type.RECEIVER, ColumnNames_Receiver, gridEX_Receiver);
  146. // 수신기 - 입출력
  147. DeviceListInfo_GridEx_Initialize(Object_Type.INOUT, ColumnNames_InOut, gridEX_InOut);
  148. // 수신기 - 입출력 - 통신보드
  149. DeviceListInfo_GridEx_Initialize(Object_Type.COM_BOARD, ColumnNames_InOut_CommBoard, gridEX_InOut_CommBoard);
  150. // 수신기 - 입출력 - IO보드
  151. DeviceListInfo_GridEx_Initialize(Object_Type.IO_BOARD, ColumnNames_InOut_IOBoard, gridEX_InOut_IOBoard);
  152. // 수신기 - 입출력 - 키패드
  153. DeviceListInfo_GridEx_Initialize(Object_Type.KEYPAD, ColumnNames_InOut_KeyPad, gridEX_InOut_KeyPad);
  154. // 수신기 - 입출력 - 비상방송
  155. DeviceListInfo_GridEx_Initialize(Object_Type.EMERGENCY_BROADCAST, ColumnNames_InOut_EmergencyBroadcast, gridEX_InOut_EmergencyBroadcast);
  156. // 수신기 - 포인트
  157. DeviceListInfo_GridEx_Initialize(Object_Type.POINT, ColumnNames_Point, gridEX_Point);
  158. // 수신기 - 포인트 - 입력
  159. DeviceListInfo_GridEx_Initialize(Object_Type.INPUT, ColumnNames_Point_Input, gridEX_Point_Input);
  160. // 수신기 - 포인트 - 출력
  161. DeviceListInfo_GridEx_Initialize(Object_Type.OUTPUT, ColumnNames_Point_Output, gridEX_Point_Output);
  162. // 수신기 - 연동
  163. DeviceListInfo_GridEx_Initialize(Object_Type.OPER, ColumnNames_Oper, gridEX_Oper);
  164. // 수신기 - 그래픽
  165. DeviceListInfo_GridEx_Initialize(Object_Type.IMAGE, ColumnNames_Image, gridEX_Image);
  166. ///
  167. /// 그룹 및 연동설정의 경우 오로지 OPER_SET 페이지만 이용한다
  168. ///
  169. DeviceListInfo_Form_Initialize(Object_Type.OPER_SET);
  170. ///
  171. /// 포인트의 입력 및 출력의 경우 데이타바인딩용 컬럼으로 생성해야한다
  172. ///
  173. _Dataset.Create_Table(DataSet_Point_Input);
  174. _Dataset.Create_Table(DataSet_Point_Output);
  175. _Dataset.Add_DataColumn(DataSet_Point_Input, ColumnNames_Point_Input, ColumnNames_Point_Input); // 키 정보와 UI 표시부는 동일하다
  176. _Dataset.Add_DataColumn(DataSet_Point_Output, ColumnNames_Point_Output, ColumnNames_Point_Output); // 키 정보와 UI 표시부는 동일하다
  177. ///
  178. /// 수동 컬럼 속성 조정 (동적으로 생성된 컬럼헤더의 속성을 변경하고 싶다면 아래와 같이 조절)
  179. ///
  180. //
  181. // 사이즈 변경 (컬럼 사이즈 조절, 단 바운딩되면 다시 재조절해야되고 그 루틴은 각각 함수에 존재함)
  182. //
  183. // Project
  184. GridEXColumnList_Project[1].Width = 200;
  185. // 수신기
  186. GridEXColumnList_Receiver[1].Width = 200;
  187. // 수신기 - 포인트
  188. GridEXColumnList_Point[0].Width = 200;
  189. GridEXColumnList_Point[1].Width = 200;
  190. GridEXColumnList_Point[2].Width = 200;
  191. // 수신기 - 포인트 - 입력
  192. GridEXColumnList_Point_Input[0].Width = 100; // No
  193. GridEXColumnList_Point_Input[1].Width = 150; // 회로번호
  194. GridEXColumnList_Point_Input[2].Width = 150; // 설비종류
  195. GridEXColumnList_Point_Input[3].Width = 150; // 위치
  196. GridEXColumnList_Point_Input[4].Width = 150; // 디바이스명칭
  197. GridEXColumnList_Point_Output[0].Width = 100;
  198. GridEXColumnList_Point_Output[1].Width = 150;
  199. GridEXColumnList_Point_Output[2].Width = 150;
  200. GridEXColumnList_Point_Output[3].Width = 150;
  201. GridEXColumnList_Point_Output[4].Width = 150;
  202. // 수신기 - 연동
  203. GridEXColumnList_Oper[0].Width = 200;
  204. GridEXColumnList_Oper[1].Width = 200;
  205. GridEXColumnList_Oper[2].Width = 200;
  206. GridEXColumnList_Oper[3].Width = 200;
  207. // 수신기 - 그래픽
  208. // DataApplytoGridex_Image () 함수에서 재조절함 (컬럼명에 의해 사이즈가 변경되는 것이 많다)
  209. GridEXColumnList_Image[0].Width = ColumnNames_Image_PageName;
  210. GridEXColumnList_Image[1].Width = ColumnNames_Image_ButtonIconCount;
  211. GridEXColumnList_Image[2].Width = ColumnNames_Image_DeviceIconCount;
  212. }
  213. ///
  214. /// 폼닫기 이벤트를 등록
  215. ///
  216. public void CreateForm_FormClosing(object sender, FormClosingEventArgs e)
  217. {
  218. // 이벤트 핸들러 해제용
  219. // 윈도우 스타일 변경 이벤트 핸들러 해제
  220. _Event.WindowStyleSet_SendMessage_Event -= new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event);
  221. // 페이지별 생성 이벤트 핸들러 등록
  222. _Event.WorkViewPageName_SendMessage_Event -= new _Event.WorkViewPageName_SendMessage_Handler(_Event_WorkViewPageName_SendMessage_Event);
  223. // 비상방송 코드편집 이벤트 핸들러 해제
  224. _Event.EmergencyCodeEdit_SendMessage_Event -= new _Event.EmergencyCodeEdit_SendMessage_Handler(_Event_EmergencyCodeEdit_SendMessage_Event);
  225. // 트리뷰에 전체 노드 삭제 이벤트 핸들러 해제
  226. _Event.WorkView_Clear_SendMessage_Event -= new _Event.WorkView_Clear_SendMessage_Handler(_Event_WorkView_Clear_SendMessage_Event);
  227. // 수신기 추가 및 편집 폼에서 작업 완료 이벤트 핸들러 해제
  228. _Event.WorkViewPageName_Receiver_SendMessage_Event -= new _Event.WorkViewPageName_Receiver_SendMessage_Handler(_Event_WorkViewPageName_Receiver_SendMessage_Event);
  229. // 캡쳐 동작 핸들러 해제
  230. _Event.Capture_Save_SendMessage_Event -= new _Event.Capture_Save_SendMessage_Handler(_Event_Capture_Save_SendMessage_Event);
  231. // 트리뷰 초기화 이벤트 및 프로젝트 열기 혹은 새로만들기 겸용 핸들러 해제
  232. //_Event.TreeView_Clear_SendMessage_Event -= new _Event.TreeView_Clear_SendMessage_Handler(_Event_TreeView_Clear_SendMessage_Event);
  233. }
  234. // 윈도우 스타일 변경 이벤트
  235. public void _Event_WindowStyleSet_SendMessage_Event()
  236. {
  237. UI_Style_Initialize();
  238. }
  239. // 스타일 초기화 함수
  240. private void UI_Style_Initialize()
  241. {
  242. }
  243. ///
  244. /// 폼생성
  245. ///
  246. public void DeviceListInfo_Form_Initialize(Object_Type Oevice_type)
  247. {
  248. switch (Oevice_type)
  249. {
  250. case Object_Type.OPER_SET:
  251. {
  252. // 그룹 및 연동설정 폼은 1개로 처리한다
  253. // 수신기 - 연동 - 그룹
  254. // 수신기 - 연동 - 연동설정
  255. Form_ConfigMAP ConfigMAP = new Form_ConfigMAP();
  256. // 프레임으로 추가
  257. _Frame.Create(this.uiPanel_WorkViewContainer_Oper_Set, ConfigMAP);
  258. }
  259. break;
  260. }
  261. }
  262. ///
  263. /// 컬럼헤더 생성
  264. ///
  265. public void DeviceListInfo_GridEx_Initialize(Object_Type Oevice_type, string[] ColumnNames, GridEX Gridex)
  266. {
  267. // UI 초기화
  268. Gridex.ClearItems();
  269. // 컬럼을 생성한다
  270. switch (Oevice_type)
  271. {
  272. // Project
  273. case Object_Type.PROJECT:
  274. {
  275. GridEXColumnList_Project.Clear(); // 컬럼 리스트 초기화
  276. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  277. GridEXColumnList_Project.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  278. }
  279. break;
  280. // 수신기
  281. case Object_Type.RECEIVER:
  282. {
  283. GridEXColumnList_Receiver.Clear(); // 컬럼 리스트 초기화
  284. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  285. {
  286. // cyim - 2012.8.13
  287. //
  288. // 예제 - 수신기 노드를 선택하면 4가지 타입의 데이타가 표시됩니다
  289. // -> 텍스트박스(일반) , 체크박스 , 콤보박스, 버튼
  290. // 헤더문구는 UI_WORKFRAME_RECEIVER_COLUMNNAME =>"Text;Checkbox;Button;Combobox"; 가 있다고 가정합니다.
  291. // 컬럼을 제어할수 있는 GridEXColumnList_Receiver 의 리스트에는 각각 Text;Checkbox;Button;Combobox 정보가 있습니다.
  292. //
  293. /*
  294. // 일반
  295. if(ColumnName=="Text")
  296. GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, ColumnName));
  297. // 체크박스
  298. else if (ColumnName == "Checkbox")
  299. GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, ColumnName));
  300. // 버튼
  301. else if (ColumnName == "Button")
  302. GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.ButtonCell, ColumnName));
  303. // 콤보박스
  304. else if (ColumnName == "Combobox")
  305. {
  306. //콤보박스안에 글자를 삽입한후 컬럼을 추가한다
  307. ArrayList ComboboxText = new ArrayList();
  308. ComboboxText.Add("Test1");
  309. ComboboxText.Add("Test2");
  310. GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.Combo, ButtonStyle.NoButton, ColumnName,ComboboxText));
  311. }
  312. */
  313. GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  314. }
  315. }
  316. break;
  317. // 수신기 - 입출력
  318. case Object_Type.INOUT:
  319. {
  320. GridEXColumnList_InOut.Clear(); // 컬럼 리스트 초기화
  321. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  322. {
  323. if (ColumnName == "UseFlag")
  324. {
  325. GridEXColumnList_InOut.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, false, ColumnName));
  326. }
  327. else
  328. {
  329. GridEXColumnList_InOut.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  330. }
  331. }
  332. }
  333. break;
  334. // 수신기 - 입출력 - 통신보드
  335. case Object_Type.COM_BOARD:
  336. {
  337. GridEXColumnList_InOut_CommBoard.Clear(); // 컬럼 리스트 초기화
  338. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  339. {
  340. if ((ColumnName == "UseFlag") || (ColumnName == "Ch1_Use") || (ColumnName == "Ch2_Use") || (ColumnName == "Ch3_Use") || (ColumnName == "Ch4_Use")) // cyim 2016.10.31 : 워크뷰에서 통신보드 보기 화면에서 채널3,4 정보가 표시되지 않는 문제
  341. {
  342. GridEXColumnList_InOut_CommBoard.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, false, ColumnName));
  343. }
  344. else
  345. {
  346. GridEXColumnList_InOut_CommBoard.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  347. }
  348. }
  349. }
  350. break;
  351. // 수신기 - 입출력 - IO보드
  352. case Object_Type.IO_BOARD:
  353. {
  354. GridEXColumnList_InOut_IOBoard.Clear(); // 컬럼 리스트 초기화
  355. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  356. {
  357. if (ColumnName == "UseFlag")
  358. {
  359. GridEXColumnList_InOut_IOBoard.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, false, ColumnName));
  360. }
  361. else
  362. {
  363. GridEXColumnList_InOut_IOBoard.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  364. }
  365. }
  366. }
  367. break;
  368. // 수신기 - 입출력 - 키패드
  369. case Object_Type.KEYPAD:
  370. {
  371. GridEXColumnList_InOut_KeyPAD.Clear(); // 컬럼 리스트 초기화
  372. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  373. {
  374. if (ColumnName == "UseFlag")
  375. {
  376. GridEXColumnList_InOut_KeyPAD.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, false, ColumnName));
  377. }
  378. else
  379. {
  380. GridEXColumnList_InOut_KeyPAD.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  381. }
  382. }
  383. }
  384. break;
  385. // 수신기 - 입출력 - 비상방송
  386. case Object_Type.EMERGENCY_BROADCAST:
  387. {
  388. GridEXColumnList_InOut_EmergencyBroadcast.Clear(); // 컬럼 리스트 초기화
  389. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  390. {
  391. if (ColumnName == "UseFlag")
  392. {
  393. GridEXColumnList_InOut_EmergencyBroadcast.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, false, ColumnName));
  394. }
  395. else
  396. {
  397. GridEXColumnList_InOut_EmergencyBroadcast.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  398. }
  399. }
  400. }
  401. break;
  402. // 수신기 - 포인트
  403. case Object_Type.POINT:
  404. {
  405. GridEXColumnList_Point.Clear(); // 컬럼 리스트 초기화
  406. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  407. GridEXColumnList_Point.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  408. }
  409. break;
  410. // 수신기 - 포인트 - 입력
  411. case Object_Type.INPUT:
  412. {
  413. GridEXColumnList_Point_Input.Clear(); // 컬럼 리스트 초기화
  414. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  415. GridEXColumnList_Point_Input.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  416. }
  417. break;
  418. // 수신기 - 포인트 - 출력
  419. case Object_Type.OUTPUT:
  420. {
  421. GridEXColumnList_Point_Output.Clear(); // 컬럼 리스트 초기화
  422. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  423. GridEXColumnList_Point_Output.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  424. }
  425. break;
  426. // 수신기 - 연동
  427. case Object_Type.OPER:
  428. {
  429. GridEXColumnList_Oper.Clear(); // 컬럼 리스트 초기화
  430. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  431. GridEXColumnList_Oper.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  432. }
  433. break;
  434. // 수신기 - 연동 - 그룹 (미사용)
  435. case Object_Type.OPER_GROUP:
  436. //{
  437. // GridEXColumnList_Oper_Group.Clear(); // 컬럼 리스트 초기화
  438. // foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  439. // GridEXColumnList_Oper_Group.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, ColumnName));
  440. //}
  441. break;
  442. // 수신기 - 연동 - 연동설정 (미사용)
  443. case Object_Type.OPER_SET:
  444. //{
  445. // GridEXColumnList_Oper_Set.Clear(); // 컬럼 리스트 초기화
  446. // foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  447. // GridEXColumnList_Oper_Set.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, ColumnName));
  448. //}
  449. break;
  450. // 수신기 - 그래픽
  451. case Object_Type.IMAGE:
  452. {
  453. GridEXColumnList_Image.Clear(); // 컬럼 리스트 초기화
  454. foreach (string ColumnName in ColumnNames) // 컬럼 추가 (텍스트 박스인지, 체크박스 타입인지 , 버튼인지 결정해서 생성)
  455. GridEXColumnList_Image.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, false, ColumnName));
  456. }
  457. break;
  458. }
  459. // 컬럼셋 추가 (컬럼 갯수 만큼)
  460. GridEXColumnSet gridEXColumnSet = _Gridex.ColumnSet_Add(Gridex, null, null, ColumnNames.Length, 400);
  461. // 컬럼셋 위치 조절
  462. // 생성한 컬럼을 컬럼셋 인덱스에 맞게 생성한다
  463. for (int i = 0; i < ColumnNames.Length; i++)
  464. _Gridex.ColumnSet_AddColumn(Gridex, gridEXColumnSet, ColumnNames[i], i);
  465. }
  466. ///
  467. /// 수신기 추가 및 편집 폼에서 작업 완료 이벤트
  468. ///
  469. //public void _Event_TreeView_Clear_SendMessage_Event(string ProjectName)
  470. //{
  471. // DataApplytoGridex_Project();
  472. //}
  473. ///
  474. /// 수신기 추가 및 편집 폼에서 작업 완료 이벤트
  475. ///
  476. delegate void CallBack_DataApplytoGridex_Receiver_Set(string RECEIVER_ID);
  477. public void _Event_WorkViewPageName_Receiver_SendMessage_Event(string RECEIVER_ID)
  478. {
  479. if (this.InvokeRequired)
  480. {
  481. CallBack_DataApplytoGridex_Receiver_Set d = new CallBack_DataApplytoGridex_Receiver_Set(_Event_WorkViewPageName_Receiver_SendMessage_Event);
  482. this.Invoke(d, new object[] { RECEIVER_ID });
  483. }
  484. else
  485. {
  486. DataApplytoGridex_Receiver(RECEIVER_ID);
  487. }
  488. }
  489. ///
  490. /// 화면 캡쳐 이벤트
  491. ///
  492. public void _Event_Capture_Save_SendMessage_Event(string RECEIVER_ID, string PAGE_ID)
  493. {
  494. // 특별처리 캡쳐 진행중
  495. if (_Data.Enable_Capture == true)
  496. {
  497. ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).Capure_Image_Page = _Graphic.Capture_By_Component(this.pictureBox_Background);
  498. }
  499. }
  500. ///
  501. /// 노드 전부 삭제 이벤트
  502. ///
  503. public void _Event_WorkView_Clear_SendMessage_Event()
  504. {
  505. // 페이지 선택
  506. this.uiTabPage_Project.Selected = true;
  507. // UI 초기화
  508. this.gridEX_Project.ClearItems();
  509. }
  510. ///
  511. /// 비상방송 코드편집 실행하면 발생하는 이벤트
  512. ///
  513. public void _Event_EmergencyCodeEdit_SendMessage_Event(string RECEIVER_ID)
  514. {
  515. // 입력
  516. //DataApplytoGridex_Point_Input();
  517. // 출력
  518. //DataApplytoGridex_Point_Output();
  519. if (this.uiTabPage_Point.InvokeRequired)
  520. {
  521. Cross_Thread d = new Cross_Thread(_Event_EmergencyCodeEdit_SendMessage_Event);
  522. this.Invoke(d, new object[] { RECEIVER_ID });
  523. }
  524. else
  525. {
  526. // 입력 출력 모두 표시
  527. DataApplytoGridex_Point(RECEIVER_ID);
  528. }
  529. }
  530. ///
  531. /// 노드를 클릭하면 발생하는 이벤트
  532. /// 예시 : 시스템 트리 노드를 선택하면 노드에 따라 탭페이지가 변경된다
  533. /// 아래의 함수 파라미터는 용도에 따라 변경 하세요
  534. ///
  535. public void _Event_WorkViewPageName_SendMessage_Event(string RECEIVER_ID, Object_Type TypeName, string NodeKey, string NodeText)
  536. {
  537. // 트리뷰에서 선택한 노드에 따라 페이지가 달리 보여진다
  538. switch (TypeName)
  539. {
  540. // 프로젝트
  541. case Object_Type.PROJECT:
  542. DataApplytoGridex_Project();
  543. break;
  544. // 수신기
  545. case Object_Type.RECEIVER:
  546. DataApplytoGridex_Receiver(RECEIVER_ID);
  547. break;
  548. // 수신기 - 입출력
  549. case Object_Type.INOUT:
  550. DataApplytoGridex_InOut(RECEIVER_ID);
  551. break;
  552. // 수신기 - 입출력 - 통신보드
  553. case Object_Type.COM_BOARD:
  554. DataApplytoGridex_InOut_ComBoard(RECEIVER_ID);
  555. break;
  556. // 수신기 - 입출력 - IO보드
  557. case Object_Type.IO_BOARD:
  558. DataApplytoGridex_InOut_IOBoard(RECEIVER_ID);
  559. break;
  560. // 수신기 - 입출력 - 키패드
  561. case Object_Type.KEYPAD:
  562. DataApplytoGridex_InOut_KeyPad(RECEIVER_ID);
  563. break;
  564. // 수신기 - 입출력 - 비상방송
  565. case Object_Type.EMERGENCY_BROADCAST:
  566. DataApplytoGridex_InOut_EmergencyBroadCast(RECEIVER_ID);
  567. break;
  568. // 수신기 - 포인트
  569. case Object_Type.POINT:
  570. DataApplytoGridex_Point(RECEIVER_ID);
  571. break;
  572. // 수신기 - 포인트 - 입력
  573. case Object_Type.INPUT:
  574. DataApplytoGridex_Point_Input(RECEIVER_ID);
  575. break;
  576. // 수신기 - 포인트 - 출력
  577. case Object_Type.OUTPUT:
  578. DataApplytoGridex_Point_Output(RECEIVER_ID);
  579. break;
  580. // 수신기 - 연동
  581. case Object_Type.OPER:
  582. DataApplytoGridex_Oper(RECEIVER_ID);
  583. break;
  584. // 수신기 - 연동 - 그룹 (한개의 폼을 동일하게 처리 : 그룹 및 연동설정)
  585. case Object_Type.OPER_GROUP:
  586. DataApplytoGridex_Oper_Group(RECEIVER_ID);
  587. break;
  588. // 수신기 - 연동 - 연동설정 (한개의 폼을 동일하게 처리 : 그룹 및 연동설정)
  589. case Object_Type.OPER_SET:
  590. DataApplytoGridex_Oper_Set(RECEIVER_ID);
  591. break;
  592. // 수신기 - 그래픽
  593. case Object_Type.IMAGE:
  594. DataApplytoGridex_Image(RECEIVER_ID);
  595. break;
  596. // 수신기 - 그래픽 - 페이지
  597. case Object_Type.PAGE:
  598. DataApplytoGridex_Image_Page(RECEIVER_ID, NodeKey, NodeText);
  599. break;
  600. }
  601. }
  602. ///
  603. /// GridEx 데이타 적용 - 프로젝트
  604. ///
  605. public void DataApplytoGridex_Project()
  606. {
  607. string sRecoverMode;
  608. string sJumpToView;
  609. // 페이지 선택
  610. this.uiTabPage_Project.Selected = true;
  611. // UI 초기화
  612. this.gridEX_Project.ClearItems();
  613. // Root 의 컬럼명은
  614. // "수신기명;빌딩이름;수신기IP;EventPort;CommandPort;축적시간;화재모드;화재시화면전환"
  615. ///
  616. /// 컬럼 내용 추가
  617. ///
  618. // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다
  619. foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
  620. {
  621. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).RECOVER_MODE == false)
  622. sRecoverMode = "자동복구";
  623. else
  624. sRecoverMode = "지속";
  625. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).JUMP_TO_VIEW == true)
  626. sJumpToView = "전환함";
  627. else
  628. sJumpToView = "전환안함";
  629. string GridexAddItem =
  630. // 수신기
  631. ColumnNames_Project[0] + _Text.Equal + "Receiver" + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).ID + _Text.SemiColon +
  632. // 빌딩명
  633. ColumnNames_Project[1] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NAME + _Text.SemiColon +
  634. // 수신기IP
  635. ColumnNames_Project[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).IP + _Text.SemiColon +
  636. // EventPort
  637. ColumnNames_Project[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).EVENT_PORT + _Text.SemiColon +
  638. // CommandPort
  639. ColumnNames_Project[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).COMMAND_PORT + _Text.SemiColon +
  640. // 축적시간
  641. ColumnNames_Project[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).FIRE_ACCUMULATION_SECOND + _Text.SemiColon +
  642. // 화재모드
  643. ColumnNames_Project[6] + _Text.Equal + sRecoverMode + _Text.SemiColon +
  644. // 화재시화면전환
  645. ColumnNames_Project[7] + _Text.Equal + sJumpToView + _Text.SemiColon +
  646. // 네트워크 마스터 모드
  647. ColumnNames_Project[8] + _Text.Equal + (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MASTER_FLAG ? "Y" : "N") + _Text.SemiColon +
  648. // 모델정보
  649. ColumnNames_Project[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL; // cyim 2016.12.02 : 수신기 모델 설정 기능 추가
  650. // 생성된 컬럼명에 맞게 데이타를 추가한다
  651. _Gridex.Column_Data_Add(this.gridEX_Project, false, GridexAddItem);
  652. }
  653. }
  654. ///
  655. /// GridEx 데이타 적용 - 수신기
  656. ///
  657. public void DataApplytoGridex_Receiver(string pRECEIVER_ID)
  658. {
  659. //
  660. // 데이타베이스 접근 경로 지정부
  661. //
  662. _Data.DataBaseFilePath_Set(null);//(pRECEIVER_ID);
  663. // 페이지 선택
  664. this.uiTabPage_Receiver.Selected = true;
  665. // UI 초기화
  666. this.gridEX_Receiver.ClearItems();
  667. // Receiver 의 컬럼명은
  668. // "Name;빌딩
  669. ///
  670. // 컬럼 내용 추가 => "Text;Checkbox;Button;Combobox""
  671. /*
  672. string GridexAddItem =
  673. // 일반 (데이타는 일반 문자열)
  674. ColumnNames_Receiver[0] + _Text.Equal + "Receiver" + _Text.SemiColon +
  675. // 체크박스 (데이타는 반드시 True 혹은 False)
  676. ColumnNames_Receiver[1] + _Text.Equal + true.ToString() + _Text.SemiColon +
  677. // 버튼 (데이타는 버튼 텍스트입니다)
  678. ColumnNames_Receiver[2] + _Text.Equal + "버튼" + _Text.SemiColon +
  679. // 콤보박스 (데이타는 콤보박스의 첫번째 문자열입니다 (콤보박스의 데이타는 사전에 생성될때 추가하는 루틴이 존재합니다)
  680. ColumnNames_Receiver[3] + _Text.Equal + "첫번째글자";
  681. */
  682. string sRecoverMode;
  683. string sJumpToView;
  684. foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
  685. {
  686. if (pRECEIVER_ID == ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).ID)
  687. {
  688. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).RECOVER_MODE == false)
  689. sRecoverMode = "자동복구";
  690. else
  691. sRecoverMode = "지속";
  692. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).JUMP_TO_VIEW == true)
  693. sJumpToView = "전환함";
  694. else
  695. sJumpToView = "전환안함";
  696. string GridexAddItem =
  697. // 수신기
  698. ColumnNames_Receiver[0] + _Text.Equal + "Receiver" + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).ID + _Text.SemiColon +
  699. // 빌딩명
  700. ColumnNames_Receiver[1] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).NAME + _Text.SemiColon +
  701. // 수신기IP
  702. ColumnNames_Receiver[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).IP + _Text.SemiColon +
  703. // EventPort
  704. ColumnNames_Receiver[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).EVENT_PORT + _Text.SemiColon +
  705. // CommandPort
  706. ColumnNames_Receiver[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).COMMAND_PORT + _Text.SemiColon +
  707. // 축적시간
  708. ColumnNames_Receiver[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).FIRE_ACCUMULATION_SECOND + _Text.SemiColon +
  709. // 화재모드
  710. ColumnNames_Receiver[6] + _Text.Equal + sRecoverMode + _Text.SemiColon +
  711. // 화재시화면전환
  712. ColumnNames_Receiver[7] + _Text.Equal + sJumpToView + _Text.SemiColon +
  713. // 네트워크 마스터 모드
  714. ColumnNames_Receiver[8] + _Text.Equal + (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MASTER_FLAG ? "Y" : "N") + _Text.SemiColon +
  715. // 모델정보
  716. ColumnNames_Project[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL; // cyim 2016.12.02 : 수신기 모델 설정 기능 추가
  717. // 생성된 컬럼명에 맞게 데이타를 추가한다
  718. _Gridex.Column_Data_Add(this.gridEX_Receiver, false, GridexAddItem);
  719. }
  720. }
  721. }
  722. ///
  723. /// GridEx 데이타 적용 - 수신기 - 입출력
  724. ///
  725. public void DataApplytoGridex_InOut(string pRECEIVER_ID)
  726. {
  727. //
  728. // 데이타베이스 접근 경로 지정부
  729. //
  730. _Data.DataBaseFilePath_Set(null);//(pRECEIVER_ID);
  731. // 페이지 선택
  732. this.uiTabPage_InOut.Selected = true;
  733. // UI 초기화
  734. this.gridEX_InOut.ClearItems();
  735. // ColumnNames_InOut 의 컬럼명은
  736. // "CommID;COMM_NAME;COMM_PORT;BAUD_RATE;PARITY;DATABITS;STOPBITS;COMM_TIMEOUT;COMM_DELAY;DELTA_VOLT;RETRY_COUNT;UseFlag"
  737. ///
  738. /// 컬럼 내용 추가
  739. ///
  740. // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다
  741. foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
  742. {
  743. if (pRECEIVER_ID == ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).ID)
  744. {
  745. // CommBoard 정보 출력
  746. string GridexAddItem =
  747. // CommID
  748. ColumnNames_InOut[0] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.COMM_ID + _Text.SemiColon +
  749. // COMM_Name
  750. ColumnNames_InOut[1] + _Text.Equal + "통신 보드" + _Text.SemiColon +
  751. // COMM_Port
  752. ColumnNames_InOut[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Get_COM_PORT() + _Text.SemiColon +
  753. // Baud_Rate
  754. ColumnNames_InOut[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Get_COM_BAUDRATE() + _Text.SemiColon +
  755. // Parity
  756. ColumnNames_InOut[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Get_COM_PARITY() + _Text.SemiColon +
  757. // DataBits
  758. ColumnNames_InOut[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Get_COM_DATABITS() + _Text.SemiColon +
  759. // StopBits
  760. ColumnNames_InOut[6] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Get_COM_STOPBIT() + _Text.SemiColon +
  761. // Comm_TimeOut
  762. ColumnNames_InOut[7] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.TimeOut.ToString() + _Text.SemiColon +
  763. // Comm_Delay
  764. ColumnNames_InOut[8] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Delay.ToString() + _Text.SemiColon +
  765. // Delta_Volt
  766. ColumnNames_InOut[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Delta_Volt.ToString() + _Text.SemiColon +
  767. // Retry_Count
  768. ColumnNames_InOut[10] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Retry_Count.ToString() + _Text.SemiColon +
  769. // UseFlag
  770. ColumnNames_InOut[11] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4CommBoard.Use_Flag.ToString();
  771. // 생성된 컬럼명에 맞게 데이타를 추가한다
  772. _Gridex.Column_Data_Add(this.gridEX_InOut, false, GridexAddItem);
  773. // IOBoard 정보 출력
  774. GridexAddItem =
  775. ColumnNames_InOut[0] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.COMM_ID + _Text.SemiColon +
  776. // COMM_Name
  777. ColumnNames_InOut[1] + _Text.Equal + "IO 보드" + _Text.SemiColon +
  778. // COMM_Port
  779. ColumnNames_InOut[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Get_COM_PORT() + _Text.SemiColon +
  780. // Baud_Rate
  781. ColumnNames_InOut[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Get_COM_BAUDRATE() + _Text.SemiColon +
  782. // Parity
  783. ColumnNames_InOut[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Get_COM_PARITY() + _Text.SemiColon +
  784. // DataBits
  785. ColumnNames_InOut[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Get_COM_DATABITS() + _Text.SemiColon +
  786. // StopBits
  787. ColumnNames_InOut[6] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Get_COM_STOPBIT() + _Text.SemiColon +
  788. // Comm_TimeOut
  789. ColumnNames_InOut[7] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.TimeOut.ToString() + _Text.SemiColon +
  790. // Comm_Delay
  791. ColumnNames_InOut[8] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Delay.ToString() + _Text.SemiColon +
  792. // Delta_Volt
  793. ColumnNames_InOut[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Delta_Volt.ToString() + _Text.SemiColon +
  794. // Retry_Count
  795. ColumnNames_InOut[10] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Retry_Count.ToString() + _Text.SemiColon +
  796. // UseFlag
  797. ColumnNames_InOut[11] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4IOBoard.Use_Flag.ToString();
  798. // 생성된 컬럼명에 맞게 데이타를 추가한다
  799. _Gridex.Column_Data_Add(this.gridEX_InOut, false, GridexAddItem);
  800. // KeyPAD 정보 출력
  801. GridexAddItem =
  802. ColumnNames_InOut[0] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.COMM_ID + _Text.SemiColon +
  803. // COMM_Name
  804. ColumnNames_InOut[1] + _Text.Equal + "KeyPAD" + _Text.SemiColon +
  805. // COMM_Port
  806. ColumnNames_InOut[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Get_COM_PORT() + _Text.SemiColon +
  807. // Baud_Rate
  808. ColumnNames_InOut[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Get_COM_BAUDRATE() + _Text.SemiColon +
  809. // Parity
  810. ColumnNames_InOut[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Get_COM_PARITY() + _Text.SemiColon +
  811. // DataBits
  812. ColumnNames_InOut[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Get_COM_DATABITS() + _Text.SemiColon +
  813. // StopBits
  814. ColumnNames_InOut[6] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Get_COM_STOPBIT() + _Text.SemiColon +
  815. // Comm_TimeOut
  816. ColumnNames_InOut[7] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.TimeOut.ToString() + _Text.SemiColon +
  817. // Comm_Delay
  818. ColumnNames_InOut[8] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Delay.ToString() + _Text.SemiColon +
  819. // Delta_Volt
  820. ColumnNames_InOut[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Delta_Volt.ToString() + _Text.SemiColon +
  821. // Retry_Count
  822. ColumnNames_InOut[10] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Retry_Count.ToString() + _Text.SemiColon +
  823. // UseFlag
  824. ColumnNames_InOut[11] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Use_Flag.ToString();
  825. // 생성된 컬럼명에 맞게 데이타를 추가한다
  826. _Gridex.Column_Data_Add(this.gridEX_InOut, false, GridexAddItem);
  827. // 비상방송 정보 출력
  828. GridexAddItem =
  829. ColumnNames_InOut[0] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.COMM_ID + _Text.SemiColon +
  830. // COMM_Name
  831. ColumnNames_InOut[1] + _Text.Equal + "비상방송" + _Text.SemiColon +
  832. // COMM_Port
  833. ColumnNames_InOut[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Get_COM_PORT() + _Text.SemiColon +
  834. // Baud_Rate
  835. ColumnNames_InOut[3] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Get_COM_BAUDRATE() + _Text.SemiColon +
  836. // Parity
  837. ColumnNames_InOut[4] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Get_COM_PARITY() + _Text.SemiColon +
  838. // DataBits
  839. ColumnNames_InOut[5] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Get_COM_DATABITS() + _Text.SemiColon +
  840. // StopBits
  841. ColumnNames_InOut[6] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Get_COM_STOPBIT() + _Text.SemiColon +
  842. // Comm_TimeOut
  843. ColumnNames_InOut[7] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.TimeOut.ToString() + _Text.SemiColon +
  844. // Comm_Delay
  845. ColumnNames_InOut[8] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Delay.ToString() + _Text.SemiColon +
  846. // Delta_Volt
  847. ColumnNames_InOut[9] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Delta_Volt.ToString() + _Text.SemiColon +
  848. // Retry_Count
  849. ColumnNames_InOut[10] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Retry_Count.ToString() + _Text.SemiColon +
  850. // UseFlag
  851. ColumnNames_InOut[11] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Use_Flag.ToString();
  852. // 생성된 컬럼명에 맞게 데이타를 추가한다
  853. _Gridex.Column_Data_Add(this.gridEX_InOut, false, GridexAddItem);
  854. }
  855. }
  856. }
  857. ///
  858. /// GridEx 데이타 적용 - 수신기 - 입출력 - 통신보드
  859. ///
  860. public void DataApplytoGridex_InOut_ComBoard(string pRECEIVER_ID)
  861. {
  862. //
  863. // 데이타베이스 접근 경로 지정부
  864. //
  865. _Data.DataBaseFilePath_Set(null);//pRECEIVER_ID);
  866. // 페이지 선택
  867. this.uiTabPage_InOut_CommBoard.Selected = true;
  868. // UI 초기화
  869. this.gridEX_InOut_CommBoard.ClearItems();
  870. // ColumnNames_CommBoard 의 컬럼명은
  871. // BoardID;BoardName;UseFlag;Ch1_Use;Ch2_Use
  872. ///
  873. /// 컬럼 내용 추가
  874. ///
  875. // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다
  876. foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
  877. {
  878. if (pRECEIVER_ID == RECEIVER_ID)
  879. {
  880. foreach (string COM_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).List_COM_BOARD_ID)
  881. {
  882. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL != "IFC3300") //3000 이하
  883. {
  884. int temp = Convert.ToInt32(((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID);
  885. if (temp == 15)
  886. {
  887. ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bUse_Flag = true;
  888. ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh1_Use_Flag = true;
  889. }
  890. if (temp > 15)
  891. break;
  892. if (temp != 0)
  893. {
  894. string GridexAddItem =
  895. // BoardID
  896. ColumnNames_InOut_CommBoard[0] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID + _Text.SemiColon +
  897. // BoardName
  898. ColumnNames_InOut_CommBoard[1] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME + _Text.SemiColon +
  899. // UseFlag
  900. 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 +
  901. // Ch1_Use
  902. 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 +
  903. // Ch2_Use
  904. 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 +
  905. // Ch3_Use
  906. 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 +
  907. // Ch4_Use
  908. 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 정보가 표시되지 않는 문제
  909. // 생성된 컬럼명에 맞게 데이타를 추가한다
  910. if (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID <= 64)
  911. _Gridex.Column_Data_Add(this.gridEX_InOut_CommBoard, false, GridexAddItem);
  912. }
  913. }
  914. else //3300
  915. {
  916. string GridexAddItem =
  917. // BoardID
  918. ColumnNames_InOut_CommBoard[0] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID + _Text.SemiColon +
  919. // BoardName
  920. ColumnNames_InOut_CommBoard[1] + _Text.Equal + ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME + _Text.SemiColon +
  921. // UseFlag
  922. 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 +
  923. // Ch1_Use
  924. 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 +
  925. // Ch2_Use
  926. 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 +
  927. // Ch3_Use
  928. 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 +
  929. // Ch4_Use
  930. 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 정보가 표시되지 않는 문제 // 생성된 컬럼명에 맞게 데이타를 추가한다
  931. if (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID <= 64)
  932. _Gridex.Column_Data_Add(this.gridEX_InOut_CommBoard, false, GridexAddItem);
  933. }
  934. }
  935. }
  936. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL != "IFC3300")
  937. {
  938. GridEXColumnList_InOut_CommBoard[5].Visible = false;
  939. GridEXColumnList_InOut_CommBoard[6].Visible = false;
  940. }
  941. }
  942. }
  943. ///
  944. /// GridEx 데이타 적용 - 수신기 - 입출력 - IO보드
  945. ///
  946. public void DataApplytoGridex_InOut_IOBoard(string pRECEIVER_ID)
  947. {
  948. //
  949. // 데이타베이스 접근 경로 지정부
  950. //
  951. _Data.DataBaseFilePath_Set(null);//pRECEIVER_ID);
  952. // 페이지 선택
  953. this.uiTabPage_InOut_IOBoard.Selected = true;
  954. // UI 초기화
  955. this.gridEX_InOut_IOBoard.ClearItems();
  956. // ColumnNames_IOBoard 의 컬럼명은
  957. // BoardID;BoardName;UseFlag
  958. ///
  959. /// 컬럼 내용 추가
  960. ///
  961. // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다
  962. foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
  963. {
  964. if (pRECEIVER_ID == RECEIVER_ID)
  965. {
  966. foreach (string IO_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).List_IO_BOARD_ID)
  967. {
  968. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL != "IFC3300")
  969. {
  970. int temp = Convert.ToInt32(((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID);
  971. if (temp != 0)
  972. {
  973. string GridexAddItem =
  974. // BoardID
  975. ColumnNames_InOut_IOBoard[0] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID + _Text.SemiColon +
  976. // BoardName
  977. ColumnNames_InOut_IOBoard[1] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_NAME + _Text.SemiColon +
  978. // UseFlag
  979. ColumnNames_InOut_IOBoard[2] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag.ToString();
  980. // 생성된 컬럼명에 맞게 데이타를 추가한다
  981. _Gridex.Column_Data_Add(this.gridEX_InOut_IOBoard, false, GridexAddItem);
  982. }
  983. }
  984. else
  985. {
  986. string GridexAddItem =
  987. // BoardID
  988. ColumnNames_InOut_IOBoard[0] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID + _Text.SemiColon +
  989. // BoardName
  990. ColumnNames_InOut_IOBoard[1] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_NAME + _Text.SemiColon +
  991. // UseFlag
  992. ColumnNames_InOut_IOBoard[2] + _Text.Equal + ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag.ToString();
  993. // 생성된 컬럼명에 맞게 데이타를 추가한다
  994. _Gridex.Column_Data_Add(this.gridEX_InOut_IOBoard, false, GridexAddItem);
  995. }
  996. }
  997. }
  998. }
  999. }
  1000. ///
  1001. /// GridEx 데이타 적용 - 수신기 - 입출력 - 키패드
  1002. ///
  1003. public void DataApplytoGridex_InOut_KeyPad(string pRECEIVER_ID)
  1004. {
  1005. //
  1006. // 데이타베이스 접근 경로 지정부
  1007. //
  1008. _Data.DataBaseFilePath_Set(null);//pRECEIVER_ID);
  1009. // 페이지 선택
  1010. this.uiTabPage_InOut_KeyPad.Selected = true;
  1011. // UI 초기화
  1012. this.gridEX_InOut_KeyPad.ClearItems();
  1013. // ColumnNames_CommBoard 의 컬럼명은
  1014. // BoardID;BoardName;UseFlag
  1015. ///
  1016. /// 컬럼 내용 추가
  1017. ///
  1018. // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다
  1019. foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
  1020. {
  1021. if (pRECEIVER_ID == RECEIVER_ID)
  1022. {
  1023. // 널값 보완 코드 ^^;
  1024. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).KEYPAD != null)
  1025. {
  1026. string GridexAddItem =
  1027. // BoardID
  1028. ColumnNames_InOut_KeyPad[0] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).KEYPAD.BOARD_ID + _Text.SemiColon +
  1029. // BoardName
  1030. ColumnNames_InOut_KeyPad[1] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).KEYPAD.BOARD_NAME + _Text.SemiColon +
  1031. // UseFlag
  1032. ColumnNames_InOut_KeyPad[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4KeyPAD.Use_Flag.ToString(); // cyim 2014.5.22 입출력수정을 해도 변동이 없는 상황 수정
  1033. // 생성된 컬럼명에 맞게 데이타를 추가한다
  1034. _Gridex.Column_Data_Add(this.gridEX_InOut_KeyPad, false, GridexAddItem);
  1035. }
  1036. }
  1037. }
  1038. }
  1039. ///
  1040. /// GridEx 데이타 적용 - 수신기 - 입출력 - 비상방송
  1041. ///
  1042. public void DataApplytoGridex_InOut_EmergencyBroadCast(string pRECEIVER_ID)
  1043. {
  1044. //
  1045. // 데이타베이스 접근 경로 지정부
  1046. //
  1047. _Data.DataBaseFilePath_Set(null);//pRECEIVER_ID);
  1048. // 페이지 선택
  1049. this.uiTabPage_InOut_EmergencyBroadcast.Selected = true;
  1050. // UI 초기화
  1051. this.gridEX_InOut_EmergencyBroadcast.ClearItems();
  1052. // ColumnNames_CommBoard 의 컬럼명은
  1053. // BoardID;BoardName;UseFlag
  1054. ///
  1055. /// 컬럼 내용 추가
  1056. ///
  1057. // 우선 수신기의 정보를 가져온다. 해쉬테이블을 꺼내볼려면 해쉬테이블의 키를 관리하는 키리스트를 알아야 합니다
  1058. foreach (string RECEIVER_ID in _Data.LIST_RECEIVER_ID)
  1059. {
  1060. if (pRECEIVER_ID == RECEIVER_ID)
  1061. {
  1062. // 널값 보완 코드 ^^;
  1063. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).EMERGENCY_BROADCAST != null)
  1064. {
  1065. string GridexAddItem =
  1066. // BoardID
  1067. ColumnNames_InOut_EmergencyBroadcast[0] + _Text.Equal + "-" + _Text.SemiColon +
  1068. // BoardName
  1069. ColumnNames_InOut_EmergencyBroadcast[1] + _Text.Equal + "비상방송" + _Text.SemiColon +
  1070. // UseFlag
  1071. ColumnNames_InOut_EmergencyBroadcast[2] + _Text.Equal + ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).Port4EmergencyBroadcast.Use_Flag.ToString();
  1072. // 생성된 컬럼명에 맞게 데이타를 추가한다
  1073. _Gridex.Column_Data_Add(this.gridEX_InOut_EmergencyBroadcast, false, GridexAddItem);
  1074. }
  1075. }
  1076. }
  1077. }
  1078. ///
  1079. /// GridEx 데이타 적용 - 수신기 - 포인트
  1080. ///
  1081. public void DataApplytoGridex_Point(string RECEIVER_ID)
  1082. {
  1083. //
  1084. // 데이타베이스 접근 경로 지정부
  1085. //
  1086. _Data.DataBaseFilePath_Set(null);//RECEIVER_ID);
  1087. // 페이지 선택
  1088. this.uiTabPage_Point.Selected = true;
  1089. // UI 초기화
  1090. this.gridEX_Point.ClearItems();
  1091. string input = _Text.Zero;
  1092. string output = _Text.Zero;
  1093. //ColumnNames_Point 의 컬럼명은 "입력 포인트 총개수;출력 포인트 총개수;등록일";
  1094. // 입력 개수
  1095. DataRowCollection DB_TABLE_DEVICE_IN = null;
  1096. // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
  1097. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL == "IFC3300")
  1098. {
  1099. // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME
  1100. DB_TABLE_DEVICE_IN = _Db.ExecuteRead_SqlDataAdapter(_Sql.Count_TB_DEVICE_BigReceiver("1", "I", RECEIVER_ID));
  1101. }
  1102. else
  1103. {
  1104. // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME
  1105. DB_TABLE_DEVICE_IN = _Db.ExecuteRead_SqlDataAdapter(_Sql.Count_TB_DEVICE("1", "15", "I", RECEIVER_ID));
  1106. }
  1107. if (DB_TABLE_DEVICE_IN != null)
  1108. {
  1109. foreach (DataRow dr in DB_TABLE_DEVICE_IN)
  1110. {
  1111. input = dr[0].ToString();
  1112. }
  1113. }
  1114. // 출력 개수
  1115. DataRowCollection DB_TABLE_DEVICE_OUT = null;
  1116. // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
  1117. if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).MODEL == "IFC3300")
  1118. {
  1119. // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME
  1120. DB_TABLE_DEVICE_OUT = _Db.ExecuteRead_SqlDataAdapter(_Sql.Count_TB_DEVICE_BigReceiver("1", "O", RECEIVER_ID));
  1121. }
  1122. else
  1123. {
  1124. // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME
  1125. DB_TABLE_DEVICE_OUT = _Db.ExecuteRead_SqlDataAdapter(_Sql.Count_TB_DEVICE("1", "15", "O", RECEIVER_ID));
  1126. }
  1127. if (DB_TABLE_DEVICE_OUT != null)
  1128. {
  1129. foreach (DataRow dr in DB_TABLE_DEVICE_OUT)
  1130. {
  1131. output = dr[0].ToString();
  1132. }
  1133. }
  1134. // 등록일 출력
  1135. string RegDate = "-"; // 없으면 "-"
  1136. // TB_DEVICE 테이블의 첫 레코드를 가져와서 등록일을 얻음
  1137. DataRowCollection DB_Search_TB_DEVICE = _Db.ExecuteRead_SqlDataAdapter(_Sql.Get_ColumnFirstValue("TB_DEVICE", "1", RECEIVER_ID));
  1138. if (DB_Search_TB_DEVICE != null)
  1139. {
  1140. foreach (DataRow Record in DB_Search_TB_DEVICE)
  1141. {
  1142. try
  1143. {
  1144. // 시간정보는 버리고 등록일만 얻음
  1145. RegDate = Convert.ToDateTime(Record[12].ToString()).ToString("yyyy-MM-dd");
  1146. }
  1147. catch
  1148. {
  1149. RegDate = DateTime.Now.ToString("yyyy-MM-dd");
  1150. }
  1151. // 속도 향상을 위해 한번만 실행되도록 한다
  1152. break;
  1153. }
  1154. }
  1155. string GridexAddItem =
  1156. // 입력 포인트 총개수
  1157. ColumnNames_Point[0] + _Text.Equal + input + _Text.SemiColon +
  1158. // 출력 포인트 총개수
  1159. ColumnNames_Point[1] + _Text.Equal + output + _Text.SemiColon +
  1160. // 출력 포인트 총개수
  1161. ColumnNames_Point[2] + _Text.Equal + RegDate;
  1162. // 생성된 컬럼명에 맞게 데이타를 추가한다
  1163. _Gridex.Column_Data_Add(this.gridEX_Point, false, GridexAddItem);
  1164. }
  1165. ///
  1166. /// GridEx 데이타 적용 - 수신기 - 포인트 - 입력
  1167. ///
  1168. public void DataApplytoGridex_Point_Input(string RECEIVER_ID)
  1169. {
  1170. ///
  1171. // 데이타베이스 접근 경로 지정부
  1172. //
  1173. _Data.DataBaseFilePath_Set(null);//RECEIVER_ID);
  1174. // 페이지 선택
  1175. this.uiTabPage_Point_Input.Selected = true;
  1176. // UI 초기화
  1177. this.gridEX_Point_Input.BoundMode = BoundMode.Unbound;
  1178. this.gridEX_Point_Input.ClearItems();
  1179. // 데이타셋도 반드시 초기화가 되어야 한다
  1180. DataSet_Point_Input.Tables[0].Rows.Clear();
  1181. // 아직 디바이스 정보가 저장되어 있지 않다
  1182. if (_Data.Hash_ImportPoint.ContainsKey(RECEIVER_ID) == false) return;
  1183. //ColumnNames_Point_Input 의 컬럼명은 "No;회로번호;설비종류;위치;디바이스명칭"
  1184. // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME
  1185. DataRowCollection DB_TABLE_DEVICE = ((_ImportPoint)_Data.Hash_ImportPoint[RECEIVER_ID]).IN_Points;
  1186. // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능
  1187. ArrayList SortSupport = new ArrayList();
  1188. // DataSet 내용을 수정한다
  1189. for (int i = 0; i < DB_TABLE_DEVICE.Count; i++)
  1190. {
  1191. // 레코드 정보
  1192. DataRow dr = DB_TABLE_DEVICE[i];
  1193. if (_Convert.Exception_Into_object(dr[3], dr[4], dr[5], dr[6], dr[7]) == true)
  1194. {
  1195. // 매개변수 순서 => COMM_ID, BOARD_ID, LOOP_NO, REPEATER_ID, DEVICE_ID, INOUT_TYPE
  1196. MskDeviceIDString dev_s = new MskDeviceIDString(
  1197. _Convert.Null_to_IntZero(dr[3].ToString()),
  1198. _Convert.Null_to_IntZero(dr[4].ToString()),
  1199. _Convert.Null_to_IntZero(dr[5].ToString()),
  1200. _Convert.Null_to_IntZero(dr[6].ToString()),
  1201. _Convert.Null_to_IntZero(dr[7].ToString()),
  1202. dr[8].ToString(), RECEIVER_ID); // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
  1203. // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능
  1204. _OrderByCircuitNo OrderByCircuitNo = new _OrderByCircuitNo();
  1205. OrderByCircuitNo.CircuitNo = dev_s.MskId;
  1206. OrderByCircuitNo.Type = dr[0].ToString();
  1207. OrderByCircuitNo.Location = dr[1].ToString();
  1208. OrderByCircuitNo.DeviceNickName = dr[2].ToString();
  1209. OrderByCircuitNo.EmergencyCode = dr[10].ToString() + "-" + dr[11].ToString() + "-" + dr[12].ToString();
  1210. OrderByCircuitNo.XML = string.Format("MI{0:00}{1:00}{2:0}{3:000}{4}",
  1211. Int32.Parse(RECEIVER_ID),
  1212. _Convert.Null_to_IntZero(dr[4].ToString()),
  1213. _Convert.Null_to_IntZero(dr[5].ToString()),
  1214. _Convert.Null_to_IntZero(dr[6].ToString()),
  1215. _Convert.Null_to_IntZero(dr[7].ToString()));
  1216. SortSupport.Add(OrderByCircuitNo);
  1217. //DataSet_Point_Input.Tables[0].Rows.Add(
  1218. // // No
  1219. // //string.Format("{0:d5}", (i + 1)),
  1220. // (i + 1),
  1221. // // 회로번호
  1222. // dev_s.MskId,
  1223. // // 설비종류
  1224. // dr[0].ToString(),
  1225. // // 위치
  1226. // dr[1].ToString(),
  1227. // // 디바이스명칭
  1228. // dr[2].ToString(),
  1229. // // 비상방송
  1230. // dr[10].ToString() + "-" + dr[11].ToString() + "-" + dr[12].ToString()
  1231. // );
  1232. }
  1233. }
  1234. // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능
  1235. SortSupport.Sort(_Data.Sort_CircuitNo);
  1236. for (int i = 0; i < SortSupport.Count; i++)
  1237. {
  1238. _OrderByCircuitNo OrderByCircuitNo = (_OrderByCircuitNo)SortSupport[i];
  1239. DataSet_Point_Input.Tables[0].Rows.Add(
  1240. // No
  1241. //string.Format("{0:d5}", (i + 1)),
  1242. (i + 1),
  1243. // 회로번호
  1244. OrderByCircuitNo.CircuitNo,
  1245. // 설비종류
  1246. OrderByCircuitNo.Type,
  1247. // 위치
  1248. OrderByCircuitNo.Location,
  1249. // 디바이스명칭
  1250. OrderByCircuitNo.DeviceNickName,
  1251. // 비상방송
  1252. OrderByCircuitNo.EmergencyCode,
  1253. // XML
  1254. OrderByCircuitNo.XML
  1255. );
  1256. }
  1257. // 데이타바인딩 적용
  1258. this.gridEX_Point_Input.BoundMode = BoundMode.Bound;
  1259. this.gridEX_Point_Input.SetDataBinding(DataSet_Point_Input, "GetData");
  1260. this.gridEX_Point_Input.RetrieveStructure();
  1261. this.gridEX_Point_Input.ResumeLayout();
  1262. //
  1263. // UI 조정
  1264. //
  1265. // 정렬
  1266. for (int i = 0; i < ColumnNames_Point_Input.Length; i++)
  1267. {
  1268. this.gridEX_Point_Input.RootTable.Columns[i].HeaderAlignment = TextAlignment.Center;
  1269. this.gridEX_Point_Input.RootTable.Columns[i].LineAlignment = TextAlignment.Center;
  1270. this.gridEX_Point_Input.RootTable.Columns[i].TextAlignment = TextAlignment.Center; // 단, 이벤트명은 제외
  1271. }
  1272. // 사이즈
  1273. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[0]].Width = 100; // No
  1274. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[1]].Width = 150; // 회로번호
  1275. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[2]].Width = 150; // 설비종류
  1276. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[3]].Width = 150; // 위치
  1277. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[4]].Width = 150; // 디바이스명칭
  1278. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[5]].Width = 150; // 비상방송
  1279. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[6]].Width = 150; // XML
  1280. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[0]].SortIndicator = SortIndicator.None;
  1281. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[1]].SortIndicator = SortIndicator.None;
  1282. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[2]].SortIndicator = SortIndicator.None;
  1283. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[3]].SortIndicator = SortIndicator.None;
  1284. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[4]].SortIndicator = SortIndicator.None;
  1285. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[5]].SortIndicator = SortIndicator.None;
  1286. this.gridEX_Point_Input.RootTable.Columns[ColumnNames_Point_Input[6]].SortIndicator = SortIndicator.None;
  1287. this.gridEX_Point_Input.RootTable.Columns[0].SortComparer = _Data.Sort_StringNumbering;
  1288. }
  1289. ///
  1290. /// GridEx 데이타 적용 - 수신기 - 포인트 - 출력
  1291. ///
  1292. public void DataApplytoGridex_Point_Output(string RECEIVER_ID)
  1293. {
  1294. //
  1295. // 데이타베이스 접근 경로 지정부
  1296. //
  1297. _Data.DataBaseFilePath_Set(null);//RECEIVER_ID);
  1298. // 페이지 선택
  1299. this.uiTabPage_Point_Output.Selected = true;
  1300. // UI 초기화
  1301. this.gridEX_Point_Output.BoundMode = BoundMode.Unbound;
  1302. this.gridEX_Point_Output.ClearItems();
  1303. // 데이타셋도 반드시 초기화가 되어야 한다
  1304. DataSet_Point_Output.Tables[0].Rows.Clear();
  1305. // 아직 디바이스 정보가 저장되어 있지 않다
  1306. if (_Data.Hash_ImportPoint.ContainsKey(RECEIVER_ID) == false) return;
  1307. //ColumnNames_Point_Output 의 컬럼명은 "No;회로번호;설비종류;위치;디바이스명칭"
  1308. // 매개변수 순서 => COMM_ID, INOUT_TYPE, BOARD_ID, LOOP_NO, REPEATER_ID, POSITION_CODE, DEVICE_TYPE_NAME, DEVICE_NAME
  1309. DataRowCollection DB_TABLE_DEVICE = ((_ImportPoint)_Data.Hash_ImportPoint[RECEIVER_ID]).OUT_Points;
  1310. // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능
  1311. ArrayList SortSupport = new ArrayList();
  1312. // DataSet 내용을 수정한다
  1313. for (int i = 0; i < DB_TABLE_DEVICE.Count; i++)
  1314. {
  1315. // 레코드 정보
  1316. DataRow dr = DB_TABLE_DEVICE[i];
  1317. if (_Convert.Exception_Into_object(dr[3], dr[4], dr[5], dr[6], dr[7]) == true)
  1318. {
  1319. // 매개변수 순서 => COMM_ID, BOARD_ID, LOOP_NO, REPEATER_ID, DEVICE_ID, INOUT_TYPE
  1320. MskDeviceIDString dev_s = new MskDeviceIDString(
  1321. _Convert.Null_to_IntZero(dr[3].ToString()),
  1322. _Convert.Null_to_IntZero(dr[4].ToString()),
  1323. _Convert.Null_to_IntZero(dr[5].ToString()),
  1324. _Convert.Null_to_IntZero(dr[6].ToString()),
  1325. _Convert.Null_to_IntZero(dr[7].ToString()),
  1326. dr[8].ToString(), RECEIVER_ID); // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
  1327. // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능
  1328. _OrderByCircuitNo OrderByCircuitNo = new _OrderByCircuitNo();
  1329. OrderByCircuitNo.CircuitNo = dev_s.MskId;
  1330. OrderByCircuitNo.Type = dr[0].ToString();
  1331. OrderByCircuitNo.Location = dr[1].ToString();
  1332. OrderByCircuitNo.DeviceNickName = dr[2].ToString();
  1333. //_OrderByCircuitNo.EmergencyCode = dr[10].ToString() + "-" + dr[11].ToString() + "-" + dr[12].ToString();
  1334. SortSupport.Add(OrderByCircuitNo);
  1335. //DataSet_Point_Output.Tables[0].Rows.Add(
  1336. // // No
  1337. // //string.Format("{0:d5}", (i + 1)),
  1338. // (i + 1),
  1339. // // 회로번호
  1340. // dev_s.MskId,
  1341. // // 설비종류
  1342. // dr[0].ToString(),
  1343. // // 위치
  1344. // dr[1].ToString(),
  1345. // // 디바이스명칭
  1346. // dr[2].ToString());
  1347. }
  1348. }
  1349. // cyim 2016.04.01 : 입력 및 출력회로 정렬 기능
  1350. SortSupport.Sort(_Data.Sort_CircuitNo);
  1351. for (int i = 0; i < SortSupport.Count; i++)
  1352. {
  1353. _OrderByCircuitNo OrderByCircuitNo = (_OrderByCircuitNo)SortSupport[i];
  1354. DataSet_Point_Output.Tables[0].Rows.Add(
  1355. // No
  1356. //string.Format("{0:d5}", (i + 1)),
  1357. (i + 1),
  1358. // 회로번호
  1359. OrderByCircuitNo.CircuitNo,
  1360. // 설비종류
  1361. OrderByCircuitNo.Type,
  1362. // 위치
  1363. OrderByCircuitNo.Location,
  1364. // 디바이스명칭
  1365. OrderByCircuitNo.DeviceNickName
  1366. // 비상방송
  1367. //_OrderByCircuitNo.EmergencyCode
  1368. );
  1369. }
  1370. // 데이타바인딩 적용
  1371. this.gridEX_Point_Output.BoundMode = BoundMode.Bound;
  1372. this.gridEX_Point_Output.SetDataBinding(DataSet_Point_Output, "GetData");
  1373. this.gridEX_Point_Output.RetrieveStructure();
  1374. this.gridEX_Point_Output.ResumeLayout();
  1375. //
  1376. // UI 조정
  1377. //
  1378. // 정렬
  1379. for (int i = 0; i < ColumnNames_Point_Output.Length; i++)
  1380. {
  1381. this.gridEX_Point_Output.RootTable.Columns[i].HeaderAlignment = TextAlignment.Center;
  1382. this.gridEX_Point_Output.RootTable.Columns[i].LineAlignment = TextAlignment.Center;
  1383. this.gridEX_Point_Output.RootTable.Columns[i].TextAlignment = TextAlignment.Center; // 단, 이벤트명은 제외
  1384. }
  1385. // 사이즈
  1386. this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[0]].Width = 100; // No
  1387. this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[1]].Width = 150; // 회로번호
  1388. this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[2]].Width = 150; // 설비종류
  1389. this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[3]].Width = 150; // 위치
  1390. this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[4]].Width = 150; // 디바이스명칭
  1391. this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[0]].SortIndicator = SortIndicator.None;
  1392. this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[1]].SortIndicator = SortIndicator.None;
  1393. this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[2]].SortIndicator = SortIndicator.None;
  1394. this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[3]].SortIndicator = SortIndicator.None;
  1395. this.gridEX_Point_Output.RootTable.Columns[ColumnNames_Point_Output[4]].SortIndicator = SortIndicator.None;
  1396. this.gridEX_Point_Output.RootTable.Columns[0].SortComparer = _Data.Sort_StringNumbering;
  1397. }
  1398. ///
  1399. /// GridEx 데이타 적용 - 수신기 - 연동
  1400. ///
  1401. public void DataApplytoGridex_Oper(string RECEIVER_ID)
  1402. {
  1403. //
  1404. // 데이타베이스 접근 경로 지정부
  1405. //
  1406. _Data.DataBaseFilePath_Set(null);//RECEIVER_ID);
  1407. // 페이지 선택
  1408. this.uiTabPage_Oper.Selected = true;
  1409. // UI 초기화
  1410. this.gridEX_Oper.ClearItems();
  1411. // 갯수
  1412. int Group = 0;
  1413. int Map = 0;
  1414. // 등록일 출력
  1415. string RegDate_Group = "-"; // 없으면 "-"
  1416. string RegDate_Map = "-"; // 없으면 "-"
  1417. //ColumnNames_Oper 의 컬럼명은 "그룹 총개수;연동 총개수;그룹 최종등록일;연동 최종등록일";
  1418. // 그룹 개수 및 최종등록일 가져오기
  1419. DataRowCollection DB_TABLE_GROUP = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_GROUP", "UPDATE_TIME", RECEIVER_ID));
  1420. if (DB_TABLE_GROUP != null)
  1421. {
  1422. // 그룹 총개수
  1423. Group = DB_TABLE_GROUP.Count;
  1424. foreach (DataRow dr in DB_TABLE_GROUP)
  1425. {
  1426. if (dr[4] != null && dr[4].ToString().Length != 0)
  1427. {
  1428. if (RegDate_Group == "-")
  1429. RegDate_Group = Convert.ToDateTime(dr[4].ToString()).ToString("yyyy-MM-dd");
  1430. else
  1431. {
  1432. if (Convert.ToDateTime(RegDate_Group) < Convert.ToDateTime(dr[4].ToString()))
  1433. RegDate_Group = Convert.ToDateTime(dr[4].ToString()).ToString("yyyy-MM-dd");
  1434. }
  1435. }
  1436. }
  1437. }
  1438. // 연동 개수 및 최종등록일 가져오기
  1439. DataRowCollection DB_TABLE_MAP = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_MAP", "UPDATE_TIME", RECEIVER_ID));
  1440. if (DB_TABLE_MAP != null)
  1441. {
  1442. // 연동 총개수
  1443. Map = DB_TABLE_MAP.Count;
  1444. foreach (DataRow dr in DB_TABLE_MAP)
  1445. {
  1446. if (dr[6] != null && dr[6].ToString().Length != 0)
  1447. {
  1448. if (RegDate_Map == "-")
  1449. RegDate_Map = Convert.ToDateTime(dr[6].ToString()).ToString("yyyy-MM-dd");
  1450. else
  1451. {
  1452. if (Convert.ToDateTime(RegDate_Map) < Convert.ToDateTime(dr[6].ToString()))
  1453. RegDate_Map = Convert.ToDateTime(dr[6].ToString()).ToString("yyyy-MM-dd");
  1454. }
  1455. }
  1456. }
  1457. }
  1458. string GridexAddItem =
  1459. // 입력 포인트 총개수
  1460. ColumnNames_Oper[0] + _Text.Equal + Group + _Text.SemiColon +
  1461. // 출력 포인트 총개수
  1462. ColumnNames_Oper[1] + _Text.Equal + Map + _Text.SemiColon +
  1463. // 출력 포인트 총개수
  1464. ColumnNames_Oper[2] + _Text.Equal + RegDate_Group + _Text.SemiColon +
  1465. // 출력 포인트 총개수
  1466. ColumnNames_Oper[3] + _Text.Equal + RegDate_Map;
  1467. // 생성된 컬럼명에 맞게 데이타를 추가한다
  1468. _Gridex.Column_Data_Add(this.gridEX_Oper, false, GridexAddItem);
  1469. }
  1470. ///
  1471. /// GridEx 데이타 적용 - 수신기 - 연동 - 그룹
  1472. ///
  1473. public void DataApplytoGridex_Oper_Group(string RECEIVER_ID)
  1474. {
  1475. //
  1476. // 데이타베이스 접근 경로 지정부
  1477. //
  1478. _Data.DataBaseFilePath_Set(null);//RECEIVER_ID);
  1479. // 페이지 선택 (그룹 및 연동설정은 동일한 페이지를 사용한다)
  1480. this.uiTabPage_Oper_Set.Selected = true;
  1481. // 동일한 페이지 이므로 탭을 구분한다
  1482. _Event.WorkViewPageName_Oper_SendMessage_Write(RECEIVER_ID, Object_Type.OPER_GROUP);
  1483. }
  1484. ///
  1485. /// GridEx 데이타 적용 - 수신기 - 연동 - 연동설정
  1486. ///
  1487. public void DataApplytoGridex_Oper_Set(string RECEIVER_ID)
  1488. {
  1489. //
  1490. // 데이타베이스 접근 경로 지정부
  1491. //
  1492. _Data.DataBaseFilePath_Set(null);//RECEIVER_ID);
  1493. // 페이지 선택 (그룹 및 연동설정은 동일한 페이지를 사용한다)
  1494. this.uiTabPage_Oper_Set.Selected = true;
  1495. // 동일한 페이지 이므로 탭을 구분한다
  1496. _Event.WorkViewPageName_Oper_SendMessage_Write(RECEIVER_ID, Object_Type.OPER_SET);
  1497. }
  1498. ///
  1499. /// GridEx 데이타 적용 - 수신기 - 그래픽
  1500. ///
  1501. public void DataApplytoGridex_Image(string RECEIVER_ID)
  1502. {
  1503. //
  1504. // 데이타베이스 접근 경로 지정부
  1505. //
  1506. _Data.DataBaseFilePath_Set(null);//RECEIVER_ID);
  1507. // 페이지 선택
  1508. this.uiTabPage_Image.Selected = true;
  1509. // UI 초기화
  1510. this.gridEX_Image.ClearItems();
  1511. //
  1512. // 수신기 - 그래픽 컬럼 헤더 정의
  1513. //
  1514. ArrayList NewColumnHeader = new ArrayList();
  1515. // 페이지당 현재 설정된 이름을 전부 가져온다
  1516. foreach (string PAGE_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).LIST_PAGE_ID)
  1517. {
  1518. if (((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).Receiver_ID == RECEIVER_ID)
  1519. {
  1520. foreach (string ICON_ID in ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).LIST_ICON_ID)
  1521. {
  1522. // 현재 설정된 아이콘의 이름을 모두 가져온다
  1523. string TempDeviceIconName = ((_PictureBoxItem)((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON[ICON_ID]).Device_Icon_NAME;
  1524. // 중복 배제 및 공백 제거 (널값 허용안함)
  1525. if (NewColumnHeader.Contains(TempDeviceIconName) == false && TempDeviceIconName != null && TempDeviceIconName.Length != 0)
  1526. {
  1527. NewColumnHeader.Add(TempDeviceIconName);
  1528. }
  1529. }
  1530. }
  1531. }
  1532. // 디바이스 이름이 없다
  1533. if (NewColumnHeader.Count != 0)
  1534. {
  1535. // 컬럼헤더 초기화
  1536. this.gridEX_Image.RootTable.Columns.Clear();
  1537. // 컬럼헤더 문자열
  1538. string temp_ColumnNames = _Text.UI_WORKFRAME_IMAGE_COLUMNNAME;
  1539. // 새로운 컬럼헤더 추가
  1540. foreach (string ColumnHeader in NewColumnHeader)
  1541. temp_ColumnNames = temp_ColumnNames + _Text.SemiColon + ColumnHeader;
  1542. // 컬럼헤더 문구 재정의
  1543. ColumnNames_Image = _Convert.String_to_ArrayString(temp_ColumnNames);
  1544. // 컬럼헤더를 다시 생성
  1545. DeviceListInfo_GridEx_Initialize(Object_Type.IMAGE, ColumnNames_Image, gridEX_Image);
  1546. }
  1547. // 데이타 추가
  1548. foreach (string PAGE_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).LIST_PAGE_ID)
  1549. {
  1550. if (((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).Receiver_ID == RECEIVER_ID)
  1551. {
  1552. int Button_Icon_Count = 0;
  1553. int Device_Icon_Count = 0;
  1554. // 버튼 아이콘 및 디바이스 아이콘 총개수 구하기
  1555. foreach (string ICON_ID in ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).LIST_ICON_ID)
  1556. {
  1557. if (((_PictureBoxItem)((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON[ICON_ID]).ItemType == Item_Type.Button)
  1558. Button_Icon_Count++;
  1559. else if (((_PictureBoxItem)((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON[ICON_ID]).ItemType == Item_Type.Device)
  1560. Device_Icon_Count++;
  1561. }
  1562. // 새로운 추가 컬럼에 따라 달리 동작함
  1563. string GridexAddItem = null;
  1564. GridexAddItem =
  1565. // Page Name
  1566. ColumnNames_Image[0] + _Text.Equal + ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).NodeText + _Text.SemiColon +
  1567. // Button
  1568. ColumnNames_Image[1] + _Text.Equal + Button_Icon_Count + _Text.SemiColon +
  1569. // Device
  1570. ColumnNames_Image[2] + _Text.Equal + Device_Icon_Count;
  1571. // 만약 새로운 추가 컬럼이 하나 이상 존재한다면
  1572. if (NewColumnHeader.Count != 0)
  1573. {
  1574. // 추가 컬럼을 상위 기본 정보외에 더 추가한다
  1575. for (int i = 3; i < NewColumnHeader.Count + 3; i++)
  1576. {
  1577. GridexAddItem = GridexAddItem + _Text.SemiColon +
  1578. ColumnNames_Image[i] + _Text.Equal + Get_Count_By_Device_Icon_Name(RECEIVER_ID, PAGE_ID, ColumnNames_Image[i]);
  1579. }
  1580. // 아래 컬럼은 모두 고정함
  1581. // "페이지 이름":
  1582. // "버튼 총개수":
  1583. // "디바이스 총개수":
  1584. this.gridEX_Image.FrozenColumns = 3;
  1585. }
  1586. // 컬럼헤더가 지나치게 글자가 긴 경우에는 사이즈 변경
  1587. foreach (GridEXColumn Column in GridEXColumnList_Image)
  1588. {
  1589. switch (Column.Key)
  1590. {
  1591. case "자동폐쇄장치 기동 확인":
  1592. Column.Width = 150; // 기본 100 -> 150
  1593. break;
  1594. case "전실댐퍼 기동 확인":
  1595. case "전실댐퍼 수동 확인":
  1596. Column.Width = 130; // 기본 100 -> 130
  1597. break;
  1598. case "전실급기휀 기동":
  1599. Column.Width = 150; // 기본 100 -> 150
  1600. break;
  1601. case "페이지 이름":
  1602. Column.Width = ColumnNames_Image_PageName;
  1603. break;
  1604. case "버튼 총개수":
  1605. Column.Width = ColumnNames_Image_ButtonIconCount;
  1606. break;
  1607. case "디바이스 총개수":
  1608. Column.Width = ColumnNames_Image_DeviceIconCount;
  1609. break;
  1610. default:
  1611. Column.Width = 80;
  1612. break;
  1613. }
  1614. }
  1615. // 생성된 컬럼명에 맞게 데이타를 추가한다
  1616. _Gridex.Column_Data_Add(this.gridEX_Image, false, GridexAddItem);
  1617. }
  1618. }
  1619. }
  1620. // 해당 이름에 대한 디바이스 총개수
  1621. private int Get_Count_By_Device_Icon_Name(string RECEIVER_ID, string Page_ID, string Data)
  1622. {
  1623. int result = 0;
  1624. foreach (string ICON_ID in ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[Page_ID]).LIST_ICON_ID)
  1625. {
  1626. if (((_PictureBoxItem)((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[Page_ID]).HASH_ICON[ICON_ID]).Device_Icon_NAME == Data)
  1627. result++;
  1628. }
  1629. return result;
  1630. }
  1631. ///
  1632. /// GridEx 데이타 적용 - 수신기 - 그래픽 - 페이지
  1633. ///
  1634. public void DataApplytoGridex_Image_Page(string RECEIVER_ID, string PageNodeKey, string PageNodeText)
  1635. {
  1636. // 페이지 선택
  1637. this.uiTabPage_Image_Page.Selected = true;
  1638. ///
  1639. /// 오브젝트 트리 초기화
  1640. ///
  1641. // 트리 초기화
  1642. this.treeView_ObjectTree.Nodes.Clear();
  1643. // 오브젝트 트리 - 프로젝트 노드 추가
  1644. _Tree.NodeAdd_Root(this.treeView_ObjectTree, _Text.UI_TREE_ROOT_KEY, PageNodeText, Object_Type.PAGE);
  1645. // 오브젝트 트리 - 버튼 아이콘 노드 추가 : 버튼 아이콘 메인
  1646. _Tree.NodeAdd_Root_Node(this.treeView_ObjectTree, 0, _Text.UI_TREE_BUTTON_ICON, _Text.UI_TREE_BUTTON_ICON, Object_Type.BUTTON_ICON);
  1647. // 오브젝트 트리 - 디바이스 아이콘 노드 추가 : 디바이스 아이콘 메인
  1648. _Tree.NodeAdd_Root_Node(this.treeView_ObjectTree, 0, _Text.UI_TREE_DEVICE_ICON, _Text.UI_TREE_DEVICE_ICON, Object_Type.DEVICE_ICON);
  1649. ///
  1650. /// 배경 픽쳐박스 초기화
  1651. ///
  1652. this.panel_Page_Sub_BackGround.Controls.Clear();
  1653. this.pictureBox_Background = new PictureBox();
  1654. this.pictureBox_Background.MaximumSize = new System.Drawing.Size(1080, 720);
  1655. this.pictureBox_Background.MinimumSize = new System.Drawing.Size(1080, 720);
  1656. this.pictureBox_Background.Name = "pictureBox_Background";
  1657. this.pictureBox_Background.Size = new System.Drawing.Size(1080, 720);
  1658. this.panel_Page_Sub_BackGround.Controls.Add(this.pictureBox_Background);
  1659. // 아이콘의 총 개수 및 적용 개수를 파악하기 위한 변수
  1660. int ButtonIcon_AllCnt = 0;
  1661. int ButtonIcon_ApplyCnt = 0;
  1662. int DeviceIcon_AllCnt = 0;
  1663. int DeviceIcon_ApplyCnt = 0;
  1664. // 페이지 검색
  1665. foreach (string PAGE_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).LIST_PAGE_ID)
  1666. {
  1667. // 페이지명이 구분자이다. _Page 클래스의 아이디는 오로지 XML 생성시에 사용될 뿐이다
  1668. if (PageNodeKey == PAGE_ID)
  1669. {
  1670. // 배경그림을 저장하기 위해서 임시 맵디자이너 클래스 생성
  1671. Form_MapDesigner Temp_MapDesigner = new Form_MapDesigner(RECEIVER_ID, null, null);
  1672. // 임시 리스트 및 해쉬 테이블을 만듬 -> 차후 TEMP_LIST_ICON_ID,TEMP_HASH_ICON 생성에서 사용함
  1673. ArrayList temp_list_icon_id = new ArrayList();
  1674. Hashtable temp_hash_icon = new Hashtable();
  1675. // 저장 정보를 토대로 리스트 및 해쉬 생성 - 불러오기
  1676. Temp_MapDesigner.Copy_HASH_LIST(
  1677. ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).LIST_ICON_ID,
  1678. ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON,
  1679. temp_list_icon_id,
  1680. temp_hash_icon);
  1681. //
  1682. // 배경그림
  1683. //
  1684. // 그림을 전체 모드로 교체 (픽쳐박스의 크기에 따라 이미지 사이즈가 자동조절)
  1685. this.pictureBox_Background.SizeMode = PictureBoxSizeMode.StretchImage;
  1686. // 파일경로 + 파일명
  1687. this.pictureBox_Background.BackgroundImage = Image.FromFile(((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).PictureBoxItem_BackGround.FullPath_FileName);
  1688. //
  1689. // 아이콘
  1690. //
  1691. // 배경에다가 그리자
  1692. Graphics gra = Graphics.FromImage(this.pictureBox_Background.BackgroundImage);
  1693. // 아이콘 리스트를 기준으로 픽쳐박스 생성
  1694. foreach (string ICON_ID in temp_list_icon_id)
  1695. {
  1696. temp_hash_icon = ((_Page)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_ID]).HASH_PAGE[PAGE_ID]).HASH_ICON;
  1697. //// 아이템 화면 배치
  1698. //_PictureBoxItem PictureBoxItem = Temp_MapDesigner.UI_Create_PictureBoxItem(
  1699. // this.pictureBox_Background,
  1700. // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).ItemType,
  1701. // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).FullPath_FileName,
  1702. // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).FileName,
  1703. // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name,
  1704. // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Location.X,
  1705. // ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Location.Y);
  1706. ///
  1707. /// 픽쳐박스 대신 Graphic 객체로 해결
  1708. ///
  1709. // 그릴 이미지를 가져오기
  1710. Image Icon = ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Image;
  1711. // 포인트 정보를 가져오기
  1712. Point point = new Point(((_PictureBoxItem)temp_hash_icon[ICON_ID]).Location.X, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Location.Y);
  1713. // 배경에다가 그리자 (해상도 72 이든 96이든)
  1714. gra.DrawImage(Icon, point.X, point.Y, Icon.Width, Icon.Height);
  1715. ///
  1716. /// 오브젝트 트리
  1717. ///
  1718. // 버튼 아이콘의 경우 처리
  1719. if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).ItemType == Item_Type.Button)
  1720. {
  1721. // 트리 추가
  1722. _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);
  1723. // 오브젝트 트리 색상 반영 (버튼)
  1724. _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Button_JumpPageName);
  1725. // 개수 파악
  1726. ButtonIcon_AllCnt++;
  1727. if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).Button_JumpPageName != "0") ButtonIcon_ApplyCnt++;
  1728. }
  1729. // 디바이스 아이콘의 경우 처리
  1730. else if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).ItemType == Item_Type.Device)
  1731. {
  1732. // 트리 추가
  1733. _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);
  1734. // 오브젝트 트리 색상 반영 (디바이스)
  1735. _Tree.ChangeColor_By_Data(this.treeView_ObjectTree, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Name, ((_PictureBoxItem)temp_hash_icon[ICON_ID]).Device_Oper_ID);
  1736. // 개수 파악
  1737. DeviceIcon_AllCnt++;
  1738. if (((_PictureBoxItem)temp_hash_icon[ICON_ID]).Button_JumpPageName != "0") DeviceIcon_ApplyCnt++;
  1739. }
  1740. }
  1741. // 오브젝트 트리 모두 확대
  1742. this.treeView_ObjectTree.ExpandAll();
  1743. // 오브젝트 트리 정렬
  1744. this.treeView_ObjectTree.Sort();
  1745. //
  1746. // 오브젝트 트리 부모 노드에 총개수 와 연동 개수를 표시한다
  1747. //
  1748. _Tree.SetNodeText_By_Name(this.treeView_ObjectTree, _Text.UI_TREE_BUTTON_ICON,
  1749. string.Format("{0} [총합:{1} 적용:{2}]", _Text.UI_TREE_BUTTON_ICON, ButtonIcon_AllCnt, ButtonIcon_ApplyCnt));
  1750. _Tree.SetNodeText_By_Name(this.treeView_ObjectTree, _Text.UI_TREE_DEVICE_ICON,
  1751. string.Format("{0} [총합:{1} 적용:{2}]", _Text.UI_TREE_DEVICE_ICON, DeviceIcon_AllCnt, DeviceIcon_ApplyCnt));
  1752. // 종료
  1753. break;
  1754. }
  1755. }
  1756. }
  1757. }
  1758. }