IAN0040MF.cpp 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "ITSDbF.h"
  6. #include "AppGlobalF.h"
  7. #include "CDSNodeF.h"
  8. #include "CDSLinkF.h"
  9. #include "CDSIfscF.h"
  10. #include "CDSRoadF.h"
  11. #include "ITSLangTransF.h"
  12. #include "ITSMapF.h"
  13. #include "ITS_OPLibF.h"
  14. #pragma hdrstop
  15. #include "IAN0040MF.h"
  16. //---------------------------------------------------------------------------
  17. #pragma package(smart_init)
  18. #pragma link "cxButtons"
  19. #pragma link "cxCalc"
  20. #pragma link "cxCalendar"
  21. #pragma link "cxClasses"
  22. #pragma link "cxContainer"
  23. #pragma link "cxControls"
  24. #pragma link "cxCustomData"
  25. #pragma link "cxData"
  26. #pragma link "cxDataStorage"
  27. #pragma link "cxDropDownEdit"
  28. #pragma link "cxEdit"
  29. #pragma link "cxFilter"
  30. #pragma link "cxGraphics"
  31. #pragma link "cxGrid"
  32. #pragma link "cxGridCustomTableView"
  33. #pragma link "cxGridCustomView"
  34. #pragma link "cxGridLevel"
  35. #pragma link "cxGridTableView"
  36. #pragma link "cxGroupBox"
  37. #pragma link "cxLabel"
  38. #pragma link "cxLookAndFeelPainters"
  39. #pragma link "cxLookAndFeels"
  40. #pragma link "cxMaskEdit"
  41. #pragma link "cxSpinEdit"
  42. #pragma link "cxSplitter"
  43. #pragma link "cxStyles"
  44. #pragma link "cxTextEdit"
  45. #pragma link "cxTimeEdit"
  46. #pragma link "cxTrackBar"
  47. #pragma link "dxSkinBlack"
  48. #pragma link "dxSkinBlue"
  49. #pragma link "dxSkinsCore"
  50. #pragma link "dxSkinscxPCPainter"
  51. #pragma link "FRAME_OpenMapF"
  52. #pragma link "dxSkinMcSkin"
  53. #pragma resource "*.dfm"
  54. TIAN0040M *IAN0040M = NULL;
  55. //---------------------------------------------------------------------------
  56. void TIAN0040M_MapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst)
  57. {
  58. try
  59. {
  60. if (!IAN0040M) return;
  61. IAN0040M->OpenMapCallback(ASender, AFunc, AArgs, AFirst);
  62. }
  63. catch(Exception &exception)
  64. {
  65. }
  66. }
  67. //---------------------------------------------------------------------------
  68. __fastcall TIAN0040M::TIAN0040M(TComponent* Owner)
  69. : TForm(Owner)
  70. {
  71. LangTrans->Translate(this, ITSDb_GetConnection());
  72. ITSSkin_Load(this);
  73. CMM_LoadForm(g_sFormsDir, this);
  74. FTitle = Caption;//"소통정보 이력분석";
  75. FLinkMngr = new TTrafficValManager();
  76. FIfscMngr = new TTrafficValManager();
  77. FRoadMngr = new TTrafficValManager();
  78. CbLinkLevel->ItemIndex = 1; //IFSC
  79. FLinkLevel = CbLinkLevel->ItemIndex+1;
  80. FLayerIdx = LyrTp_Node;
  81. FRAMEOpenMap1->LayerIdx = FLayerIdx;
  82. FRAMEOpenMap1->ChkShowNmbr->Visible = false;
  83. FRAMEOpenMap1->BtnMoveMapToFit->Visible = false;
  84. FRAMEOpenMap1->MapCallbackFunc = TIAN0040M_MapCallback;
  85. }
  86. //---------------------------------------------------------------------------
  87. void __fastcall TIAN0040M::CommClose()
  88. {
  89. try
  90. {
  91. if (BtnStop->Enabled)
  92. BtnStopClick((TObject*)BtnStop);
  93. delete FLinkMngr;
  94. delete FIfscMngr;
  95. delete FRoadMngr;
  96. CMM_SaveForm(g_sFormsDir, this);
  97. }
  98. catch(...)
  99. {
  100. }
  101. }
  102. //---------------------------------------------------------------------------
  103. void __fastcall TIAN0040M::FormShow(TObject *Sender)
  104. {
  105. Refresh();
  106. FRAMEOpenMap1->OpenMap();
  107. FormInit();
  108. TmrShow->Enabled = true;
  109. }
  110. //---------------------------------------------------------------------------
  111. void __fastcall TIAN0040M::FormInit()
  112. {
  113. ADOQry->Connection = ITSDb_GetConnection();
  114. ADOSta->Connection = ITSDb_GetConnection();
  115. m_pGDC = TvList->DataController;
  116. TDateTime dtNow = Now() - ((double)3 / (double)24);
  117. DtStDate->Date = dtNow;
  118. DtEdDate->Date = Now();
  119. //DtStTime->EditValue = dtNow.FormatString("hh") + ":00";
  120. dtNow = Now() - ((double)2 / (double)24);
  121. //DtEdTime->EditValue = dtNow.FormatString("hh") + ":59";
  122. DtStTime->Time = StrToDateTime(dtNow.FormatString("hh") + ":00");
  123. DtEdTime->Time = StrToDateTime(dtNow.FormatString("hh") + ":59");
  124. }
  125. //---------------------------------------------------------------------------
  126. void __fastcall TIAN0040M::TmrShowTimer(TObject *Sender)
  127. {
  128. TmrShow->Enabled = false;
  129. if (TmrShow->Tag == 1)
  130. {
  131. int nIndex = m_pGDC->FocusedRecordIndex;
  132. if (nIndex < 0)
  133. {
  134. cxTrackBar1->Position = 0;
  135. FStatTime = "";
  136. BtnPlay->Enabled = true;
  137. BtnStop->Enabled = false;
  138. BtnSearch->Enabled = true;
  139. return;
  140. }
  141. if (m_pGDC->FocusedRecordIndex + 1 == m_pGDC->RecordCount)
  142. {
  143. cxTrackBar1->Position = 0;
  144. FStatTime = "";
  145. BtnPlay->Enabled = true;
  146. BtnStop->Enabled = false;
  147. BtnSearch->Enabled = true;
  148. return;
  149. }
  150. m_pGDC->FocusedRecordIndex++;
  151. nIndex = m_pGDC->FocusedRecordIndex;
  152. FSimIndex = nIndex;
  153. cxTrackBar1->Position = nIndex;
  154. FStatTime = VarToStr(m_pGDC->Values[nIndex][Column04->Index]);
  155. //cxGroupBox1->Caption = "▶ 소통정보 표출 - " + VarToStr(m_pGDC->Values[nIndex][Column02->Index]);
  156. cxGroupBox1->Caption = lblText1->Caption + " - " + VarToStr(m_pGDC->Values[nIndex][Column02->Index]);
  157. SelStatisticsHistory(FStatTime);
  158. BtnPlay->Enabled = false;
  159. BtnStop->Enabled = true;
  160. TmrShow->Interval = SeRefreshSec->Value * 1000;
  161. TmrShow->Enabled = true;
  162. }
  163. }
  164. //---------------------------------------------------------------------------
  165. void __fastcall TIAN0040M::InitGisLink()
  166. {
  167. if (!FRAMEOpenMap1->MapStart) return;
  168. TItsNode* pNode;
  169. String STRT_NM;
  170. String END_NM;
  171. try
  172. {
  173. if (FLinkLevel == 1)
  174. {
  175. ItsLinkManager->FLists.Lock();
  176. try
  177. {
  178. FOR_STL(TItsLink*, pLink, ItsLinkManager->FLists)
  179. {
  180. if (pLink->DEL_YN == "Y") continue;
  181. if (pLink->IsVertex)
  182. {
  183. TTrafficVal* pTraf = new TTrafficVal();
  184. pTraf->ID = pLink->LINK_ID;
  185. pTraf->IsUpdate = true;
  186. pTraf->GRADE_VAL = 0;
  187. FLinkMngr->FLists.Push(pTraf->ID, pTraf);
  188. pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID);
  189. if (pNode) STRT_NM = pNode->NODE_NAME; else STRT_NM = " ";
  190. pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID);
  191. if (pNode) END_NM = pNode->NODE_NAME; else END_NM = " ";
  192. sJs.printf(L"addEditLink('%s', '%s', '%s', '%s', '%s', '%s')",
  193. pLink->LINK_ID.c_str(),
  194. pLink->ROAD_NAME.c_str(),
  195. STRT_NM.c_str(),
  196. END_NM.c_str(),
  197. pLink->X_CRDN_ARR.c_str(),
  198. pLink->Y_CRDN_ARR.c_str());
  199. FRAMEOpenMap1->ExecScript(sJs);
  200. }
  201. }
  202. }
  203. __finally
  204. {
  205. ItsLinkManager->FLists.UnLock();
  206. }
  207. FRAMEOpenMap1->ExecScript("makeEditLinkLayer()");
  208. }
  209. else
  210. if (FLinkLevel == 2)
  211. {
  212. ItsIfscManager->FLists.Lock();
  213. try
  214. {
  215. FOR_STL(TItsIfsc*, pIfsc, ItsIfscManager->FLists)
  216. {
  217. if (pIfsc->DEL_YN == "Y") continue;
  218. if (pIfsc->IsVertex)
  219. {
  220. TTrafficVal* pTraf = new TTrafficVal();
  221. pTraf->ID = pIfsc->IFSC_ID;
  222. pTraf->IsUpdate = true;
  223. pTraf->GRADE_VAL = 0;
  224. FIfscMngr->FLists.Push(pTraf->ID, pTraf);
  225. sJs.printf(L"addEditLink('%s', '%s', '%s', '%s', '%s', '%s')",
  226. pIfsc->IFSC_ID.c_str(),
  227. pIfsc->IFSC_NM.c_str(),
  228. pIfsc->STRT_NM.c_str(),
  229. pIfsc->END_NM.c_str(),
  230. pIfsc->X_CRDN_ARR.c_str(),
  231. pIfsc->Y_CRDN_ARR.c_str());
  232. FRAMEOpenMap1->ExecScript(sJs);
  233. }
  234. }
  235. }
  236. __finally
  237. {
  238. ItsIfscManager->FLists.UnLock();
  239. }
  240. FRAMEOpenMap1->ExecScript("makeEditLinkLayer()");
  241. }
  242. else
  243. if (FLinkLevel == 3)
  244. {
  245. ItsRoadManager->FLists.Lock();
  246. try
  247. {
  248. FOR_STL(TItsRoad*, pRoad, ItsRoadManager->FLists)
  249. {
  250. if (pRoad->DEL_YN == "Y") continue;
  251. if (pRoad->IsVertex)
  252. {
  253. TTrafficVal* pTraf = new TTrafficVal();
  254. pTraf->ID = pRoad->ROAD_ID;
  255. pTraf->IsUpdate = true;
  256. pTraf->GRADE_VAL = 0;
  257. FRoadMngr->FLists.Push(pTraf->ID, pTraf);
  258. sJs.printf(L"addEditLink('%s', '%s', '%s', '%s', '%s', '%s')",
  259. pRoad->ROAD_ID.c_str(),
  260. pRoad->ROAD_NM.c_str(),
  261. pRoad->STRT_NM.c_str(),
  262. pRoad->END_NM.c_str(),
  263. pRoad->X_CRDN_ARR.c_str(),
  264. pRoad->Y_CRDN_ARR.c_str());
  265. FRAMEOpenMap1->ExecScript(sJs);
  266. }
  267. }
  268. }
  269. __finally
  270. {
  271. ItsRoadManager->FLists.UnLock();
  272. }
  273. FRAMEOpenMap1->ExecScript("makeEditLinkLayer()");
  274. }
  275. }
  276. catch(...)
  277. {
  278. }
  279. }
  280. //---------------------------------------------------------------------------
  281. void __fastcall TIAN0040M::BtnSearchClick(TObject *Sender)
  282. {
  283. Application->ProcessMessages();
  284. TSqlCursor sqlCrs((TControl*)BtnSearch);
  285. // SelStatisticsHistory(""); return;
  286. #if 0
  287. FStDateTime = DtStDate->Date.FormatString("yyyymmdd") + DtStTime->Time.FormatString("hh");
  288. FEdDateTime = DtEdDate->Date.FormatString("yyyymmdd") + DtEdTime->Time.FormatString("hh");
  289. #else
  290. FStDateTime = DtStDate->Date.FormatString("yyyymmdd") + DtStTime->Time.FormatString("hhnn");
  291. FEdDateTime = DtEdDate->Date.FormatString("yyyymmdd") + DtEdTime->Time.FormatString("hhnn");
  292. #endif
  293. if (FStDateTime > FEdDateTime)
  294. {
  295. Application->MessageBox(FrmLang->lblQryDtErr->Caption.c_str(),//L"검색 시작시각이 검색 종료시각 보다 큽니다.",
  296. FTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  297. ActiveControl = DtStDate;
  298. return;
  299. }
  300. if ( StrToInt(DtEdTime->Time.FormatString("hh")) - StrToInt(DtStTime->Time.FormatString("hh")) >= 3)
  301. {
  302. Application->MessageBox(lblText2->Caption.c_str(),//L"3시간 이상의 정보를 조회할 수 없습니다.",
  303. FTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  304. ActiveControl = DtStDate;
  305. return;
  306. }
  307. #if 0
  308. FStDateTime = FStDateTime + "0000";
  309. FEdDateTime = FEdDateTime + "5959";
  310. #else
  311. FStDateTime = FStDateTime + "00";
  312. FEdDateTime = FEdDateTime + "59";
  313. #endif
  314. if (FLinkLevel != CbLinkLevel->ItemIndex+1)
  315. {
  316. //링크레벨을 고정하지 않고 변경할 경우 여기에서 링크 버텍스를 다시 로딩해 줘야 한다.
  317. }
  318. FLinkLevel = CbLinkLevel->ItemIndex+1;
  319. SelHistory();
  320. ClearGis();
  321. }
  322. //---------------------------------------------------------------------------
  323. void __fastcall TIAN0040M::BtnCloseClick(TObject *Sender)
  324. {
  325. Close();
  326. }
  327. //---------------------------------------------------------------------------
  328. void __fastcall TIAN0040M::FormClose(TObject *Sender, TCloseAction &Action)
  329. {
  330. CommClose();
  331. IAN0040M = NULL;
  332. Action = caFree;
  333. }
  334. //---------------------------------------------------------------------------
  335. void __fastcall TIAN0040M::DtStDatePropertiesValidate(TObject *Sender, Variant &DisplayValue, TCaption &ErrorText, bool &Error)
  336. {
  337. DtEdDate->Date = DtStDate->Date;
  338. }
  339. //---------------------------------------------------------------------------
  340. void __fastcall TIAN0040M::SelHistory()
  341. {
  342. TSqlCursor sqlCrs;
  343. String sQry;
  344. TADOQuery *pADO = ADOQry;
  345. int nLevel = StrToInt(FLinkLevel);
  346. switch(nLevel)
  347. {
  348. case 1:
  349. sQry = "SELECT PRCN_DT, COUNT(LINK_ID) CNT \r\n"
  350. " FROM TB_LINK_TRAF_HS A \r\n"
  351. " WHERE PRCN_DT BETWEEN :p01 AND :p02 \r\n"
  352. " GROUP BY PRCN_DT \r\n"
  353. " ORDER BY PRCN_DT \r\n";
  354. break;
  355. case 2:
  356. sQry = "SELECT STAT_DT AS PRCN_DT, COUNT(IFSC_ID) CNT \r\n"
  357. " FROM TB_IFSC_15M_STAT A \r\n"
  358. " WHERE STAT_DT BETWEEN :p01 AND :p02 \r\n"
  359. " GROUP BY STAT_DT \r\n"
  360. " ORDER BY STAT_DT \r\n";
  361. break;
  362. case 3:
  363. sQry = "SELECT PRCN_DT, COUNT(ROAD_ID) CNT \r\n"
  364. " FROM TB_ROAD_TRAF_HS A \r\n"
  365. " WHERE PRCN_DT BETWEEN :p01 AND :p02 \r\n"
  366. " GROUP BY PRCN_DT \r\n"
  367. " ORDER BY PRCN_DT \r\n";
  368. break;
  369. default: return;
  370. }
  371. try
  372. {
  373. ITSDb_SQLText(pADO, sQry);
  374. ITSDb_SQLBind(pADO, "p01", FStDateTime);
  375. ITSDb_SQLBind(pADO, "p02", FEdDateTime);
  376. ITSDb_SQLOpen(pADO);
  377. DspHistory();
  378. }
  379. catch(EDatabaseError &E)
  380. {
  381. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  382. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQry);
  383. throw Exception(String(E.ClassName()) + E.Message);
  384. }
  385. catch(Exception &exception)
  386. {
  387. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  388. DBERRORMSG(Caption, String(exception.ClassName()), exception.Message, sQry);
  389. throw Exception(String(exception.ClassName()) + exception.Message);
  390. }
  391. }
  392. //---------------------------------------------------------------------------
  393. void __fastcall TIAN0040M::DspHistory()
  394. {
  395. TADOQuery *pADO = ADOQry;
  396. try
  397. {
  398. CMM_ClearGridTableView(TvList);
  399. int nRow = 0;
  400. try
  401. {
  402. TvList->BeginUpdate();
  403. m_pGDC->RecordCount = pADO->RecordCount;
  404. for( ; !pADO->Eof; pADO->Next(), nRow++)
  405. {
  406. m_pGDC->Values[nRow][Column01->Index] = nRow+1;
  407. //m_pGDC->Values[nRow][Column02->Index] = pADO->FieldByName("PRCN_DT2")->AsDateTime.DateTimeString(); //가공시각
  408. m_pGDC->Values[nRow][Column02->Index] = ITSUtil_StrToTime(pADO->FieldByName("PRCN_DT")->AsString); //가공시각
  409. m_pGDC->Values[nRow][Column03->Index] = pADO->FieldByName("CNT")->AsInteger;
  410. m_pGDC->Values[nRow][Column04->Index] = pADO->FieldByName("PRCN_DT")->AsString;
  411. }
  412. }
  413. __finally
  414. {
  415. if (pADO)
  416. {
  417. pADO->Close();
  418. }
  419. TvList->EndUpdate();
  420. CxList->SetFocus();
  421. cxTrackBar1->Position = 0;
  422. cxTrackBar1->Properties->Max = nRow;
  423. cxTrackBar1->Properties->Frequency = cxTrackBar1->Properties->Max * 0.1;
  424. LblRecords->Caption = FormatFloat("##,##0", m_pGDC->RecordCount) + FrmLang->lblEA->Caption;//" 건";
  425. String sEnd = FrmLang->lblQrySel->Caption + " [" + LblRecords->Caption + "]";//"데이터 " + LblRecords->Caption + " 이 조회 되었습니다.";
  426. Application->MessageBox(sEnd.c_str(),
  427. FrmLang->lblQryEnd->Caption.c_str(),//L"데이터 조회 완료",
  428. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  429. }
  430. }
  431. catch(EDatabaseError &E)
  432. {
  433. throw Exception(String(E.ClassName()) + E.Message);
  434. }
  435. catch(...)
  436. {
  437. throw Exception(FrmLang->lblDbErr->Caption);//"알수없는 오류가 발생하였습니다.");
  438. }
  439. }
  440. //---------------------------------------------------------------------------
  441. void __fastcall TIAN0040M::BtnPlayClick(TObject *Sender)
  442. {
  443. if (m_pGDC->RecordCount <= 0)
  444. {
  445. Application->MessageBox(lblText3->Caption.c_str(),//L"표출할 정보가 없습니다. 이력정보를 다시 조회하신 후 작업을 진행 하십시요.",
  446. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  447. return;
  448. }
  449. m_pGDC->FocusedRecordIndex = 0;
  450. int nIndex = m_pGDC->FocusedRecordIndex;
  451. if (nIndex < 0) return;
  452. FSimIndex = nIndex;
  453. cxTrackBar1->Position = nIndex;
  454. FStatTime = VarToStr(m_pGDC->Values[nIndex][Column04->Index]);
  455. CxList->SetFocus();
  456. BtnPlay->Enabled = false;
  457. BtnStop->Enabled = true;
  458. BtnSearch->Enabled = false;
  459. cxGroupBox1->Caption = lblText1->Caption + " - " + VarToStr(m_pGDC->Values[nIndex][Column02->Index]);
  460. SelStatisticsHistory(FStatTime);
  461. TmrShow->Tag = 1;
  462. TmrShow->Interval = SeRefreshSec->Value * 1000;
  463. TmrShow->Enabled = true;
  464. }
  465. //---------------------------------------------------------------------------
  466. void __fastcall TIAN0040M::BtnStopClick(TObject *Sender)
  467. {
  468. TmrShow->Enabled = false;
  469. BtnPlay->Enabled = true;
  470. BtnStop->Enabled = false;
  471. BtnSearch->Enabled = true;
  472. }
  473. //---------------------------------------------------------------------------
  474. void __fastcall TIAN0040M::SelStatisticsHistory(String AStatTime)
  475. {
  476. int ii;
  477. TSqlCursor sqlCrs;
  478. String sQry;
  479. TADOQuery *pADO = ADOSta;
  480. #if 1
  481. sQry = "SELECT A.IFSC_ID, NVL(B.CMTR_GRAD_CD, 'LTC0') TRFGRD, C.SPED, C.STAT_DT REGDATE \r\n"
  482. " FROM TB_IFSC A, \r\n"
  483. " TB_SECT_GRAD_STUP B, \r\n"
  484. " TB_IFSC_15M_STAT C \r\n"
  485. " WHERE A.IFSC_ID = C.IFSC_ID \r\n"
  486. " AND A.SECT_GRAD_CD = B.SECT_GRAD_CD \r\n"
  487. " AND (C.SPED >= B.LWST_TRVL_SPED AND C.SPED <= B.HGHS_TRVL_SPED) \r\n"
  488. " AND STAT_DT = :p01 \r\n";
  489. ITSDb_SQLText(pADO, sQry);
  490. ITSDb_SQLBind(pADO, "p01", AStatTime);
  491. #else
  492. sQry = "SELECT A.IFSC_ID, 'LTC' || mod(rownum, 4) as TRFGRD, 1 as SPED \r\n"
  493. " FROM TB_IFSC A \r\n";
  494. ITSDb_SQLText(pADO, sQry);
  495. #endif
  496. int nGradeCd;
  497. try
  498. {
  499. ITSDb_SQLOpen(pADO);
  500. for( ; !pADO->Eof; pADO->Next())
  501. {
  502. String sID = pADO->FieldByName("IFSC_ID")->AsString;
  503. TTrafficVal *pTraf = FIfscMngr->FLists.Find(sID);
  504. if (pTraf)
  505. {
  506. String TRFGRD = pADO->FieldByName("TRFGRD")->AsString;
  507. if (TRFGRD == "LTC1") nGradeCd = 1;
  508. else if (TRFGRD == "LTC2") nGradeCd = 2;
  509. else if (TRFGRD == "LTC3") nGradeCd = 3;
  510. else nGradeCd = 0;
  511. if (pTraf->GRADE_VAL != nGradeCd)
  512. {
  513. pTraf->GRADE_VAL = nGradeCd;
  514. sJs.printf(L"updateHistLink('%s', %d)", sID.c_str(), nGradeCd);
  515. FRAMEOpenMap1->ExecScript(sJs);
  516. }
  517. }
  518. }
  519. }
  520. catch(EDatabaseError &E)
  521. {
  522. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  523. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQry);
  524. throw Exception(String(E.ClassName()) + E.Message);
  525. }
  526. catch(Exception &exception)
  527. {
  528. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  529. DBERRORMSG(Caption, String(exception.ClassName()), exception.Message, sQry);
  530. throw Exception(String(exception.ClassName()) + exception.Message);
  531. }
  532. }
  533. //---------------------------------------------------------------------------
  534. void __fastcall TIAN0040M::ClearGis()
  535. {
  536. cxGroupBox1->Caption = lblText1->Caption;//"▶ 소통정보 표출";
  537. }
  538. //---------------------------------------------------------------------------
  539. void __fastcall TIAN0040M::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  540. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  541. {
  542. if (BtnPlay->Enabled == false) return;
  543. int nRow = m_pGDC->FocusedRecordIndex;
  544. if( nRow <= -1 )
  545. return;
  546. FStatTime = VarToStr(m_pGDC->Values[nRow][Column04->Index]);
  547. cxGroupBox1->Caption = lblText1->Caption + " - " + VarToStr(m_pGDC->Values[nRow][Column02->Index]);
  548. SelStatisticsHistory(FStatTime);
  549. }
  550. //---------------------------------------------------------------------------
  551. void __fastcall TIAN0040M::BtnSearch2Click(TObject *Sender)
  552. {
  553. Application->ProcessMessages();
  554. if (!FRAMEOpenMap1->MapStart) return;
  555. String sLinkId = EdLinkId->Text.Trim();
  556. sJs.printf(L"extentLayerObject(%d, '%s')", LyrTp_Traffic, sLinkId.c_str());
  557. FRAMEOpenMap1->ExecScript(sJs);
  558. }
  559. //---------------------------------------------------------------------------
  560. void __fastcall TIAN0040M::OpenMapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst)
  561. {
  562. try
  563. {
  564. if (AFirst)
  565. {
  566. //지도를 편집모드로 변경
  567. sJs.printf(L"setEditMode(%d, 1)", FLayerIdx);
  568. FRAMEOpenMap1->ExecScript(sJs);
  569. //편집레이어 생성
  570. FRAMEOpenMap1->ExecScript("initEditLayer()");
  571. FRAMEOpenMap1->ExecScript("setEditArrow(0)");
  572. FRAMEOpenMap1->ExecScript("setEditColor()");
  573. //배경링크레이어 생성
  574. InitGisLink();
  575. return;
  576. }
  577. }
  578. catch(Exception &exception)
  579. {
  580. }
  581. }
  582. //---------------------------------------------------------------------------
  583. void __fastcall TIAN0040M::FormCloseQuery(TObject *Sender, bool &CanClose)
  584. {
  585. FRAMEOpenMap1->OnCloseQuery(CanClose);
  586. }
  587. //---------------------------------------------------------------------------
  588. void __fastcall TIAN0040M::DtStDateChange(TObject *Sender)
  589. {
  590. DtEdDate->Date = DtStDate->Date;
  591. }
  592. //---------------------------------------------------------------------------