ITS0000MF.cpp 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "WindowMsgF.h"
  6. #include "CDSFacilityF.h"
  7. #include "CDSIncidentF.h"
  8. #include "FrmMainF.h"
  9. #include "CommFlashF.h"
  10. #pragma hdrstop
  11. #include "ITS0000MF.h"
  12. //---------------------------------------------------------------------------
  13. #pragma package(smart_init)
  14. #pragma link "FRAME_FacilityStatusListF"
  15. #pragma link "FRAME_ProcessStatusListF"
  16. #pragma link "FRAME_IncidentListF"
  17. #pragma link "FRAME_RepeatCongestListF"
  18. #pragma link "FRAME_TrafficMissLinkListF"
  19. #pragma link "FRAME_IncidentAutoListF"
  20. #pragma link "FRAME_BlackBoxEventListF"
  21. #pragma link "FRAME_UtisStatusListF"
  22. #pragma link "FRAME_VilgFrcsListF"
  23. #pragma link "FRAME_VilgShprListF"
  24. #pragma link "FRAME_AtmpPltnListF"
  25. #pragma link "cxClasses"
  26. #pragma link "cxContainer"
  27. #pragma link "cxControls"
  28. #pragma link "cxCustomData"
  29. #pragma link "cxData"
  30. #pragma link "cxDataStorage"
  31. #pragma link "cxEdit"
  32. #pragma link "cxFilter"
  33. #pragma link "cxGraphics"
  34. #pragma link "cxGrid"
  35. #pragma link "cxGridCustomTableView"
  36. #pragma link "cxGridCustomView"
  37. #pragma link "cxGridLevel"
  38. #pragma link "cxGridTableView"
  39. #pragma link "cxGroupBox"
  40. #pragma link "cxLabel"
  41. #pragma link "cxLookAndFeelPainters"
  42. #pragma link "cxLookAndFeels"
  43. #pragma link "cxPC"
  44. #pragma link "cxPCdxBarPopupMenu"
  45. #pragma link "cxSplitter"
  46. #pragma link "cxStyles"
  47. #pragma link "dxSkinBlack"
  48. #pragma link "dxSkinBlue"
  49. #pragma link "dxSkinsCore"
  50. #pragma link "dxSkinscxPCPainter"
  51. #pragma resource "*.dfm"
  52. TITS0000M *ITS0000M = NULL;
  53. //---------------------------------------------------------------------------
  54. __fastcall TITS0000M::TITS0000M(TComponent* Owner)
  55. : TForm(Owner)
  56. {
  57. ITSSkin_Load(this);
  58. LoadLocalSkin();
  59. CMM_LoadForm(g_sFormsDir, this);
  60. PgSystem->Properties->ActivePage = TsIncident;
  61. GrpSystem->Caption = "▶ 시스템 운영 정보 - " + TsIncident->Caption;
  62. FRAMEFacilityStatusList1->PnlBottom->Visible = false;
  63. //FrmMain->dxStatusBar->Panels->Items[isbGisPos]->Visible = true;
  64. //ITS00MAP = new TITS00MAP(PnlMapBack, (TForm*)this);
  65. //시스템자동돌발
  66. FRAMEIncidentAutoList1->Visible = false;
  67. TsIncidentAuto->TabVisible = false;
  68. TsIncidentAuto->Visible = false;
  69. }
  70. //---------------------------------------------------------------------------
  71. /*
  72. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  73. * Form과 DataModule class를 delete시킨다.
  74. * arguments
  75. *
  76. * return
  77. * void
  78. */
  79. void __fastcall TITS0000M::CommClose()
  80. {
  81. try
  82. {
  83. if (FrmMain->dxStatusBar->Panels->Items[isbGisPos]->Visible)
  84. FrmMain->dxStatusBar->Panels->Items[isbGisPos]->Visible = false;
  85. if (ITS00MAP)
  86. {
  87. delete ITS00MAP;
  88. ITS00MAP = NULL;
  89. }
  90. CMM_SaveForm(g_sFormsDir, this);
  91. }
  92. catch(...)
  93. {
  94. }
  95. }
  96. //---------------------------------------------------------------------------
  97. /*
  98. * Form이 메모리에서 생성될때 호출되는 생성자 이벤트 핸들러
  99. * arguments
  100. * Sender : event handler 객체
  101. * return
  102. * void
  103. */
  104. void __fastcall TITS0000M::FormCreate(TObject *Sender)
  105. {
  106. if (ITS00MAP)
  107. {
  108. ITS00MAP->Parent = PnlMapBack;
  109. ITS00MAP->Show();
  110. }
  111. }
  112. //---------------------------------------------------------------------------
  113. /*
  114. * Form을 보여줄때 호출되는 event 메서드이다.
  115. * arguments
  116. * Sender : event handler 객체
  117. * return
  118. * void
  119. */
  120. void __fastcall TITS0000M::FormShow(TObject *Sender)
  121. {
  122. Refresh();
  123. Application->ProcessMessages();
  124. TmrShow->Enabled = true;
  125. }
  126. //---------------------------------------------------------------------------
  127. /*
  128. * Form의 Skin 초기화 작업을 수행한다.
  129. * arguments
  130. * void
  131. * return
  132. * void
  133. */
  134. void __fastcall TITS0000M::LoadLocalSkin()
  135. {
  136. #define MAX_VIEW 12
  137. TcxGridTableView *pView[MAX_VIEW];
  138. TcxGrid *pGrid[MAX_VIEW];
  139. for (int ii = 0; ii < MAX_VIEW; ii++)
  140. {
  141. pGrid[ii] = NULL;
  142. pView[ii] = NULL;
  143. }
  144. pGrid[ 0] = FRAMEProcessStatusList1->CxList; //프로세스상태
  145. pGrid[ 1] = FRAMEFacilityStatusList1->CxList; //시설물상태
  146. #if 0
  147. pGrid[ 2] = NULL;
  148. pGrid[ 3] = NULL;
  149. #else
  150. pGrid[ 2] = FRAMEUtisStatusList1->CxUtisRun; //UTIS현황-운영현황
  151. pGrid[ 3] = FRAMEUtisStatusList1->CxUtisRse; //UTIS현황-RSE상태현황
  152. #endif
  153. pGrid[ 4] = FRAMEIncidentList1->CxList; //돌발
  154. pGrid[ 5] = FRAMERepeatCongestList1->CxList; //반복정체구간
  155. pGrid[ 6] = FRAMETrafficMissLinkList1->CxList; //소통정보결측구간
  156. pGrid[ 7] = FRAMEIncidentAutoList1->CxList2; //소통정보결측구간
  157. pGrid[ 8] = FRAMEBlackBoxEventList1->CxList; //블랙박스이벤트리스트
  158. pGrid[ 9] = FRAMEVilgFrcsList1->CxList; //기상정보리스트
  159. pGrid[10] = FRAMEVilgShprList1->CxList; //기상정보리스트(초단기예보)
  160. pGrid[11] = FRAMEAtmpPltnList1->CxList; //환경정보(대기오염)
  161. pView[ 0] = FRAMEProcessStatusList1->TvList;
  162. pView[ 1] = FRAMEFacilityStatusList1->TvList;
  163. #if 0
  164. pView[ 2] = NULL;
  165. pView[ 3] = NULL;
  166. #else
  167. pView[ 2] = FRAMEUtisStatusList1->TvUtisRun;
  168. pView[ 3] = FRAMEUtisStatusList1->TvUtisRse;
  169. #endif
  170. pView[ 4] = FRAMEIncidentList1->TvList;
  171. pView[ 5] = FRAMERepeatCongestList1->TvList;
  172. pView[ 6] = FRAMETrafficMissLinkList1->TvList;
  173. pView[ 7] = FRAMEIncidentAutoList1->TvList2;
  174. pView[ 8] = FRAMEBlackBoxEventList1->TvList;
  175. pView[ 9] = FRAMEVilgFrcsList1->TvList;
  176. pView[10] = FRAMEVilgShprList1->TvList;
  177. pView[11] = (TcxGridTableView*)FRAMEAtmpPltnList1->TvList;
  178. for (int ii = 0; ii < MAX_VIEW; ii++)
  179. {
  180. if (!pView[ii]) continue;
  181. //pGrid[ii]->LookAndFeel->SkinName = "McSkin";
  182. pView[ii]->Styles->Inactive = NULL;
  183. pView[ii]->Styles->ContentOdd = NULL;
  184. pView[ii]->Styles->ContentEven= NULL;
  185. pView[ii]->Styles->Selection = NULL;
  186. pView[ii]->OptionsSelection->CellSelect = false;
  187. }
  188. }
  189. //---------------------------------------------------------------------------
  190. /*
  191. * Form이 Show되고 난 후 최초 1회 수행되는 타이머 이벤트
  192. * arguments
  193. * Sender : event handler 객체
  194. * return
  195. * void
  196. */
  197. void __fastcall TITS0000M::TmrShowTimer(TObject *Sender)
  198. {
  199. TmrShow->Enabled = false;
  200. // 리스트 항목을 초기화한다.
  201. InitListData();
  202. }
  203. //---------------------------------------------------------------------------
  204. void __fastcall TITS0000M::InitListData()
  205. {
  206. FIncidentCnt = 0;
  207. FRrCongestCnt = 0;
  208. FMissLinkCnt = 0;
  209. FRAMEFacilityStatusList1->UpdateList();
  210. UpdateFacilityStatusTotal();
  211. FRAMEProcessStatusList1->UpdateList();
  212. if (GrpBottomUtis->Visible)
  213. {
  214. FRAMEUtisStatusList1->UpdateList();
  215. }
  216. FRAMEIncidentList1->UpdateList();
  217. FRAMERepeatCongestList1->UpdateList();
  218. FRAMETrafficMissLinkList1->UpdateList();
  219. FRAMEIncidentAutoList1->UpdateList();
  220. FRAMEBlackBoxEventList1->UpdateList();
  221. FRAMEVilgFrcsList1->UpdateList();
  222. FRAMEVilgShprList1->UpdateList();
  223. FRAMEAtmpPltnList1->UpdateList();
  224. UpdateAlarmStatus();
  225. }
  226. //---------------------------------------------------------------------------
  227. void __fastcall TITS0000M::UpdateAlarmStatus()
  228. {
  229. String sAlarmMsg = "";
  230. FIncidentCnt = FRAMEIncidentList1->TvList->DataController->RecordCount;
  231. FRrCongestCnt = FRAMERepeatCongestList1->TvList->DataController->RecordCount;
  232. FMissLinkCnt = FRAMETrafficMissLinkList1->TvList->DataController->RecordCount;
  233. FIncidentAutoCnt = FRAMEIncidentAutoList1->TvList2->DataController->RecordCount;
  234. FBlackBoxEventCnt = FRAMEBlackBoxEventList1->TvList->DataController->RecordCount;
  235. FVilgFrcsCnt1 = FRAMEVilgFrcsList1->GetAlarmCount1();
  236. FVilgFrcsCnt2 = FRAMEVilgFrcsList1->GetAlarmCount2();
  237. FVilgFrcsCnt3 = FRAMEVilgShprList1->GetAlarmCount();
  238. FAtmpPlntCnt = FRAMEAtmpPltnList1->GetAlarmCount();
  239. if (TsIncidentAuto->TabVisible == false)
  240. FIncidentAutoCnt = 0;
  241. if (FIncidentCnt > 0)
  242. {
  243. sAlarmMsg += "돌발상황(" + String(FIncidentCnt) + ") ";
  244. TsIncident->ImageIndex = 1;
  245. }
  246. else
  247. TsIncident->ImageIndex = 2;
  248. if (FRrCongestCnt > 0)
  249. {
  250. sAlarmMsg += "반복정체구간(" + String(FRrCongestCnt) + ") ";
  251. TsRrCongest->ImageIndex = 1;
  252. }
  253. else
  254. TsRrCongest->ImageIndex = 2;
  255. if (FMissLinkCnt > 0)
  256. {
  257. sAlarmMsg += "결측구간(" + String(FMissLinkCnt) + ") ";
  258. TsMissingLink->ImageIndex = 1;
  259. }
  260. else
  261. TsMissingLink->ImageIndex = 2;
  262. if (FIncidentAutoCnt > 0)
  263. {
  264. sAlarmMsg += "자동돌발(" + String(FIncidentAutoCnt) + ") ";
  265. TsIncidentAuto->ImageIndex = 1;
  266. }
  267. else
  268. TsIncidentAuto->ImageIndex = 2;
  269. if (FBlackBoxEventCnt > 0)
  270. {
  271. sAlarmMsg += "블랙박스(" + String(FBlackBoxEventCnt) + ") ";
  272. TsBlackBoxEvent->ImageIndex = 1;
  273. }
  274. else
  275. TsBlackBoxEvent->ImageIndex = 2;
  276. if ((FVilgFrcsCnt1 + FVilgFrcsCnt2) > 0)
  277. {
  278. //sAlarmMsg += "기상악화(" + String(FVilgFrcsCnt1+FVilgFrcsCnt2) + ") ";
  279. sAlarmMsg += "기상(동네예보) ";
  280. TsVilgFrcs->ImageIndex = 1;
  281. }
  282. else
  283. TsVilgFrcs->ImageIndex = 2;
  284. if ((FVilgFrcsCnt3) > 0)
  285. {
  286. //sAlarmMsg += "기상악화(" + String(FVilgFrcsCnt3) + ") ";
  287. sAlarmMsg += "기상(초단기예보) ";
  288. TsVilgShpr->ImageIndex = 1;
  289. }
  290. else
  291. TsVilgShpr->ImageIndex = 2;
  292. if ((FAtmpPlntCnt) > 0)
  293. {
  294. //sAlarmMsg += "환경정보(대기오염)(" + String(FAtmpPlntCnt) + ") ";
  295. sAlarmMsg += "환경정보(대기오염) ";
  296. TsAtmpPltn->ImageIndex = 1;
  297. }
  298. else
  299. TsAtmpPltn->ImageIndex = 2;
  300. LblAlarm->Caption = sAlarmMsg;
  301. if ((FIncidentCnt+FRrCongestCnt+FMissLinkCnt+FIncidentAutoCnt+FBlackBoxEventCnt+FVilgFrcsCnt1+FVilgFrcsCnt2+FVilgFrcsCnt3+FAtmpPlntCnt) > 0)
  302. {
  303. LblAlarm->Visible = true;
  304. }
  305. else
  306. {
  307. LblAlarm->Visible = false;
  308. }
  309. }
  310. //---------------------------------------------------------------------------
  311. void __fastcall TITS0000M::PgSystemPageChanging(TObject *Sender, TcxTabSheet *NewPage, bool &AllowChange)
  312. {
  313. GrpSystem->Caption = "▶ 시스템 운영 정보 - " + NewPage->Caption;
  314. }
  315. //---------------------------------------------------------------------------
  316. void __fastcall TITS0000M::FormClose(TObject *Sender, TCloseAction &Action)
  317. {
  318. try {
  319. CommClose();
  320. ITS0000M = NULL;
  321. Action = caFree;
  322. } catch(...) {}
  323. }
  324. //---------------------------------------------------------------------------
  325. /*
  326. * 메인폼에서 데이터를 수신시 발생하는 이벤트 핸들러
  327. * arguments
  328. *
  329. * return
  330. * void
  331. */
  332. void __fastcall TITS0000M::OnMainFormMessage(TMessage &Msg)
  333. {
  334. switch(Msg.WParam)
  335. {
  336. case WP_DB_SELECT_OK:
  337. switch(Msg.LParam)
  338. {
  339. case LP_MSG_16: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_16"); UpdateBlackBoxEventInfo(); break;
  340. case LP_MSG_17: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_17"); UpdateVilgFrcsInfo(); break;
  341. case LP_MSG_01: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_01"); UpdateTrafficMissLinkInfo(); break;
  342. case LP_MSG_02: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_02"); /*서비스링크소통정보*/ break;
  343. case LP_MSG_03: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_03"); /*도로소통정보*/ break;
  344. case LP_MSG_04: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_04"); UpdateTrafficRrCongestInfo(); break;
  345. case LP_MSG_05: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_05"); UpdateUtisStatusInfo(); break;
  346. case LP_MSG_11: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_11"); UpdateFacilityStatusInfo(); break;
  347. case LP_MSG_12: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_12"); UpdateProcessStatusInfo(); break;
  348. case LP_MSG_13: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_13"); UpdateIncidentInfo(); break;
  349. case LP_MSG_14: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_14"); UpdateFacilityInfo(); break;
  350. case LP_MSG_09: if (g_AppCfg.bDebug) ITSUtil_Trace("LP_MSG_09"); FRAMEProcessStatusList1->UpdateList(); break;
  351. #if 0
  352. case LP_MSG_10: //가공서버에서 소통정보 가공완료하였음.
  353. // GIS 소통정보 업데이트
  354. if (ITS00MAP) ITS00MAP->RefreshMapTraffic();
  355. break;
  356. #endif
  357. case LP_MSG_00: //가공서버에서 소통정보 가공완료하였음.
  358. // GIS 소통정보 업데이트
  359. if (ITS00MAP) ITS00MAP->RefreshMapTraffic();
  360. break;
  361. }
  362. break;
  363. case WP_MSG_01: //소통등급이 변경되었다.
  364. if (ITS00MAP) ITS00MAP->SetGisTrafficColor();
  365. break;
  366. case WP_MSG_02: //돌발정보를 현단말에서 취소/등록/해제 하였다.
  367. UpdateIncidentInfo();
  368. break;
  369. case WP_MSG_03: //시설물 기본정보가 변경됨
  370. UpdateFacilityInfo();
  371. //FRAMEFacilityStatusList1->UpdateList();
  372. break;
  373. case WP_DB_SELECT_ERROR:
  374. case WP_DB_SELECT_CANCEL:
  375. break;
  376. case WP_MSG_15:
  377. if (LP_MSG_15 == Msg.LParam)
  378. {
  379. if (ITS00MAP) ITS00MAP->RefreshGisLink();
  380. }
  381. break;
  382. }
  383. }
  384. //---------------------------------------------------------------------------
  385. void __fastcall TITS0000M::UpdateTrafficMissLinkInfo()
  386. {
  387. FMissLinkCnt = 0;
  388. FRAMETrafficMissLinkList1->UpdateList();
  389. FRAMEIncidentAutoList1->UpdateList();
  390. UpdateAlarmStatus();
  391. }
  392. //---------------------------------------------------------------------------
  393. void __fastcall TITS0000M::UpdateTrafficRrCongestInfo()
  394. {
  395. FRrCongestCnt = 0;
  396. FRAMERepeatCongestList1->UpdateList();
  397. UpdateAlarmStatus();
  398. }
  399. //---------------------------------------------------------------------------
  400. void __fastcall TITS0000M::UpdateIncidentInfo()
  401. {
  402. FIncidentCnt = 0;
  403. FRAMEIncidentList1->UpdateList();
  404. FRAMEIncidentAutoList1->UpdateList();
  405. UpdateAlarmStatus();
  406. if (ITS00MAP) ITS00MAP->UpdateIncidentStatus();
  407. }
  408. //---------------------------------------------------------------------------
  409. void __fastcall TITS0000M::UpdateFacilityStatusInfo()
  410. {
  411. //FRAMEFacilityStatusList1->UpdateList();
  412. FRAMEFacilityStatusList1->RefreshList();
  413. UpdateFacilityStatusTotal();
  414. UpdateAlarmStatus();
  415. if (ITS00MAP) ITS00MAP->UpdateFacilityStatus();
  416. }
  417. //---------------------------------------------------------------------------
  418. void __fastcall TITS0000M::UpdateProcessStatusInfo()
  419. {
  420. FRAMEProcessStatusList1->RefreshList();
  421. UpdateAlarmStatus();
  422. }
  423. //---------------------------------------------------------------------------
  424. void __fastcall TITS0000M::UpdateUtisStatusInfo()
  425. {
  426. if (GrpBottomUtis->Visible)
  427. {
  428. FRAMEUtisStatusList1->RefreshList();
  429. }
  430. }
  431. //---------------------------------------------------------------------------
  432. void __fastcall TITS0000M::UpdateFacilityInfo()
  433. {
  434. FRAMEFacilityStatusList1->UpdateList();
  435. UpdateFacilityStatusTotal();
  436. UpdateAlarmStatus();
  437. if (ITS00MAP) ITS00MAP->UpdateFacilityStatus(); //지도 시설물 재로딩
  438. }
  439. //---------------------------------------------------------------------------
  440. void __fastcall TITS0000M::UpdateBlackBoxEventInfo()
  441. {
  442. FBlackBoxEventCnt = 0;
  443. FRAMEBlackBoxEventList1->UpdateList();
  444. UpdateAlarmStatus();
  445. }
  446. //---------------------------------------------------------------------------
  447. void __fastcall TITS0000M::UpdateVilgFrcsInfo()
  448. {
  449. FVilgFrcsCnt1 = 0;
  450. FVilgFrcsCnt2 = 0;
  451. FVilgFrcsCnt3 = 0;
  452. FAtmpPlntCnt = 0;
  453. FRAMEVilgFrcsList1->RefreshList();
  454. FRAMEVilgShprList1->RefreshList();
  455. FRAMEAtmpPltnList1->RefreshList();
  456. UpdateAlarmStatus();
  457. }
  458. //---------------------------------------------------------------------------
  459. void __fastcall TITS0000M::FRAMEIncidentList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  460. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  461. {
  462. //돌발 클릭
  463. if (!ACellViewInfo) return;
  464. try {
  465. TcxDataController *pGDC = FRAMEIncidentList1->TvList->DataController;
  466. int nRow = pGDC->FocusedRecordIndex;
  467. if (nRow < 0) return;
  468. String sId = VarToStr(pGDC->Values[nRow][FRAMEIncidentList1->Column01->Index]);
  469. String sDx = VarToStr(pGDC->Values[nRow][FRAMEIncidentList1->Column07->Index]);
  470. String sDy = VarToStr(pGDC->Values[nRow][FRAMEIncidentList1->Column08->Index]);
  471. if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloat(sDx), StrToFloat(sDy), true);
  472. } catch(...) {}
  473. }
  474. //---------------------------------------------------------------------------
  475. void __fastcall TITS0000M::FRAMERepeatCongestList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  476. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  477. {
  478. //반복정체구간 클릭
  479. if (!ACellViewInfo) return;
  480. try {
  481. TcxDataController *pGDC = FRAMERepeatCongestList1->TvList->DataController;
  482. int nRow = pGDC->FocusedRecordIndex;
  483. if (nRow < 0) return;
  484. String sSvcLinkId = VarToStr(pGDC->Values[nRow][FRAMERepeatCongestList1->Column01->Index]);
  485. if (ITS00MAP) ITS00MAP->SelectLinkById(2, sSvcLinkId, true);
  486. } catch(...) {}
  487. }
  488. //---------------------------------------------------------------------------
  489. void __fastcall TITS0000M::FRAMETrafficMissLinkList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  490. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  491. {
  492. //소통정보 결측구간 클릭
  493. if (!ACellViewInfo) return;
  494. try {
  495. TcxDataController *pGDC = FRAMETrafficMissLinkList1->TvList->DataController;
  496. int nRow = pGDC->FocusedRecordIndex;
  497. if (nRow < 0) return;
  498. String sLinkId = VarToStr(pGDC->Values[nRow][FRAMETrafficMissLinkList1->Column02->Index]);
  499. if (ITS00MAP) ITS00MAP->SelectLinkById(1, sLinkId, true);
  500. } catch(...) {}
  501. }
  502. //---------------------------------------------------------------------------
  503. void __fastcall TITS0000M::FRAMEFacilityStatusList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  504. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  505. {
  506. //시설물 위치이동
  507. if (!ACellViewInfo) return;
  508. try {
  509. TcxDataController *pGDC = FRAMEFacilityStatusList1->TvList->DataController;
  510. int nRow = pGDC->FocusedRecordIndex;
  511. if (nRow < 0) return;
  512. String sType = VarToStr(pGDC->Values[nRow][FRAMEFacilityStatusList1->Column01->Index]);
  513. FSelId = VarToStr(pGDC->Values[nRow][FRAMEFacilityStatusList1->Column02->Index]);
  514. MoveGisFacility(sType, FSelId);
  515. } catch(...) {}
  516. }
  517. //---------------------------------------------------------------------------
  518. void __fastcall TITS0000M::MoveGisFacility(String AType, String AId)
  519. {
  520. if (AType == FAC_CCTV)
  521. {
  522. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(AId);
  523. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  524. }
  525. else
  526. if (AType == FAC_VMS)
  527. {
  528. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(AId);
  529. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  530. }
  531. else
  532. if (AType == FAC_RSE)
  533. {
  534. TItsRse *pObj = ItsFacilityManager->FRseLists.Find(AId);
  535. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->COORDX, 0), StrToFloatDef(pObj->COORDY, 0), true);
  536. }
  537. else
  538. if (AType == FAC_WCAM)
  539. {
  540. TItsWebCam *pObj = ItsFacilityManager->FWebCamLists.Find(AId);
  541. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  542. }
  543. else
  544. if (AType == FAC_VDS)
  545. {
  546. TItsVds *pObj = ItsFacilityManager->FVdsLists.Find(AId);
  547. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  548. }
  549. else
  550. if (AType == FAC_AVI)
  551. {
  552. TItsAvi *pObj = ItsFacilityManager->FAviLists.Find(AId);
  553. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  554. }
  555. else
  556. if (AType == FAC_DSRC)
  557. {
  558. TItsDsrc *pObj = ItsFacilityManager->FDsrcLists.Find(AId);
  559. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->LCTN_X, 0), StrToFloatDef(pObj->LCTN_Y, 0), true);
  560. }
  561. else
  562. if (AType == FAC_BIT)
  563. {
  564. TItsBit *pObj = ItsFacilityManager->FBitLists.Find(AId);
  565. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  566. }
  567. else
  568. if (AType == FAC_SIG)
  569. {
  570. TItsSig *pObj = ItsFacilityManager->FSigLists.Find(AId);
  571. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  572. }
  573. else
  574. if (AType == FAC_SIGDET)
  575. {
  576. TItsSigDet *pObj = ItsFacilityManager->FSigDetLists.Find(AId);
  577. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  578. }
  579. else
  580. if (AType == FAC_PVMS)
  581. {
  582. TItsPis *pObj = ItsFacilityManager->FPisLists.Find(AId);
  583. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  584. }
  585. else
  586. if (AType == FAC_PVDS)
  587. {
  588. TItsPcs *pObj = ItsFacilityManager->FPcsLists.Find(AId);
  589. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  590. }
  591. else
  592. if (AType == FAC_PARK)
  593. {
  594. TItsParking *pObj = ItsFacilityManager->FParkLists.Find(AId);
  595. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  596. }
  597. else
  598. if (AType == FAC_EVENT)
  599. {
  600. TItsEvent *pObj = ItsEventManager->FLists.Find(AId);
  601. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  602. }
  603. else
  604. if (AType == FAC_WTHR)
  605. {
  606. TItsVilgFrcs *pObj = ItsVilgFrcsManager->FLists.Find(AId);
  607. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  608. }
  609. else
  610. if (AType == FAC_ATMP)
  611. {
  612. TItsAtmpPltn *pObj = ItsVilgFrcsManager->FAtmpLists.Find(AId);
  613. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  614. }
  615. }
  616. //---------------------------------------------------------------------------
  617. void __fastcall TITS0000M::FRAMEFacilityStatusList1TvListCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  618. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  619. {
  620. if (AButton != mbRight) return;
  621. if (!ACellViewInfo) return;
  622. try {
  623. TcxDataController *pGDC = FRAMEFacilityStatusList1->TvList->DataController;
  624. int nRow = pGDC->FocusedRecordIndex;
  625. if (nRow < 0) return;
  626. String sType = VarToStr(pGDC->Values[nRow][FRAMEFacilityStatusList1->Column01->Index]);
  627. FSelId = VarToStr(pGDC->Values[nRow][FRAMEFacilityStatusList1->Column02->Index]);
  628. POINT p;
  629. GetCursorPos(&p);
  630. if (sType == FAC_CCTV) pmuCctv->Popup(p.x, p.y);
  631. else if (sType == FAC_VMS) pmuVms->Popup(p.x, p.y);
  632. else if (sType == FAC_RSE) pmuRse->Popup(p.x, p.y);
  633. else if (sType == FAC_WCAM) pmuWebCam->Popup(p.x, p.y);
  634. else if (sType == FAC_VDS) pmuVds->Popup(p.x, p.y);
  635. else if (sType == FAC_AVI) pmuAvi->Popup(p.x, p.y);
  636. else if (sType == FAC_DSRC) pmuDsrc->Popup(p.x, p.y);
  637. else if (sType == FAC_BIT) pmuBit->Popup(p.x, p.y);
  638. else if (sType == FAC_SIG) pmuSig->Popup(p.x, p.y);
  639. else if (sType == FAC_SIGDET) pmuSigDet->Popup(p.x, p.y);
  640. else if (sType == FAC_PARK) pmuPark->Popup(p.x, p.y);
  641. else if (sType == FAC_PVMS) pmuPis->Popup(p.x, p.y);
  642. else if (sType == FAC_PVDS) pmuPis->Popup(p.x, p.y);
  643. } catch(...) {}
  644. }
  645. //---------------------------------------------------------------------------
  646. void __fastcall TITS0000M::pmuFacilityPopup(TObject *Sender)
  647. {
  648. String sLoc = " ";
  649. TPopupMenu *pMenu = (TPopupMenu*)Sender;
  650. if (pMenu->Tag == 0)
  651. {
  652. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(FSelId);
  653. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->ISTL_LCTN_NM);
  654. //MnuCctvId->Caption = "[CCTV] " + FSelId + " " + sLoc;
  655. MnuCctvId->Caption = "[CCTV] " + sLoc;
  656. mnuCctvCam->Enabled = false;
  657. if (pObj)
  658. {
  659. if (pObj->STRM_SESN_NM.Trim() != "")
  660. {
  661. mnuCctvCam->Enabled = true;
  662. }
  663. }
  664. }
  665. else
  666. if (pMenu->Tag == 1)
  667. {
  668. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(FSelId);
  669. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->VMS_NM);
  670. //MnuVmsId->Caption = "[VMS] " + FSelId + " " + sLoc;
  671. MnuVmsId->Caption = "[VMS] " + sLoc;
  672. mnuVmsCam->Enabled = false;
  673. if (pObj)
  674. {
  675. if (pObj->STRM_SESN_NM.Trim() != "")
  676. {
  677. mnuVmsCam->Enabled = true;
  678. }
  679. }
  680. }
  681. else
  682. if (pMenu->Tag == 2)
  683. {
  684. TItsRse *pObj = ItsFacilityManager->FRseLists.Find(FSelId);
  685. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->LOCATION);
  686. //MnuRseId->Caption = "[RSE] " + FSelId + " " + sLoc;
  687. MnuRseId->Caption = "[RSE] " + sLoc;
  688. }
  689. else
  690. if (pMenu->Tag == 3)
  691. {
  692. TItsWebCam *pObj = ItsFacilityManager->FWebCamLists.Find(FSelId);
  693. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->ISTL_LCTN_NM);
  694. //MnuWebCamId->Caption = "[웹카메라] " + FSelId + " " + sLoc;
  695. MnuWebCamId->Caption = "[웹카메라] " + sLoc;
  696. }
  697. else
  698. if (pMenu->Tag == 4)
  699. {
  700. TItsVds *pObj = ItsFacilityManager->FVdsLists.Find(FSelId);
  701. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->LCTN);
  702. //MnuVdsId->Caption = "[VDS] " + FSelId + " " + sLoc;
  703. MnuVdsId->Caption = "[VDS] " + sLoc;
  704. }
  705. else
  706. if (pMenu->Tag == 5)
  707. {
  708. TItsAvi *pObj = ItsFacilityManager->FAviLists.Find(FSelId);
  709. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->AVI_LCTN_NM);
  710. //MnuAviId->Caption = "[AVI] " + FSelId + " " + sLoc;
  711. MnuAviId->Caption = "[AVI] " + sLoc;
  712. }
  713. else
  714. if (pMenu->Tag == 6)
  715. {
  716. TItsDsrc *pObj = ItsFacilityManager->FDsrcLists.Find(FSelId);
  717. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->ISTL_LCTN_NM);
  718. //MnuDsrcId->Caption = "[DSRC] " + FSelId + " " + sLoc;
  719. MnuDsrcId->Caption = "[DSRC] " + sLoc;
  720. }
  721. else
  722. if (pMenu->Tag == 7)
  723. {
  724. TItsBit *pObj = ItsFacilityManager->FBitLists.Find(FSelId);
  725. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->FCLT_LCTN);
  726. MnuBitId->Caption = "[BIT] " + sLoc;
  727. }
  728. else
  729. if (pMenu->Tag == 8)
  730. {
  731. TItsSig *pObj = ItsFacilityManager->FSigLists.Find(FSelId);
  732. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->FCLT_LCTN);
  733. MnuSigId->Caption = "[SIG] " + sLoc;
  734. }
  735. else
  736. if (pMenu->Tag == 9)
  737. {
  738. TItsSigDet *pObj = ItsFacilityManager->FSigDetLists.Find(FSelId);
  739. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->FCLT_LCTN);
  740. MnuSigDetId->Caption = "[LVD] " + sLoc;
  741. }
  742. else
  743. if (pMenu->Tag == 10)
  744. {
  745. TItsPis *pObj = ItsFacilityManager->FPisLists.Find(FSelId);
  746. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->FCLT_LCTN);
  747. MnuPisId->Caption = "[PIS] " + sLoc;
  748. }
  749. else
  750. if (pMenu->Tag == 11)
  751. {
  752. TItsPcs *pObj = ItsFacilityManager->FPcsLists.Find(FSelId);
  753. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->FCLT_LCTN);
  754. MnuPcsId->Caption = "[PCS] " + sLoc;
  755. }
  756. else
  757. if (pMenu->Tag == 12)
  758. {
  759. TItsParking *pObj = ItsFacilityManager->FParkLists.Find(FSelId);
  760. if (pObj) sLoc = TCommFlash::ReplaceName(pObj->CTLR_MNGM_NM);
  761. //MnuParkId->Caption = "[PARK] " + FSelId + " " + sLoc;
  762. MnuParkId->Caption = "[PARK] " + sLoc;
  763. }
  764. else
  765. if (pMenu->Tag == 13)
  766. {
  767. TItsEvent *pObj = ItsEventManager->FLists.Find(FSelId);
  768. if (pObj)
  769. {
  770. sLoc = TCommFlash::ReplaceName(pObj->TRMN_ID);
  771. if (sLoc.Trim() == "")
  772. {
  773. sLoc = pObj->OPNC_NMBR;
  774. }
  775. }
  776. MenuEventId->Caption = " " + sLoc;
  777. }
  778. }
  779. //---------------------------------------------------------------------------
  780. void __fastcall TITS0000M::mnuFacilityMoveClick(TObject *Sender)
  781. {
  782. TMenuItem *pMenu = (TMenuItem*)Sender;
  783. Application->ProcessMessages();
  784. switch(pMenu->Tag)
  785. {
  786. case 0: MoveGisFacility(FAC_CCTV, FSelId); break;
  787. case 1: MoveGisFacility(FAC_VMS, FSelId); break;
  788. case 2: MoveGisFacility(FAC_RSE, FSelId); break;
  789. case 3: MoveGisFacility(FAC_WCAM, FSelId); break;
  790. case 4: MoveGisFacility(FAC_VDS, FSelId); break;
  791. case 5: MoveGisFacility(FAC_AVI, FSelId); break;
  792. case 6: MoveGisFacility(FAC_DSRC, FSelId); break;
  793. case 7: MoveGisFacility(FAC_BIT, FSelId); break;
  794. case 8: MoveGisFacility(FAC_SIG, FSelId); break;
  795. case 9: MoveGisFacility(FAC_SIGDET, FSelId); break;
  796. case 10: MoveGisFacility(FAC_PVMS, FSelId); break;
  797. case 11: MoveGisFacility(FAC_PVDS, FSelId); break;
  798. case 12: MoveGisFacility(FAC_PARK, FSelId); break;
  799. case 13: MoveGisFacility(FAC_EVENT, FSelId); break;
  800. case 14: MoveGisFacility(FAC_WTHR, FSelId); break;
  801. case 15: MoveGisFacility(FAC_ATMP, FSelId); break;
  802. }
  803. }
  804. //---------------------------------------------------------------------------
  805. void __fastcall TITS0000M::mnuFacilityPingClick(TObject *Sender)
  806. {
  807. if (ITS00MAP)
  808. {
  809. ITS00MAP->FSelId = FSelId;
  810. ITS00MAP->mnuFacilityPingClick(Sender);
  811. }
  812. }
  813. //---------------------------------------------------------------------------
  814. void __fastcall TITS0000M::mnuStopImageClick(TObject *Sender)
  815. {
  816. if (ITS00MAP)
  817. {
  818. ITS00MAP->FSelId = FSelId;
  819. ITS00MAP->mnuStopImageClick(Sender);
  820. }
  821. }
  822. //---------------------------------------------------------------------------
  823. void __fastcall TITS0000M::mnuCctvCamClick(TObject *Sender)
  824. {
  825. if (ITS00MAP)
  826. {
  827. ITS00MAP->FSelId = FSelId;
  828. ITS00MAP->mnuCctvCamClick(Sender);
  829. }
  830. }
  831. //---------------------------------------------------------------------------
  832. void __fastcall TITS0000M::mnuVmsMsgClick(TObject *Sender)
  833. {
  834. if (ITS00MAP)
  835. {
  836. ITS00MAP->FSelId = FSelId;
  837. ITS00MAP->mnuVmsMsgClick(Sender);
  838. }
  839. }
  840. //---------------------------------------------------------------------------
  841. void __fastcall TITS0000M::mnuVmsCamClick(TObject *Sender)
  842. {
  843. if (ITS00MAP)
  844. {
  845. ITS00MAP->FSelId = FSelId;
  846. ITS00MAP->mnuVmsCamClick(Sender);
  847. }
  848. }
  849. //---------------------------------------------------------------------------
  850. void __fastcall TITS0000M::MnuWebCamClick(TObject *Sender)
  851. {
  852. if (ITS00MAP)
  853. {
  854. ITS00MAP->FSelId = FSelId;
  855. ITS00MAP->MnuWebCamClick(Sender);
  856. }
  857. }
  858. //---------------------------------------------------------------------------
  859. void __fastcall TITS0000M::FRAMEIncidentAutoList1TvList2CellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  860. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  861. {
  862. //소통정보 결측구간 클릭
  863. if (!ACellViewInfo) return;
  864. try {
  865. TcxDataController *pGDC = FRAMEIncidentAutoList1->TvList2->DataController;
  866. int nRow = pGDC->FocusedRecordIndex;
  867. if (nRow < 0) return;
  868. String sLinkId = VarToStr(pGDC->Values[nRow][FRAMEIncidentAutoList1->ColumnA01->Index]);
  869. if (ITS00MAP) ITS00MAP->SelectLinkById(1, sLinkId, true);
  870. } catch(...) {}
  871. }
  872. //---------------------------------------------------------------------------
  873. void __fastcall TITS0000M::UpdateFacilityStatusTotal()
  874. {
  875. int nRow = 0;
  876. try
  877. {
  878. CMM_ClearGridTableView(TvStatus);
  879. TcxDataController *pGDC = TvStatus->DataController;
  880. TvStatus->BeginUpdate();
  881. ItsFacilityManager->FListStatus.Lock();
  882. try
  883. {
  884. FOR_STL(TFacilityStatus*, pStatus, ItsFacilityManager->FListStatus)
  885. {
  886. nRow = pGDC->AppendRecord();
  887. pGDC->Values[nRow][ColName->Index] = pStatus->Type;
  888. pGDC->Values[nRow][ColTotal->Index] = pStatus->Total;
  889. pGDC->Values[nRow][ColNormal->Index] = pStatus->Total - pStatus->Error;
  890. pGDC->Values[nRow][ColFail->Index] = pStatus->Error;
  891. if (pStatus->Type == "VDS" || pStatus->Type == "AVI" || pStatus->Type == "DSRC")
  892. pGDC->Values[nRow][ColModule->Index] = pStatus->Collect;//Module;
  893. else
  894. pGDC->Values[nRow][ColModule->Index] = "-";
  895. }
  896. }
  897. catch(Exception &exception)
  898. {
  899. }
  900. }
  901. __finally
  902. {
  903. ItsFacilityManager->FListStatus.UnLock();
  904. TvStatus->EndUpdate();
  905. }
  906. }
  907. //---------------------------------------------------------------------------
  908. void __fastcall TITS0000M::ColNameCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
  909. TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone)
  910. {
  911. // 장비명
  912. if (AViewInfo->GridRecord->RecordIndex < 0) return;
  913. ACanvas->Font->Style = TFontStyles() << fsBold;
  914. }
  915. //---------------------------------------------------------------------------
  916. void __fastcall TITS0000M::ColTotalCustomDrawCell(TcxCustomGridTableView *Sender,
  917. TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  918. bool &ADone)
  919. {
  920. // 전체
  921. if (AViewInfo->GridRecord->RecordIndex < 0) return;
  922. ACanvas->Font->Style = TFontStyles() << fsBold;
  923. }
  924. //---------------------------------------------------------------------------
  925. void __fastcall TITS0000M::ColNormalCustomDrawCell(TcxCustomGridTableView *Sender,
  926. TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  927. bool &ADone)
  928. {
  929. // 정상
  930. if (AViewInfo->GridRecord->RecordIndex < 0) return;
  931. ACanvas->Font->Style = TFontStyles() << fsBold;
  932. }
  933. //---------------------------------------------------------------------------
  934. void __fastcall TITS0000M::ColFailCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
  935. TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone)
  936. {
  937. // 이상
  938. if (AViewInfo->GridRecord->RecordIndex < 0) return;
  939. ACanvas->Font->Style = TFontStyles() << fsBold;
  940. if (!VarIsNull(AViewInfo->GridRecord->DisplayTexts[ColFail->Index]))
  941. {
  942. String sErr = AViewInfo->GridRecord->DisplayTexts[ColFail->Index];
  943. if (sErr != "0")
  944. {
  945. ACanvas->Font->Color = clRed;
  946. }
  947. }
  948. }
  949. //---------------------------------------------------------------------------
  950. void __fastcall TITS0000M::ColModuleCustomDrawCell(TcxCustomGridTableView *Sender,
  951. TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  952. bool &ADone)
  953. {
  954. // 이상
  955. if (AViewInfo->GridRecord->RecordIndex < 0) return;
  956. ACanvas->Font->Style = TFontStyles() << fsBold;
  957. if (!VarIsNull(AViewInfo->GridRecord->DisplayTexts[ColModule->Index]))
  958. {
  959. String sErr = AViewInfo->GridRecord->DisplayTexts[ColModule->Index];
  960. if (sErr.Trim() == "-")
  961. return;
  962. if (sErr != "0")
  963. {
  964. ACanvas->Font->Color = clRed;
  965. }
  966. }
  967. }
  968. //---------------------------------------------------------------------------
  969. void __fastcall TITS0000M::mnuParkMsgClick(TObject *Sender)
  970. {
  971. if (ITS00MAP)
  972. {
  973. ITS00MAP->FSelId = FSelId;
  974. ITS00MAP->mnuParkMsgClick(Sender);
  975. }
  976. }
  977. //---------------------------------------------------------------------------
  978. void __fastcall TITS0000M::FRAMEBlackBoxEventListF1TvListCellDblClick(TcxCustomGridTableView *Sender,
  979. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  980. TShiftState AShift, bool &AHandled)
  981. {
  982. //블랙박스이벤트 클릭
  983. if (!ACellViewInfo) return;
  984. try {
  985. TcxDataController *pGDC = FRAMEBlackBoxEventList1->TvList->DataController;
  986. int nRow = pGDC->FocusedRecordIndex;
  987. if (nRow < 0) return;
  988. String sId = VarToStr(pGDC->Values[nRow][FRAMEBlackBoxEventList1->Col88->Index]);
  989. String sDx = VarToStr(pGDC->Values[nRow][FRAMEBlackBoxEventList1->Col09->Index]);
  990. String sDy = VarToStr(pGDC->Values[nRow][FRAMEBlackBoxEventList1->Col10->Index]);
  991. if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloat(sDx), StrToFloat(sDy), true);
  992. } catch(...) {}
  993. }
  994. //---------------------------------------------------------------------------
  995. void __fastcall TITS0000M::FRAMEBlackBoxEventList1TvListCellClick(TcxCustomGridTableView *Sender,
  996. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  997. TShiftState AShift, bool &AHandled)
  998. {
  999. if (AButton != mbRight) return;
  1000. if (!ACellViewInfo) return;
  1001. try {
  1002. TcxDataController *pGDC = FRAMEBlackBoxEventList1->TvList->DataController;
  1003. int nRow = pGDC->FocusedRecordIndex;
  1004. if (nRow < 0) return;
  1005. FSelId = VarToStr(pGDC->Values[nRow][FRAMEBlackBoxEventList1->Col88->Index]);
  1006. POINT p;
  1007. GetCursorPos(&p);
  1008. pmuEvent->Popup(p.x, p.y);
  1009. } catch(...) {}
  1010. }
  1011. //---------------------------------------------------------------------------
  1012. void __fastcall TITS0000M::mnuViewEventCamClick(TObject *Sender)
  1013. {
  1014. if (ITS00MAP)
  1015. {
  1016. ITS00MAP->FSelId = FSelId;
  1017. ITS00MAP->mnuViewEventCamClick(Sender);
  1018. }
  1019. }
  1020. //---------------------------------------------------------------------------
  1021. void __fastcall TITS0000M::FRAMEVilgFrcsList1TvListCellClick(TcxCustomGridTableView *Sender,
  1022. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  1023. TShiftState AShift, bool &AHandled)
  1024. {
  1025. if (AButton != mbRight) return;
  1026. if (!ACellViewInfo) return;
  1027. try {
  1028. TcxDataController *pGDC = FRAMEVilgFrcsList1->TvList->DataController;
  1029. int nRow = pGDC->FocusedRecordIndex;
  1030. if (nRow < 0) return;
  1031. FSelId = VarToStr(pGDC->Values[nRow][FRAMEVilgFrcsList1->Col00->Index]);
  1032. POINT p;
  1033. GetCursorPos(&p);
  1034. //pmuEvent->Popup(p.x, p.y);
  1035. } catch(...) {}
  1036. }
  1037. //---------------------------------------------------------------------------
  1038. void __fastcall TITS0000M::FRAMEVilgFrcsList1TvListCellDblClick(TcxCustomGridTableView *Sender,
  1039. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  1040. TShiftState AShift, bool &AHandled)
  1041. {
  1042. if (!ACellViewInfo) return;
  1043. try {
  1044. TcxDataController *pGDC = FRAMEVilgFrcsList1->TvList->DataController;
  1045. int nRow = pGDC->FocusedRecordIndex;
  1046. if (nRow < 0) return;
  1047. String sId = VarToStr(pGDC->Values[nRow][FRAMEVilgFrcsList1->Col00->Index]);
  1048. String sDx = VarToStr(pGDC->Values[nRow][FRAMEVilgFrcsList1->Col20->Index]);
  1049. String sDy = VarToStr(pGDC->Values[nRow][FRAMEVilgFrcsList1->Col21->Index]);
  1050. if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloat(sDx), StrToFloat(sDy), true);
  1051. } catch(...) {}
  1052. }
  1053. //---------------------------------------------------------------------------
  1054. void __fastcall TITS0000M::FRAMEVilgShprList1TvListCellClick(TcxCustomGridTableView *Sender,
  1055. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  1056. TShiftState AShift, bool &AHandled)
  1057. {
  1058. if (AButton != mbRight) return;
  1059. if (!ACellViewInfo) return;
  1060. try {
  1061. TcxDataController *pGDC = FRAMEVilgShprList1->TvList->DataController;
  1062. int nRow = pGDC->FocusedRecordIndex;
  1063. if (nRow < 0) return;
  1064. FSelId = VarToStr(pGDC->Values[nRow][FRAMEVilgShprList1->Col00->Index]);
  1065. POINT p;
  1066. GetCursorPos(&p);
  1067. //pmuEvent->Popup(p.x, p.y);
  1068. } catch(...) {}
  1069. }
  1070. //---------------------------------------------------------------------------
  1071. void __fastcall TITS0000M::FRAMEVilgShprList1TvListCellDblClick(TcxCustomGridTableView *Sender,
  1072. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  1073. TShiftState AShift, bool &AHandled)
  1074. {
  1075. if (!ACellViewInfo) return;
  1076. try {
  1077. TcxDataController *pGDC = FRAMEVilgShprList1->TvList->DataController;
  1078. int nRow = pGDC->FocusedRecordIndex;
  1079. if (nRow < 0) return;
  1080. String sId = VarToStr(pGDC->Values[nRow][FRAMEVilgShprList1->Col00->Index]);
  1081. String sDx = VarToStr(pGDC->Values[nRow][FRAMEVilgShprList1->Col20->Index]);
  1082. String sDy = VarToStr(pGDC->Values[nRow][FRAMEVilgShprList1->Col21->Index]);
  1083. if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloat(sDx), StrToFloat(sDy), true);
  1084. } catch(...) {}
  1085. }
  1086. //---------------------------------------------------------------------------
  1087. void __fastcall TITS0000M::FRAMEAtmpPltnList1TvListCellDblClick(TcxCustomGridTableView *Sender,
  1088. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  1089. TShiftState AShift, bool &AHandled)
  1090. {
  1091. if (!ACellViewInfo) return;
  1092. try {
  1093. TcxDataController *pGDC = FRAMEAtmpPltnList1->TvList->DataController;
  1094. int nRow = pGDC->FocusedRecordIndex;
  1095. if (nRow < 0) return;
  1096. String sId = VarToStr(pGDC->Values[nRow][FRAMEAtmpPltnList1->Col00->Index]);
  1097. String sDx = VarToStr(pGDC->Values[nRow][FRAMEAtmpPltnList1->Col30->Index]);
  1098. String sDy = VarToStr(pGDC->Values[nRow][FRAMEAtmpPltnList1->Col31->Index]);
  1099. if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloat(sDx), StrToFloat(sDy), true);
  1100. } catch(...) {}
  1101. }
  1102. //---------------------------------------------------------------------------