ITS0000MF.cpp 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749
  1. /****************************************************************************
  2. * @source :
  3. * @description :
  4. ****************************************************************************
  5. * DATE AUTHOR DESCRIPTION
  6. * --------------------------------------------------------------------------
  7. * 2011/12/24 정승호 최초작성
  8. *
  9. ****************************************************************************/
  10. //---------------------------------------------------------------------------
  11. #include <vcl.h>
  12. #include "ITSSkinF.h"
  13. #include "ITSUtilF.h"
  14. #include "WindowMsgF.h"
  15. #include "CDSFacilityF.h"
  16. #include "CDSIncidentF.h"
  17. #include "FrmMainF.h"
  18. #pragma hdrstop
  19. #include "ITS0000MF.h"
  20. //---------------------------------------------------------------------------
  21. #pragma package(smart_init)
  22. #pragma link "FRAME_FacilityStatusListF"
  23. #pragma link "FRAME_ProcessStatusListF"
  24. #pragma link "FRAME_UtisStatusListF"
  25. #pragma link "FRAME_IncidentListF"
  26. #pragma link "FRAME_RepeatCongestListF"
  27. #pragma link "FRAME_TrafficMissLinkListF"
  28. #pragma link "cxContainer"
  29. #pragma link "cxControls"
  30. #pragma link "cxEdit"
  31. #pragma link "cxGraphics"
  32. #pragma link "cxGroupBox"
  33. #pragma link "cxLabel"
  34. #pragma link "cxLookAndFeelPainters"
  35. #pragma link "cxLookAndFeels"
  36. #pragma link "cxPC"
  37. #pragma link "cxPCdxBarPopupMenu"
  38. #pragma link "cxSplitter"
  39. #pragma link "dxSkinBlack"
  40. #pragma link "dxSkinBlue"
  41. #pragma link "dxSkinCaramel"
  42. #pragma link "dxSkinCoffee"
  43. #pragma link "dxSkinDarkRoom"
  44. #pragma link "dxSkinDarkSide"
  45. #pragma link "dxSkinFoggy"
  46. #pragma link "dxSkinGlassOceans"
  47. #pragma link "dxSkiniMaginary"
  48. #pragma link "dxSkinLilian"
  49. #pragma link "dxSkinLiquidSky"
  50. #pragma link "dxSkinLondonLiquidSky"
  51. #pragma link "dxSkinMcSkin"
  52. #pragma link "dxSkinMoneyTwins"
  53. #pragma link "dxSkinOffice2007Black"
  54. #pragma link "dxSkinOffice2007Blue"
  55. #pragma link "dxSkinOffice2007Green"
  56. #pragma link "dxSkinOffice2007Pink"
  57. #pragma link "dxSkinOffice2007Silver"
  58. #pragma link "dxSkinOffice2010Black"
  59. #pragma link "dxSkinOffice2010Blue"
  60. #pragma link "dxSkinOffice2010Silver"
  61. #pragma link "dxSkinsCore"
  62. #pragma link "dxSkinscxPCPainter"
  63. #pragma link "dxSkinSeven"
  64. #pragma link "dxSkinSharp"
  65. #pragma link "dxSkinSilver"
  66. #pragma link "dxSkinStardust"
  67. #pragma link "FRAME_IncidentAutoListF"
  68. #pragma resource "*.dfm"
  69. TITS0000M *ITS0000M = NULL;
  70. //---------------------------------------------------------------------------
  71. __fastcall TITS0000M::TITS0000M(TComponent* Owner)
  72. : TForm(Owner)
  73. {
  74. ITSSkin_Load(this);
  75. LoadLocalSkin();
  76. CMM_LoadForm(g_sFormsDir, this);
  77. TsIncidentAuto->Visible = false;
  78. TsIncidentAuto->TabVisible = false;
  79. GrpUtis->Visible = false;
  80. splUtis->Visible = false;
  81. PgSystem->Properties->ActivePage = TsIncident;
  82. GrpSystem->Caption = "▶ 시스템 운영 정보 - " + TsIncident->Caption;
  83. FRAMEFacilityStatusList1->PnlBottom->Visible = false;
  84. FrmMain->dxStatusBar->Panels->Items[isbGisPos]->Visible = true;
  85. ITS00MAP = new TITS00MAP(PnlMapBack, (TForm*)this);
  86. }
  87. //---------------------------------------------------------------------------
  88. /*
  89. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  90. * Form과 DataModule class를 delete시킨다.
  91. * arguments
  92. *
  93. * return
  94. * void
  95. */
  96. void __fastcall TITS0000M::CommClose()
  97. {
  98. try
  99. {
  100. FrmMain->dxStatusBar->Panels->Items[isbGisPos]->Visible = false;
  101. if (ITS00MAP)
  102. {
  103. delete ITS00MAP;
  104. ITS00MAP = NULL;
  105. }
  106. CMM_SaveForm(g_sFormsDir, this);
  107. }
  108. catch(...)
  109. {
  110. }
  111. }
  112. //---------------------------------------------------------------------------
  113. /*
  114. * Form이 메모리에서 생성될때 호출되는 생성자 이벤트 핸들러
  115. * arguments
  116. * Sender : event handler 객체
  117. * return
  118. * void
  119. */
  120. void __fastcall TITS0000M::FormCreate(TObject *Sender)
  121. {
  122. if (ITS00MAP)
  123. {
  124. ITS00MAP->Parent = PnlMapBack;
  125. ITS00MAP->Show();
  126. }
  127. }
  128. //---------------------------------------------------------------------------
  129. /*
  130. * Form을 보여줄때 호출되는 event 메서드이다.
  131. * arguments
  132. * Sender : event handler 객체
  133. * return
  134. * void
  135. */
  136. void __fastcall TITS0000M::FormShow(TObject *Sender)
  137. {
  138. Refresh();
  139. Application->ProcessMessages();
  140. TmrShow->Enabled = true;
  141. }
  142. //---------------------------------------------------------------------------
  143. /*
  144. * Form의 Skin 초기화 작업을 수행한다.
  145. * arguments
  146. * void
  147. * return
  148. * void
  149. */
  150. void __fastcall TITS0000M::LoadLocalSkin()
  151. {
  152. #define MAX_VIEW 8
  153. TcxGridTableView *pView[MAX_VIEW];
  154. TcxGrid *pGrid[MAX_VIEW];
  155. pGrid[ 0] = FRAMEProcessStatusList1->CxList; //프로세스상태
  156. pGrid[ 1] = FRAMEFacilityStatusList1->CxList; //시설물상태
  157. pGrid[ 2] = FRAMEUtisStatusList1->CxUtisRun; //UTIS현황-운영현황
  158. pGrid[ 3] = FRAMEUtisStatusList1->CxUtisRse; //UTIS현황-RSE상태현황
  159. pGrid[ 4] = FRAMEIncidentList1->CxList; //돌발
  160. pGrid[ 5] = FRAMERepeatCongestList1->CxList; //반복정체구간
  161. pGrid[ 6] = FRAMETrafficMissLinkList1->CxList; //소통정보결측구간
  162. pGrid[ 7] = FRAMEIncidentAutoList1->CxList2; //소통정보결측구간
  163. pView[ 0] = FRAMEProcessStatusList1->TvList;
  164. pView[ 1] = FRAMEFacilityStatusList1->TvList;
  165. pView[ 2] = FRAMEUtisStatusList1->TvUtisRun;
  166. pView[ 3] = FRAMEUtisStatusList1->TvUtisRse;
  167. pView[ 4] = FRAMEIncidentList1->TvList;
  168. pView[ 5] = FRAMERepeatCongestList1->TvList;
  169. pView[ 6] = FRAMETrafficMissLinkList1->TvList;
  170. pView[ 7] = FRAMEIncidentAutoList1->TvList2;
  171. for (int ii = 0; ii < MAX_VIEW; ii++)
  172. {
  173. //pGrid[ii]->LookAndFeel->SkinName = "McSkin";
  174. pView[ii]->Styles->Inactive = NULL;
  175. pView[ii]->Styles->ContentOdd = NULL;
  176. pView[ii]->Styles->ContentEven= NULL;
  177. pView[ii]->Styles->Selection = NULL;
  178. pView[ii]->OptionsSelection->CellSelect = false;
  179. }
  180. }
  181. //---------------------------------------------------------------------------
  182. /*
  183. * Form이 Show되고 난 후 최초 1회 수행되는 타이머 이벤트
  184. * arguments
  185. * Sender : event handler 객체
  186. * return
  187. * void
  188. */
  189. void __fastcall TITS0000M::TmrShowTimer(TObject *Sender)
  190. {
  191. TmrShow->Enabled = false;
  192. // 리스트 항목을 초기화한다.
  193. InitListData();
  194. }
  195. //---------------------------------------------------------------------------
  196. void __fastcall TITS0000M::InitListData()
  197. {
  198. FIncidentCnt = 0;
  199. FRrCongestCnt = 0;
  200. FMissLinkCnt = 0;
  201. FRAMEFacilityStatusList1->UpdateList();
  202. FRAMEProcessStatusList1->UpdateList();
  203. if (splUtis->Visible) FRAMEUtisStatusList1->UpdateList();
  204. FRAMEIncidentList1->UpdateList();
  205. FRAMERepeatCongestList1->UpdateList();
  206. FRAMETrafficMissLinkList1->UpdateList();
  207. FRAMEIncidentAutoList1->UpdateList();
  208. UpdateAlarmStatus();
  209. }
  210. //---------------------------------------------------------------------------
  211. void __fastcall TITS0000M::UpdateAlarmStatus()
  212. {
  213. String sAlarmMsg = "";
  214. FIncidentCnt = FRAMEIncidentList1->TvList->DataController->RecordCount;
  215. FRrCongestCnt = FRAMERepeatCongestList1->TvList->DataController->RecordCount;
  216. FMissLinkCnt = FRAMETrafficMissLinkList1->TvList->DataController->RecordCount;
  217. FIncidentAutoCnt = FRAMEIncidentAutoList1->TvList2->DataController->RecordCount;
  218. if (FIncidentCnt > 0)
  219. {
  220. sAlarmMsg += "돌발상황(" + String(FIncidentCnt) + ") ";
  221. TsIncident->ImageIndex = 1;
  222. }
  223. else
  224. TsIncident->ImageIndex = 2;
  225. if (FRrCongestCnt > 0)
  226. {
  227. sAlarmMsg += "반복정체구간(" + String(FRrCongestCnt) + ") ";
  228. TsRrCongest->ImageIndex = 1;
  229. }
  230. else
  231. TsRrCongest->ImageIndex = 2;
  232. if (FMissLinkCnt > 0)
  233. {
  234. sAlarmMsg += "결측구간(" + String(FMissLinkCnt) + ") ";
  235. TsMissingLink->ImageIndex = 1;
  236. }
  237. else
  238. TsMissingLink->ImageIndex = 2;
  239. if (FIncidentAutoCnt > 0)
  240. {
  241. sAlarmMsg += "자동돌발(" + String(FIncidentAutoCnt) + ") ";
  242. TsIncidentAuto->ImageIndex = 1;
  243. }
  244. else
  245. TsIncidentAuto->ImageIndex = 2;
  246. LblAlarm->Caption = sAlarmMsg;
  247. if ((FIncidentCnt+FRrCongestCnt+FMissLinkCnt+FIncidentAutoCnt) > 0)
  248. {
  249. LblAlarm->Visible = true;
  250. }
  251. else
  252. {
  253. LblAlarm->Visible = false;
  254. }
  255. }
  256. //---------------------------------------------------------------------------
  257. void __fastcall TITS0000M::PgSystemPageChanging(TObject *Sender, TcxTabSheet *NewPage, bool &AllowChange)
  258. {
  259. GrpSystem->Caption = "▶ 시스템 운영 정보 - " + NewPage->Caption;
  260. }
  261. //---------------------------------------------------------------------------
  262. void __fastcall TITS0000M::FormClose(TObject *Sender, TCloseAction &Action)
  263. {
  264. try {
  265. CommClose();
  266. ITS0000M = NULL;
  267. Action = caFree;
  268. } catch(...) {}
  269. }
  270. //---------------------------------------------------------------------------
  271. /*
  272. * 메인폼에서 데이터를 수신시 발생하는 이벤트 핸들러
  273. * arguments
  274. *
  275. * return
  276. * void
  277. */
  278. void __fastcall TITS0000M::OnMainFormMessage(TMessage &Msg)
  279. {
  280. switch(Msg.WParam)
  281. {
  282. case WP_DB_SELECT_OK:
  283. switch(Msg.LParam)
  284. {
  285. case LP_MSG_01: ITSUtil_Trace("LP_MSG_01"); UpdateTrafficMissLinkInfo(); break;
  286. case LP_MSG_02: ITSUtil_Trace("LP_MSG_02"); /*서비스링크소통정보*/ break;
  287. case LP_MSG_03: ITSUtil_Trace("LP_MSG_03"); /*도로소통정보*/ break;
  288. case LP_MSG_04: ITSUtil_Trace("LP_MSG_04"); UpdateTrafficRrCongestInfo(); break;
  289. case LP_MSG_05: ITSUtil_Trace("LP_MSG_05"); UpdateUtisStatusInfo(); break;
  290. case LP_MSG_11: ITSUtil_Trace("LP_MSG_11"); UpdateFacilityStatusInfo(); break;
  291. case LP_MSG_12: ITSUtil_Trace("LP_MSG_12"); UpdateProcessStatusInfo(); break;
  292. case LP_MSG_13: ITSUtil_Trace("LP_MSG_13"); UpdateIncidentInfo(); break;
  293. case LP_MSG_14: ITSUtil_Trace("LP_MSG_14"); UpdateFacilityInfo(); break;
  294. case LP_MSG_09: ITSUtil_Trace("LP_MSG_09");
  295. FRAMEProcessStatusList1->UpdateList();
  296. break;
  297. case LP_MSG_10: //가공서버에서 소통정보 가공완료하였음.
  298. // GIS 소통정보 업데이트
  299. if (ITS00MAP) ITS00MAP->RefreshMapTraffic();
  300. break;
  301. }
  302. break;
  303. case WP_MSG_01: //소통등급이 변경되었다.
  304. if (ITS00MAP) ITS00MAP->SetGisTrafficColor();
  305. break;
  306. case WP_MSG_02: //돌발정보를 현단말에서 취소/등록/해제 하였다.
  307. UpdateIncidentInfo();
  308. break;
  309. case WP_MSG_03: //시설물 기본정보가 변경됨
  310. UpdateFacilityInfo();
  311. //FRAMEFacilityStatusList1->UpdateList();
  312. break;
  313. case WP_DB_SELECT_ERROR:
  314. case WP_DB_SELECT_CANCEL:
  315. break;
  316. case WP_MSG_15:
  317. if (LP_MSG_15 == Msg.LParam)
  318. {
  319. if (ITS00MAP) ITS00MAP->RefreshGisLink();
  320. }
  321. break;
  322. }
  323. }
  324. //---------------------------------------------------------------------------
  325. void __fastcall TITS0000M::UpdateTrafficMissLinkInfo()
  326. {
  327. FMissLinkCnt = 0;
  328. FRAMETrafficMissLinkList1->UpdateList();
  329. FRAMEIncidentAutoList1->UpdateList();
  330. UpdateAlarmStatus();
  331. }
  332. //---------------------------------------------------------------------------
  333. void __fastcall TITS0000M::UpdateTrafficRrCongestInfo()
  334. {
  335. FRrCongestCnt = 0;
  336. FRAMERepeatCongestList1->UpdateList();
  337. UpdateAlarmStatus();
  338. }
  339. //---------------------------------------------------------------------------
  340. void __fastcall TITS0000M::UpdateIncidentInfo()
  341. {
  342. FIncidentCnt = 0;
  343. FRAMEIncidentList1->UpdateList();
  344. FRAMEIncidentAutoList1->UpdateList();
  345. UpdateAlarmStatus();
  346. if (ITS00MAP) ITS00MAP->UpdateIncidentStatus();
  347. }
  348. //---------------------------------------------------------------------------
  349. void __fastcall TITS0000M::UpdateFacilityStatusInfo()
  350. {
  351. FRAMEFacilityStatusList1->UpdateList();
  352. //FRAMEFacilityStatusList1->RefreshList();
  353. if (ITS00MAP) ITS00MAP->UpdateFacilityStatus();
  354. }
  355. //---------------------------------------------------------------------------
  356. void __fastcall TITS0000M::UpdateProcessStatusInfo()
  357. {
  358. FRAMEProcessStatusList1->RefreshList();
  359. }
  360. //---------------------------------------------------------------------------
  361. void __fastcall TITS0000M::UpdateUtisStatusInfo()
  362. {
  363. if (splUtis->Visible) FRAMEUtisStatusList1->RefreshList();
  364. }
  365. //---------------------------------------------------------------------------
  366. void __fastcall TITS0000M::UpdateFacilityInfo()
  367. {
  368. FRAMEFacilityStatusList1->UpdateList();
  369. }
  370. //---------------------------------------------------------------------------
  371. void __fastcall TITS0000M::FRAMEIncidentList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  372. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  373. {
  374. //돌발 클릭
  375. if (!ACellViewInfo) return;
  376. try {
  377. TcxDataController *pGDC = FRAMEIncidentList1->TvList->DataController;
  378. int nRow = pGDC->FocusedRecordIndex;
  379. if (nRow < 0) return;
  380. String sId = VarToStr(pGDC->Values[nRow][FRAMEIncidentList1->Column01->Index]);
  381. String sDx = VarToStr(pGDC->Values[nRow][FRAMEIncidentList1->Column07->Index]);
  382. String sDy = VarToStr(pGDC->Values[nRow][FRAMEIncidentList1->Column08->Index]);
  383. if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloat(sDx), StrToFloat(sDy), true);
  384. } catch(...) {}
  385. }
  386. //---------------------------------------------------------------------------
  387. void __fastcall TITS0000M::FRAMERepeatCongestList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  388. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  389. {
  390. //반복정체구간 클릭
  391. if (!ACellViewInfo) return;
  392. try {
  393. TcxDataController *pGDC = FRAMERepeatCongestList1->TvList->DataController;
  394. int nRow = pGDC->FocusedRecordIndex;
  395. if (nRow < 0) return;
  396. String sSvcLinkId = VarToStr(pGDC->Values[nRow][FRAMERepeatCongestList1->Column01->Index]);
  397. if (ITS00MAP) ITS00MAP->SelectLinkById(2, sSvcLinkId, true);
  398. } catch(...) {}
  399. }
  400. //---------------------------------------------------------------------------
  401. void __fastcall TITS0000M::FRAMETrafficMissLinkList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  402. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  403. {
  404. //소통정보 결측구간 클릭
  405. if (!ACellViewInfo) return;
  406. try {
  407. TcxDataController *pGDC = FRAMETrafficMissLinkList1->TvList->DataController;
  408. int nRow = pGDC->FocusedRecordIndex;
  409. if (nRow < 0) return;
  410. String sLinkId = VarToStr(pGDC->Values[nRow][FRAMETrafficMissLinkList1->Column02->Index]);
  411. if (ITS00MAP) ITS00MAP->SelectLinkById(1, sLinkId, true);
  412. } catch(...) {}
  413. }
  414. //---------------------------------------------------------------------------
  415. void __fastcall TITS0000M::FRAMEFacilityStatusList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  416. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  417. {
  418. //시설물 위치이동
  419. if (!ACellViewInfo) return;
  420. try {
  421. TcxDataController *pGDC = FRAMEFacilityStatusList1->TvList->DataController;
  422. int nRow = pGDC->FocusedRecordIndex;
  423. if (nRow < 0) return;
  424. String sType = VarToStr(pGDC->Values[nRow][FRAMEFacilityStatusList1->Column01->Index]);
  425. FSelId = VarToStr(pGDC->Values[nRow][FRAMEFacilityStatusList1->Column02->Index]);
  426. MoveGisFacility(sType, FSelId);
  427. } catch(...) {}
  428. }
  429. //---------------------------------------------------------------------------
  430. void __fastcall TITS0000M::MoveGisFacility(String AType, String AId)
  431. {
  432. if (AType == "CCTV")
  433. {
  434. TItsCctv *pObj = ItsFacilityManager->FCctvLists.Find(AId);
  435. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  436. }
  437. else
  438. if (AType == "VMS")
  439. {
  440. TItsVms *pObj = ItsFacilityManager->FVmsLists.Find(AId);
  441. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  442. }
  443. else
  444. if (AType == "RSE")
  445. {
  446. TItsRse *pObj = ItsFacilityManager->FRseLists.Find(AId);
  447. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->COORDX, 0), StrToFloatDef(pObj->COORDY, 0), true);
  448. }
  449. else
  450. if (AType == "WCAM")
  451. {
  452. TItsWebCam *pObj = ItsFacilityManager->FWebCamLists.Find(AId);
  453. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  454. }
  455. else
  456. if (AType == "VDS")
  457. {
  458. #if 1
  459. TItsVds *pObj = ItsFacilityManager->FVdsLists.Find(AId);
  460. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  461. #else
  462. TItsVds *pObj = NULL;//ItsFacilityManager->FVdsLists.Find(AId);
  463. FOR_STL(TItsVds*, pTmp, ItsFacilityManager->FVdsLists)
  464. {
  465. if (AId == pTmp->VDS_CTLR_ID)
  466. {
  467. pObj = pTmp;
  468. break;
  469. }
  470. }
  471. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  472. #endif
  473. }
  474. else
  475. if (AType == "AVI")
  476. {
  477. #if 1
  478. TItsAvi *pObj = ItsFacilityManager->FAviLists.Find(AId);
  479. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  480. #else
  481. TItsAvi *pObj = NULL;//ItsFacilityManager->FAviLists.Find(AId);
  482. FOR_STL(TItsAvi*, pTmp, ItsFacilityManager->FAviLists)
  483. {
  484. if (AId == pTmp->AVI_ID)
  485. {
  486. pObj = pTmp;
  487. break;
  488. }
  489. }
  490. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true);
  491. #endif
  492. }
  493. else
  494. if (AType == "DSRC")
  495. {
  496. #if 1
  497. TItsDsrc *pObj = ItsFacilityManager->FDsrcLists.Find(AId);
  498. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->LCTN_X, 0), StrToFloatDef(pObj->LCTN_Y, 0), true);
  499. #else
  500. TItsDsrc *pObj = NULL;//ItsFacilityManager->FDsrcLists.Find(AId);
  501. FOR_STL(TItsDsrc*, pTmp, ItsFacilityManager->FDsrcLists)
  502. {
  503. if (AId == pTmp->RSE_ID)
  504. {
  505. pObj = pTmp;
  506. break;
  507. }
  508. }
  509. if (pObj) if (ITS00MAP) ITS00MAP->SelectObjectByPos(StrToFloatDef(pObj->LCTN_X, 0), StrToFloatDef(pObj->LCTN_Y, 0), true);
  510. #endif
  511. }
  512. }
  513. //---------------------------------------------------------------------------
  514. void __fastcall TITS0000M::FRAMEFacilityStatusList1TvListCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  515. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  516. {
  517. if (AButton != mbRight) return;
  518. if (!ACellViewInfo) return;
  519. try {
  520. TcxDataController *pGDC = FRAMEFacilityStatusList1->TvList->DataController;
  521. int nRow = pGDC->FocusedRecordIndex;
  522. if (nRow < 0) return;
  523. String sType = VarToStr(pGDC->Values[nRow][FRAMEFacilityStatusList1->Column01->Index]);
  524. FSelId = VarToStr(pGDC->Values[nRow][FRAMEFacilityStatusList1->Column02->Index]);
  525. POINT p;
  526. GetCursorPos(&p);
  527. if (sType == "CCTV") pmuCctv->Popup(p.x, p.y);
  528. else
  529. if (sType == "VMS") pmuVms->Popup(p.x, p.y);
  530. else
  531. if (sType == "RSE") pmuRse->Popup(p.x, p.y);
  532. else
  533. if (sType == "WCAM") pmuWebCam->Popup(p.x, p.y);
  534. else
  535. if (sType == "VDS") pmuVds->Popup(p.x, p.y);
  536. else
  537. if (sType == "AVI") pmuAvi->Popup(p.x, p.y);
  538. else
  539. if (sType == "DSRC") pmuDsrc->Popup(p.x, p.y);
  540. } catch(...) {}
  541. }
  542. //---------------------------------------------------------------------------
  543. void __fastcall TITS0000M::pmuFacilityPopup(TObject *Sender)
  544. {
  545. TPopupMenu *pMenu = (TPopupMenu*)Sender;
  546. if (pMenu->Tag == 0)
  547. {
  548. MnuCctvId->Caption = "[CCTV] " + FSelId;
  549. }
  550. else
  551. if (pMenu->Tag == 1)
  552. {
  553. MnuVmsId->Caption = "[VMS] " + FSelId;
  554. }
  555. else
  556. if (pMenu->Tag == 2)
  557. {
  558. MnuRseId->Caption = "[RSE] " + FSelId;
  559. }
  560. else
  561. if (pMenu->Tag == 3)
  562. {
  563. MnuWebCamId->Caption = "[웹카메라] " + FSelId;
  564. }
  565. else
  566. if (pMenu->Tag == 4)
  567. {
  568. MnuVdsId->Caption = "[VDS] " + FSelId;
  569. }
  570. else
  571. if (pMenu->Tag == 5)
  572. {
  573. MnuAviId->Caption = "[AVI] " + FSelId;
  574. }
  575. else
  576. if (pMenu->Tag == 6)
  577. {
  578. MnuDsrcId->Caption = "[DSRC] " + FSelId;
  579. }
  580. }
  581. //---------------------------------------------------------------------------
  582. void __fastcall TITS0000M::mnuFacilityMoveClick(TObject *Sender)
  583. {
  584. TMenuItem *pMenu = (TMenuItem*)Sender;
  585. Application->ProcessMessages();
  586. if (pMenu->Tag == 0)
  587. {
  588. MoveGisFacility("CCTV", FSelId);
  589. }
  590. else
  591. if (pMenu->Tag == 1)
  592. {
  593. MoveGisFacility("VMS", FSelId);
  594. }
  595. else
  596. if (pMenu->Tag == 2)
  597. {
  598. MoveGisFacility("RSE", FSelId);
  599. }
  600. else
  601. if (pMenu->Tag == 3)
  602. {
  603. MoveGisFacility("WCAM", FSelId);
  604. }
  605. else
  606. if (pMenu->Tag == 4)
  607. {
  608. MoveGisFacility("VDS", FSelId);
  609. }
  610. else
  611. if (pMenu->Tag == 5)
  612. {
  613. MoveGisFacility("AVI", FSelId);
  614. }
  615. else
  616. if (pMenu->Tag == 6)
  617. {
  618. MoveGisFacility("DSRC", FSelId);
  619. }
  620. }
  621. //---------------------------------------------------------------------------
  622. void __fastcall TITS0000M::mnuFacilityPingClick(TObject *Sender)
  623. {
  624. if (ITS00MAP)
  625. {
  626. ITS00MAP->FSelId = FSelId;
  627. ITS00MAP->mnuFacilityPingClick(Sender);
  628. }
  629. }
  630. //---------------------------------------------------------------------------
  631. void __fastcall TITS0000M::mnuStopImageClick(TObject *Sender)
  632. {
  633. if (ITS00MAP)
  634. {
  635. ITS00MAP->FSelId = FSelId;
  636. ITS00MAP->mnuStopImageClick(Sender);
  637. }
  638. }
  639. //---------------------------------------------------------------------------
  640. void __fastcall TITS0000M::mnuCctvCamClick(TObject *Sender)
  641. {
  642. if (ITS00MAP)
  643. {
  644. ITS00MAP->FSelId = FSelId;
  645. ITS00MAP->mnuCctvCamClick(Sender);
  646. }
  647. }
  648. //---------------------------------------------------------------------------
  649. void __fastcall TITS0000M::mnuVmsMsgClick(TObject *Sender)
  650. {
  651. if (ITS00MAP)
  652. {
  653. ITS00MAP->FSelId = FSelId;
  654. ITS00MAP->mnuVmsMsgClick(Sender);
  655. }
  656. }
  657. //---------------------------------------------------------------------------
  658. void __fastcall TITS0000M::mnuVmsCamClick(TObject *Sender)
  659. {
  660. if (ITS00MAP)
  661. {
  662. ITS00MAP->FSelId = FSelId;
  663. ITS00MAP->mnuVmsCamClick(Sender);
  664. }
  665. }
  666. //---------------------------------------------------------------------------
  667. void __fastcall TITS0000M::MnuWebCamClick(TObject *Sender)
  668. {
  669. if (ITS00MAP)
  670. {
  671. ITS00MAP->FSelId = FSelId;
  672. ITS00MAP->MnuWebCamClick(Sender);
  673. }
  674. }
  675. //---------------------------------------------------------------------------
  676. void __fastcall TITS0000M::FRAMEIncidentAutoList1TvList2CellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  677. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  678. {
  679. //자동돌발 발생구간 클릭
  680. if (!ACellViewInfo) return;
  681. try {
  682. TcxDataController *pGDC = FRAMEIncidentAutoList1->TvList2->DataController;
  683. int nRow = pGDC->FocusedRecordIndex;
  684. if (nRow < 0) return;
  685. String sLinkId = VarToStr(pGDC->Values[nRow][FRAMEIncidentAutoList1->ColumnA01->Index]);
  686. if (ITS00MAP) ITS00MAP->SelectLinkById(1, sLinkId, true);
  687. } catch(...) {}
  688. }
  689. //---------------------------------------------------------------------------