FRAME_IncidentEndF.cpp 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "WindowMsgF.h"
  6. #include "AppGlobalF.h"
  7. #include "CDSLinkF.h"
  8. #include "CDSNodeF.h"
  9. #include "ITSLangTransF.h"
  10. #pragma hdrstop
  11. #include "FRAME_IncidentEndF.h"
  12. #include "FrmIncidVmsInfoF.h"
  13. #include "ITS00MAPF.h"
  14. //---------------------------------------------------------------------------
  15. #pragma package(smart_init)
  16. #pragma link "cxButtons"
  17. #pragma link "cxCalc"
  18. #pragma link "cxCalendar"
  19. #pragma link "cxCheckBox"
  20. #pragma link "cxClasses"
  21. #pragma link "cxContainer"
  22. #pragma link "cxControls"
  23. #pragma link "cxCustomData"
  24. #pragma link "cxData"
  25. #pragma link "cxDataStorage"
  26. #pragma link "cxDropDownEdit"
  27. #pragma link "cxEdit"
  28. #pragma link "cxFilter"
  29. #pragma link "cxGraphics"
  30. #pragma link "cxGrid"
  31. #pragma link "cxGridCustomTableView"
  32. #pragma link "cxGridCustomView"
  33. #pragma link "cxGridLevel"
  34. #pragma link "cxGridTableView"
  35. #pragma link "cxGroupBox"
  36. #pragma link "cxLabel"
  37. #pragma link "cxLookAndFeelPainters"
  38. #pragma link "cxLookAndFeels"
  39. #pragma link "cxMaskEdit"
  40. #pragma link "cxSpinEdit"
  41. #pragma link "cxSplitter"
  42. #pragma link "cxStyles"
  43. #pragma link "cxTextEdit"
  44. #pragma link "cxTimeEdit"
  45. #pragma link "dxGDIPlusClasses"
  46. #pragma link "dxSkinBlack"
  47. #pragma link "dxSkinBlue"
  48. #pragma link "dxSkinsCore"
  49. #pragma link "dxSkinscxPCPainter"
  50. #pragma resource "*.dfm"
  51. TFRAMEIncidentEnd *FRAMEIncidentEnd;
  52. //---------------------------------------------------------------------------
  53. __fastcall TFRAMEIncidentEnd::TFRAMEIncidentEnd(TComponent* Owner)
  54. : TFrame(Owner)
  55. {
  56. LangTrans->Translate(this, ITSDb_GetConnection());
  57. ITSSkin_Load((TForm*)this);
  58. FTitle = Caption;//"돌발 종료 처리";
  59. FLinkId = "";
  60. //m_pGDC = TvList->DataController;
  61. TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<등록된 돌발정보가 없습니다>";
  62. FCodeIST = ItsCodeManager->FLists.Find("IST"); //돌발상황 원본 코드 : IST
  63. FCodeLTCU = ItsCodeManager->FLists.Find("LTCU"); //소통 등급 코드 : LTCU
  64. FCodeICM = ItsCodeManager->FLists.Find("ICM"); //돌발상황 확인 방법 코드 : ICM
  65. FCodeIDTU = ItsCodeManager->FLists.Find("IDTU"); //돌발상황 유형 분류 코드 : IDTU
  66. FCodeACTU = ItsCodeManager->FLists.Find("ACTU"); //돌발상황 유형 코드 : ACTU, CRTU, EVTU, WETU 중 하나
  67. FCodeCRTU = ItsCodeManager->FLists.Find("CRTU"); //돌발상황 유형 코드 : ACTU, CRTU, EVTU, WETU 중 하나
  68. FCodeEVTU = ItsCodeManager->FLists.Find("EVTU"); //돌발상황 유형 코드 : ACTU, CRTU, EVTU, WETU 중 하나
  69. FCodeWETU = ItsCodeManager->FLists.Find("WETU"); //돌발상황 유형 코드 : ACTU, CRTU, EVTU, WETU 중 하나
  70. FCodeSRLU = ItsCodeManager->FLists.Find("SRLU"); //돌발상황 심각도 코드 : SRLU
  71. FCodePRTU = ItsCodeManager->FLists.Find("PRTU"); //통행 제한 유형 코드 : PRTU
  72. FCodeRSL = ItsCodeManager->FLists.Find("RSL"); //대응 수준 코드 : RSL
  73. FCodeISS = ItsCodeManager->FLists.Find("ISS"); //돌발상황 진행 단계 코드 : ISS
  74. //FCodeICM = ItsCodeManager->FLists.Find("ICM"); //돌발상황 종료 확인 방법 코드 : ICM
  75. FCodeDFW = ItsCodeManager->FLists.Find("DFW"); //기상 코드 : DFW
  76. FCodeVIT = ItsCodeManager->FLists.Find("VIT"); //VMS 돌발 유형 코드 : VIT
  77. FCodeIDT = ItsCodeManager->FLists.Find("IDT"); //VMS 돌발 유형 세부 코드 : IDT
  78. FCodeEDT = ItsCodeManager->FLists.Find("EDT"); //VMS 돌발 유형 세부 코드 : EDT
  79. InitForm();
  80. }
  81. //---------------------------------------------------------------------------
  82. void __fastcall TFRAMEIncidentEnd::InitForm()
  83. {
  84. DtStDate->Date = Now() - 30;
  85. DtEdDate->Date = Now();
  86. DtEdTime->EditValue = Now().FormatString("hh");
  87. //DtINCD_STRT_DT->Date = Now();
  88. //DtINCD_END_PRAR_DT->Date = Now() + ( 1 / 24 );
  89. DtINCD_END_DT->Date = Now();
  90. CbINCD_ORGN_CD->Properties->Items->Clear();
  91. if (FCodeIST)
  92. {
  93. FOR_STL(TItsSubCode *, pSubCode, FCodeIST->FSubLists)
  94. {
  95. if (pSubCode->USE_YN == "N") continue;
  96. CbINCD_ORGN_CD->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  97. }
  98. }
  99. CbINCD_ORGN_CD->ItemIndex = 0;
  100. CbCMTR_GRAD_CD->Properties->Items->Clear();
  101. if (FCodeLTCU)
  102. {
  103. FOR_STL(TItsSubCode *, pSubCode, FCodeLTCU->FSubLists)
  104. {
  105. if (pSubCode->USE_YN == "N") continue;
  106. CbCMTR_GRAD_CD->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  107. }
  108. }
  109. CbCMTR_GRAD_CD->ItemIndex = 0;
  110. CbINCD_END_CNFM_MTHD_CD->Properties->Items->Clear();
  111. CbINCD_CNFM_MTHD_CD->Properties->Items->Clear();
  112. if (FCodeICM)
  113. {
  114. FOR_STL(TItsSubCode *, pSubCode, FCodeICM->FSubLists)
  115. {
  116. if (pSubCode->USE_YN == "N") continue;
  117. CbINCD_CNFM_MTHD_CD->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  118. CbINCD_END_CNFM_MTHD_CD->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  119. }
  120. }
  121. CbINCD_CNFM_MTHD_CD->ItemIndex = 0;
  122. CbINCD_END_CNFM_MTHD_CD->ItemIndex = 0;
  123. CbINCD_SERN_CD->Properties->Items->Clear();
  124. if (FCodeSRLU)
  125. {
  126. FOR_STL(TItsSubCode *, pSubCode, FCodeSRLU->FSubLists)
  127. {
  128. if (pSubCode->USE_YN == "N") continue;
  129. CbINCD_SERN_CD->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  130. }
  131. }
  132. CbINCD_SERN_CD->ItemIndex = 0;
  133. CbINCD_TYPE_CLSF_CD->Properties->Items->Clear();
  134. if (FCodeIDTU)
  135. {
  136. FOR_STL(TItsSubCode *, pSubCode, FCodeIDTU->FSubLists)
  137. {
  138. if (pSubCode->USE_YN == "N") continue;
  139. CbINCD_TYPE_CLSF_CD->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  140. }
  141. }
  142. CbINCD_TYPE_CLSF_CD->ItemIndex = 0;
  143. #if 1
  144. if (FCodeACTU)
  145. {
  146. FOR_STL(TItsSubCode *, pSubCode , FCodeACTU->FSubLists)
  147. {
  148. if (pSubCode->USE_YN == "N") continue;
  149. CbINCD_TYPE_CD->Properties->Items->Add( " [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  150. }
  151. }
  152. if (FCodeCRTU)
  153. {
  154. FOR_STL(TItsSubCode *, pSubCode , FCodeCRTU->FSubLists)
  155. {
  156. if (pSubCode->USE_YN == "N") continue;
  157. CbINCD_TYPE_CD->Properties->Items->Add( " [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  158. }
  159. }
  160. if (FCodeEVTU)
  161. {
  162. FOR_STL(TItsSubCode *, pSubCode , FCodeEVTU->FSubLists)
  163. {
  164. if (pSubCode->USE_YN == "N") continue;
  165. CbINCD_TYPE_CD->Properties->Items->Add( " [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  166. }
  167. }
  168. if (FCodeWETU)
  169. {
  170. FOR_STL(TItsSubCode *, pSubCode , FCodeWETU->FSubLists)
  171. {
  172. if (pSubCode->USE_YN == "N") continue;
  173. CbINCD_TYPE_CD->Properties->Items->Add( " [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  174. }
  175. }
  176. #endif
  177. //대응 수준 코드 : RSL
  178. if (FCodeRSL)
  179. {
  180. FOR_STL(TItsSubCode *, pSubCode , FCodeRSL->FSubLists)
  181. {
  182. if (pSubCode->USE_YN == "N") continue;
  183. CbRESP_LVL_CD->Properties->Items->Add( " [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  184. }
  185. }
  186. }
  187. //---------------------------------------------------------------------------
  188. void __fastcall TFRAMEIncidentEnd::InitScreen()
  189. {
  190. EdRegDt->Text = "";
  191. EdLINK_ID->Text = "";
  192. EdLinkId->Text = "";
  193. SePosX->Value = 0;
  194. SePosY->Value = 0;
  195. EdINCD_EXPL->Text = "";
  196. EdIFMR_NM->Text = "";
  197. DtINCD_STRT_DT->Date = Now();
  198. CbRESP_LVL_CD->Text = "";
  199. ChkUTIS_CNCT_YN->Checked = false;
  200. ChkVMS_DSPL_YN->Checked = false;
  201. EdSTRT_LCTN_NM->Text = "";
  202. EdEND_LCTN_NM->Text = "";
  203. CbVMS_INCD_TYPE_CD->Text = "";
  204. CbVMS_INCD_DETL_TYPE_CD->Text = "";
  205. EdINCD_OCRR_ID->Text = "";
  206. EdRGST_DT->Text = "";
  207. CbINCD_ORGN_CD->Text = "";
  208. EdOCRR_LCTN_NM->Text = "";
  209. CbCMTR_GRAD_CD->Text = "";
  210. CbINCD_CNFM_MTHD_CD->Text = "";
  211. CbINCD_SERN_CD->Text = "";
  212. CbRESP_LVL_CD->Text = "";
  213. EdINCD_TITL->Text = "";
  214. CbINCD_TYPE_CLSF_CD->Text = "";
  215. CbINCD_TYPE_CD->Text = "";
  216. DtINCD_END_PRAR_DT->Date = Now();
  217. CbINCD_END_CNFM_MTHD_CD->Text = "";
  218. DtINCD_END_DT->Date = Now();
  219. EdMBLZ_EQPM_CONT->Text = "";
  220. SeMBLZ_PNUM->Value = 0;
  221. EdRECR_CONT->Text = "";
  222. SeRECR_PERD->Value = 0;
  223. ChkUTIS_CNCT_YN->Checked = false;
  224. }
  225. //---------------------------------------------------------------------------
  226. void __fastcall TFRAMEIncidentEnd::UpdateList()
  227. {
  228. InitScreen();
  229. TItsSubCode *pSubCode;
  230. CMM_ClearGridTableView(TvList);
  231. TcxDataController *pGDC = TvList->DataController;
  232. int nRow = 0;
  233. try
  234. {
  235. TvList->BeginUpdate();
  236. try
  237. {
  238. ItsIncidentManager->FLists.Lock();
  239. FOR_STL(TItsIncident *, pObj, ItsIncidentManager->FLists)
  240. {
  241. #if 0
  242. if (pObj->INCD_PRGR_STEP_CD == "ISS2" ||
  243. (ChkViewEnded->Checked && pObj->INCD_PRGR_STEP_CD == "ISS3"))
  244. {
  245. nRow = pGDC->AppendRecord();
  246. }
  247. else
  248. {
  249. continue;
  250. }
  251. #else
  252. if (ChkViewEnded->Checked)
  253. {
  254. if (pObj->INCD_PRGR_STEP_CD != "ISS2" && pObj->INCD_PRGR_STEP_CD != "ISS3") continue;
  255. if (wcscmp(pObj->RGST_DT.c_str(), FEdDateTime.c_str()) > 0) continue;
  256. if (wcscmp(FStDateTime.c_str(), pObj->RGST_DT.c_str()) > 0) continue;
  257. }
  258. else
  259. {
  260. if (pObj->INCD_PRGR_STEP_CD != "ISS2") continue;
  261. }
  262. nRow = pGDC->AppendRecord();
  263. #endif
  264. String sIST = "";
  265. String sLTCU = "";
  266. String sICM = "";
  267. String sEndICM = "";
  268. String sSRLU = "";
  269. String sIDTU = "";
  270. String sACTU = "";
  271. String sISS = "";
  272. String sDFW = "";
  273. String sRSL = "";
  274. String sPRTU = "";
  275. if (pObj->INCD_ORGN_CD != "") sIST = " [" + pObj->INCD_ORGN_CD + "] ";
  276. if (pObj->CMTR_GRAD_CD != "") sLTCU = " [" + pObj->CMTR_GRAD_CD + "] ";
  277. if (pObj->INCD_CNFM_MTHD_CD != "") sICM = " [" + pObj->INCD_CNFM_MTHD_CD + "] ";
  278. if (pObj->INCD_END_CNFM_MTHD_CD != "") sEndICM = " [" + pObj->INCD_END_CNFM_MTHD_CD + "] ";
  279. if (pObj->INCD_SERN_CD != "") sSRLU = " [" + pObj->INCD_SERN_CD + "] ";
  280. if (pObj->INCD_TYPE_CLSF_CD != "") sIDTU = " [" + pObj->INCD_TYPE_CLSF_CD + "] ";
  281. if (pObj->INCD_TYPE_CD != "") sACTU = " [" + pObj->INCD_TYPE_CD + "] ";
  282. if (pObj->INCD_PRGR_STEP_CD != "") sISS = " [" + pObj->INCD_PRGR_STEP_CD + "] ";
  283. if (pObj->WTHR_CD != "") sDFW = " [" + pObj->WTHR_CD + "] ";
  284. if (pObj->RESP_LVL_CD != "") sRSL = " [" + pObj->RESP_LVL_CD + "] ";
  285. if (pObj->TRVL_LMNT_TYPE_CD != "") sPRTU = " [" + pObj->TRVL_LMNT_TYPE_CD + "] ";
  286. if (FCodeIST)
  287. {
  288. pSubCode = FCodeIST->FSubLists.Find(pObj->INCD_ORGN_CD);
  289. if (pSubCode) sIST = sIST + pSubCode->CMMN_CD_KOR_NM;
  290. }
  291. if (FCodeLTCU)
  292. {
  293. pSubCode = FCodeLTCU->FSubLists.Find(pObj->CMTR_GRAD_CD);
  294. if (pSubCode) sLTCU = sLTCU + pSubCode->CMMN_CD_KOR_NM;
  295. }
  296. if (FCodeICM)
  297. {
  298. pSubCode = FCodeICM->FSubLists.Find(pObj->INCD_CNFM_MTHD_CD);
  299. if (pSubCode) sICM = sICM + pSubCode->CMMN_CD_KOR_NM;
  300. pSubCode = FCodeICM->FSubLists.Find(pObj->INCD_END_CNFM_MTHD_CD);
  301. if (pSubCode) sEndICM = sEndICM + pSubCode->CMMN_CD_KOR_NM;
  302. }
  303. if (FCodeSRLU)
  304. {
  305. pSubCode = FCodeSRLU->FSubLists.Find(pObj->INCD_SERN_CD);
  306. if (pSubCode) sSRLU = sSRLU + pSubCode->CMMN_CD_KOR_NM;
  307. }
  308. if (FCodeIDTU)
  309. {
  310. pSubCode = FCodeIDTU->FSubLists.Find(pObj->INCD_TYPE_CLSF_CD);
  311. if (pSubCode) sIDTU = sIDTU + pSubCode->CMMN_CD_KOR_NM;
  312. }
  313. if (!pObj->INCD_TYPE_CLSF_CD.IsEmpty() && !pObj->INCD_TYPE_CD.IsEmpty())
  314. {
  315. if (pObj->INCD_TYPE_CLSF_CD == "1")
  316. {
  317. if (FCodeACTU)
  318. {
  319. pSubCode = FCodeACTU->FSubLists.Find(pObj->INCD_TYPE_CD);
  320. if (pSubCode) sACTU = sACTU + pSubCode->CMMN_CD_KOR_NM;
  321. }
  322. }
  323. else if (pObj->INCD_TYPE_CLSF_CD == "2")
  324. {
  325. if (FCodeCRTU)
  326. {
  327. pSubCode = FCodeCRTU->FSubLists.Find(pObj->INCD_TYPE_CD);
  328. if (pSubCode) sACTU = sACTU + pSubCode->CMMN_CD_KOR_NM;
  329. }
  330. }
  331. else if (pObj->INCD_TYPE_CLSF_CD == "3")
  332. {
  333. if (FCodeEVTU)
  334. {
  335. pSubCode = FCodeEVTU->FSubLists.Find(pObj->INCD_TYPE_CD);
  336. if (pSubCode) sACTU = sACTU + pSubCode->CMMN_CD_KOR_NM;
  337. }
  338. }
  339. else if (pObj->INCD_TYPE_CLSF_CD == "4")
  340. {
  341. if (FCodeWETU)
  342. {
  343. pSubCode = FCodeWETU->FSubLists.Find(pObj->INCD_TYPE_CD);
  344. if (pSubCode) sACTU = sACTU + pSubCode->CMMN_CD_KOR_NM;
  345. }
  346. }
  347. }
  348. if (FCodeISS)
  349. {
  350. pSubCode = FCodeISS->FSubLists.Find(pObj->INCD_PRGR_STEP_CD);
  351. if (pSubCode) sISS = sISS + pSubCode->CMMN_CD_KOR_NM;
  352. }
  353. if (FCodeDFW)
  354. {
  355. pSubCode = FCodeDFW->FSubLists.Find(pObj->WTHR_CD);
  356. if (pSubCode) sDFW = sDFW + pSubCode->CMMN_CD_KOR_NM;
  357. }
  358. if (FCodeRSL)
  359. {
  360. pSubCode = FCodeRSL->FSubLists.Find(pObj->RESP_LVL_CD);
  361. if (pSubCode) sRSL = sRSL + pSubCode->CMMN_CD_KOR_NM;
  362. }
  363. if (FCodePRTU)
  364. {
  365. pSubCode = FCodePRTU->FSubLists.Find(pObj->TRVL_LMNT_TYPE_CD);
  366. if (pSubCode) sPRTU = sPRTU + pSubCode->CMMN_CD_KOR_NM;
  367. }
  368. pGDC->Values[nRow][Column01->Index] = pObj->INCD_OCRR_ID; //돌발상황 발생 ID
  369. pGDC->Values[nRow][Column02->Index] = ITSUtil_StrToTime(pObj->RGST_DT); //등록 일시
  370. pGDC->Values[nRow][Column03->Index] = sISS;//pObj->INCD_PRGR_STEP_CD; //돌발상황 진행 단계 코드 : ISS
  371. pGDC->Values[nRow][Column04->Index] = sIST;//pObj->INCD_ORGN_CD; //돌발상황 원본 코드 : IST
  372. pGDC->Values[nRow][Column05->Index] = pObj->OCRR_LCTN_NM; //발생 위치 명
  373. pGDC->Values[nRow][Column06->Index] = pObj->LINK_ID; //돌발발생 LINK ID
  374. pGDC->Values[nRow][Column07->Index] = pObj->X_CRDN; //X 좌표
  375. pGDC->Values[nRow][Column08->Index] = pObj->Y_CRDN; //Y 좌표
  376. pGDC->Values[nRow][Column09->Index] = pObj->INCD_EXPL; //돌발상황 설명
  377. pGDC->Values[nRow][Column10->Index] = sLTCU;//pObj->CMTR_GRAD_CD; //소통 등급 코드 : LTCU
  378. pGDC->Values[nRow][Column11->Index] = pObj->IFMR_NM; //제보자 명
  379. pGDC->Values[nRow][Column12->Index] = sICM;//pObj->INCD_CNFM_MTHD_CD; //돌발상황 확인 방법 코드 : ICM
  380. pGDC->Values[nRow][Column13->Index] = sSRLU;//pObj->INCD_SERN_CD; //돌발상황 심각도 코드 : SRLU
  381. pGDC->Values[nRow][Column14->Index] = pObj->INCD_TITL; //돌발상황 제목
  382. pGDC->Values[nRow][Column15->Index] = sIDTU;//pObj->INCD_TYPE_CLSF_CD; //돌발상황 유형 분류 코드 : IDTU
  383. pGDC->Values[nRow][Column16->Index] = sACTU;//pObj->INCD_TYPE_CD; //돌발상황 유형 코드 : ACTU, CRTU, EVTU, WETU 중 하나
  384. pGDC->Values[nRow][Column17->Index] = ITSUtil_StrToTime(pObj->FINCD_STRT_DT); //돌발상황 시작 일시
  385. pGDC->Values[nRow][Column18->Index] = ITSUtil_StrToTime(pObj->INCD_END_PRAR_DT); //돌발상황 종료 예정 일시
  386. pGDC->Values[nRow][Column19->Index] = pObj->INCD_OCRR_LANE; //돌발상황 발생 차로
  387. pGDC->Values[nRow][Column20->Index] = pObj->INCD_CLSR_LANE; //돌발상황 차단 차로
  388. pGDC->Values[nRow][Column21->Index] = pObj->DELY_LNGT; //지체 길이
  389. pGDC->Values[nRow][Column22->Index] = pObj->INCD_LNGT; //돌발상황 길이
  390. pGDC->Values[nRow][Column23->Index] = pObj->SMLT_VHCL_UNUM; //소형 차량 대수
  391. pGDC->Values[nRow][Column24->Index] = pObj->MDLT_VHCL_UNUM; //중대형 차량 대수
  392. pGDC->Values[nRow][Column25->Index] = pObj->INJR_PNUM; //부상자 인원수
  393. pGDC->Values[nRow][Column26->Index] = pObj->FTLT_PNUM; //사망자 인원수
  394. pGDC->Values[nRow][Column27->Index] = sDFW;//pObj->WTHR_CD; //기상 코드 : DFW
  395. pGDC->Values[nRow][Column28->Index] = sRSL;//pObj->RESP_LVL_CD; //대응 수준 코드 : RSL
  396. pGDC->Values[nRow][Column29->Index] = pObj->UTIS_CNCT_YN; //UTIS 연계 여부
  397. pGDC->Values[nRow][Column30->Index] = pObj->TRUB_VHCL_YN; //고장 차량 여부
  398. pGDC->Values[nRow][Column31->Index] = pObj->FALT_YN; //낙하물 여부
  399. pGDC->Values[nRow][Column32->Index] = pObj->FRWT_YN; //화재위험물 여부
  400. pGDC->Values[nRow][Column33->Index] = sPRTU;//pObj->TRVL_LMNT_TYPE_CD; //통행 제한 유형 코드 : PRTU
  401. pGDC->Values[nRow][Column34->Index] = pObj->VMS_DSPL_YN; //VMS 표출 여부
  402. pGDC->Values[nRow][Column35->Index] = ITSUtil_StrToTime(pObj->INCD_CNFM_DT);
  403. pGDC->Values[nRow][Column36->Index] = sEndICM; //돌발상황 종료 확인 방법 코드 : ICM
  404. pGDC->Values[nRow][Column37->Index] = ITSUtil_StrToTime(pObj->INCD_END_DT); //돌발상황 종료 일시
  405. pGDC->Values[nRow][Column38->Index] = pObj->MBLZ_EQPM_CONT; //출동 장비 내용
  406. pGDC->Values[nRow][Column39->Index] = pObj->MBLZ_PNUM; //출동 인원수
  407. pGDC->Values[nRow][Column40->Index] = pObj->RECR_CONT; //복구 내용
  408. pGDC->Values[nRow][Column41->Index] = pObj->RECR_PERD; //복구 기간
  409. pGDC->Values[nRow][Column99->Index] = (int)pObj;
  410. }
  411. }
  412. __finally
  413. {
  414. ItsIncidentManager->FLists.UnLock();
  415. }
  416. }
  417. __finally
  418. {
  419. LblRecords->Caption = "("+FormatFloat("##,##0", pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", pGDC->RecordCount) + ")";
  420. TvList->EndUpdate();
  421. TvList->DataController->GotoFirst();
  422. TvList->DataController->FocusedRecordIndex = 0;
  423. }
  424. }
  425. //---------------------------------------------------------------------------
  426. void __fastcall TFRAMEIncidentEnd::TvListDataControllerFilterChanged(TObject *Sender)
  427. {
  428. CMM_SetFilterLike(TvList);
  429. TcxDataController *pGDC = TvList->DataController;
  430. LblRecords->Caption = "("+FormatFloat("##,##0", pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", pGDC->RecordCount) + ")";
  431. }
  432. //---------------------------------------------------------------------------
  433. void __fastcall TFRAMEIncidentEnd::BtnExlSaveClick(TObject *Sender)
  434. {
  435. TcxGrid *pGrid = CxList;
  436. TcxGridTableView *pView = TvList;
  437. String sTitle= lblFileName->Caption;//"돌발정보";
  438. CMM_ExportToExcelFile(sTitle, pGrid, pView, (TForm*)this);
  439. }
  440. //---------------------------------------------------------------------------
  441. void __fastcall TFRAMEIncidentEnd::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  442. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  443. {
  444. DisplayIncidentInfo();
  445. }
  446. //---------------------------------------------------------------------------
  447. void __fastcall TFRAMEIncidentEnd::DisplayIncidentInfo()
  448. {
  449. FLinkId = "";
  450. //BtnVmsTarget->Enabled = false;
  451. TcxDataController *pGDC = TvList->DataController;
  452. int nRow = pGDC->FocusedRecordIndex;
  453. if( nRow <= -1 )
  454. return;
  455. TItsSubCode *pSubCode;
  456. //int nMemPtr = pGDC->Values[nRow][Column99->Index];
  457. //TItsIncident *pObj = (TItsIncident *)nMemPtr;
  458. try
  459. {
  460. String sINCD_OCRR_ID = pGDC->Values[nRow][Column01->Index];
  461. TItsIncident *pObj = ItsIncidentManager->FLists.Find(sINCD_OCRR_ID);
  462. if (!pObj) return;
  463. //InitScreen();
  464. String sIST = "";
  465. if (pObj->INCD_ORGN_CD != "") sIST = " [" + pObj->INCD_ORGN_CD + "] ";
  466. String sLTCU= "";
  467. if (pObj->CMTR_GRAD_CD != "") sLTCU = " [" + pObj->CMTR_GRAD_CD + "] ";
  468. String sICM = "";
  469. if (pObj->INCD_CNFM_MTHD_CD != "") sICM = " [" + pObj->INCD_CNFM_MTHD_CD + "] ";
  470. String sSRLU= "";
  471. if (pObj->INCD_SERN_CD != "") sSRLU = " [" + pObj->INCD_SERN_CD + "] ";
  472. String sIDTU = "";
  473. if (pObj->INCD_TYPE_CLSF_CD != "") sIDTU = " [" + pObj->INCD_TYPE_CLSF_CD + "] ";
  474. String sACTU = "";
  475. if (pObj->INCD_TYPE_CD != "") sACTU = " [" + pObj->INCD_TYPE_CD + "] ";
  476. String sISS = "";
  477. if (pObj->INCD_PRGR_STEP_CD != "") sISS = " [" + pObj->INCD_PRGR_STEP_CD + "] ";
  478. String sDFW = "";
  479. if (pObj->WTHR_CD != "") sDFW = " [" + pObj->WTHR_CD + "] ";
  480. String sRSL = "";
  481. if (pObj->RESP_LVL_CD != "") sRSL = " [" + pObj->RESP_LVL_CD + "] ";
  482. String sPRTU = "";
  483. if (pObj->TRVL_LMNT_TYPE_CD != "") sPRTU = " [" + pObj->TRVL_LMNT_TYPE_CD + "] ";
  484. String sEndICM = "";
  485. if (pObj->INCD_END_CNFM_MTHD_CD != "") sEndICM = " [" + pObj->INCD_END_CNFM_MTHD_CD + "] ";
  486. if (FCodeIST)
  487. {
  488. pSubCode = FCodeIST->FSubLists.Find(pObj->INCD_ORGN_CD);
  489. if (pSubCode) sIST = sIST + pSubCode->CMMN_CD_KOR_NM;
  490. }
  491. if (FCodeLTCU)
  492. {
  493. pSubCode = FCodeLTCU->FSubLists.Find(pObj->CMTR_GRAD_CD);
  494. if (pSubCode) sLTCU = sLTCU + pSubCode->CMMN_CD_KOR_NM;
  495. }
  496. if (FCodeICM)
  497. {
  498. pSubCode = FCodeICM->FSubLists.Find(pObj->INCD_CNFM_MTHD_CD);
  499. if (pSubCode) sICM = sICM + pSubCode->CMMN_CD_KOR_NM;
  500. pSubCode = FCodeICM->FSubLists.Find(pObj->INCD_END_CNFM_MTHD_CD);
  501. if (pSubCode) sEndICM = sEndICM + pSubCode->CMMN_CD_KOR_NM;
  502. }
  503. if (FCodeSRLU)
  504. {
  505. pSubCode = FCodeSRLU->FSubLists.Find(pObj->INCD_SERN_CD);
  506. if (pSubCode) sSRLU = sSRLU + pSubCode->CMMN_CD_KOR_NM;
  507. }
  508. if (FCodeIDTU)
  509. {
  510. pSubCode = FCodeIDTU->FSubLists.Find(pObj->INCD_TYPE_CLSF_CD);
  511. if (pSubCode) sIDTU = sIDTU + pSubCode->CMMN_CD_KOR_NM;
  512. }
  513. if (!pObj->INCD_TYPE_CLSF_CD.IsEmpty() && !pObj->INCD_TYPE_CD.IsEmpty())
  514. {
  515. if (pObj->INCD_TYPE_CLSF_CD == "1")
  516. {
  517. if (FCodeACTU)
  518. {
  519. pSubCode = FCodeACTU->FSubLists.Find(pObj->INCD_TYPE_CD);
  520. if (pSubCode) sACTU = sACTU + pSubCode->CMMN_CD_KOR_NM;
  521. }
  522. }
  523. else if (pObj->INCD_TYPE_CLSF_CD == "2")
  524. {
  525. if (FCodeCRTU)
  526. {
  527. pSubCode = FCodeCRTU->FSubLists.Find(pObj->INCD_TYPE_CD);
  528. if (pSubCode) sACTU = sACTU + pSubCode->CMMN_CD_KOR_NM;
  529. }
  530. }
  531. else if (pObj->INCD_TYPE_CLSF_CD == "3")
  532. {
  533. if (FCodeEVTU)
  534. {
  535. pSubCode = FCodeEVTU->FSubLists.Find(pObj->INCD_TYPE_CD);
  536. if (pSubCode) sACTU = sACTU + pSubCode->CMMN_CD_KOR_NM;
  537. }
  538. }
  539. else if (pObj->INCD_TYPE_CLSF_CD == "4")
  540. {
  541. if (FCodeWETU)
  542. {
  543. pSubCode = FCodeWETU->FSubLists.Find(pObj->INCD_TYPE_CD);
  544. if (pSubCode) sACTU = sACTU + pSubCode->CMMN_CD_KOR_NM;
  545. }
  546. }
  547. }
  548. if (FCodeISS)
  549. {
  550. pSubCode = FCodeISS->FSubLists.Find(pObj->INCD_PRGR_STEP_CD);
  551. if (pSubCode) sISS = sISS + pSubCode->CMMN_CD_KOR_NM;
  552. }
  553. if (FCodeDFW)
  554. {
  555. pSubCode = FCodeISS->FSubLists.Find(pObj->WTHR_CD);
  556. if (pSubCode) sDFW = sDFW + pSubCode->CMMN_CD_KOR_NM;
  557. }
  558. if (FCodeRSL)
  559. {
  560. pSubCode = FCodeRSL->FSubLists.Find(pObj->RESP_LVL_CD);
  561. if (pSubCode) sRSL = sRSL + pSubCode->CMMN_CD_KOR_NM;
  562. }
  563. if (FCodePRTU)
  564. {
  565. pSubCode = FCodePRTU->FSubLists.Find(pObj->TRVL_LMNT_TYPE_CD);
  566. if (pSubCode) sPRTU = sPRTU + pSubCode->CMMN_CD_KOR_NM;
  567. }
  568. EdINCD_OCRR_ID->Text = pObj->INCD_OCRR_ID;
  569. EdRGST_DT->Text = ITSUtil_StrToTime(pObj->RGST_DT);
  570. EdRegDt->Text = pObj->RGST_DT;
  571. CbINCD_ORGN_CD->Text = sIST;
  572. EdOCRR_LCTN_NM->Text = pObj->OCRR_LCTN_NM;
  573. EdLINK_ID->Text = pObj->LINK_ID;
  574. EdLinkId->Text = pObj->LINK_ID;
  575. FLinkId = pObj->LINK_ID;
  576. if (pObj->X_CRDN.IsEmpty()) pObj->X_CRDN = "0.0";
  577. SePosX->Value = StrToFloat(pObj->X_CRDN);
  578. if (pObj->Y_CRDN.IsEmpty()) pObj->Y_CRDN = "0.0";
  579. SePosY->Value = StrToFloat(pObj->Y_CRDN);
  580. EdINCD_EXPL->Text = pObj->INCD_EXPL;
  581. CbCMTR_GRAD_CD->Text = sLTCU;
  582. EdIFMR_NM->Text = pObj->IFMR_NM;
  583. CbINCD_CNFM_MTHD_CD->Text = sICM;
  584. CbINCD_SERN_CD->Text = sSRLU;
  585. CbINCD_TYPE_CLSF_CD->Text = sIDTU;
  586. CbINCD_TYPE_CD->Text = sACTU;
  587. EdINCD_TITL->Text = pObj->INCD_TITL;
  588. DtINCD_STRT_DT->Date = ITSUtil_StrToDateTime(pObj->INCD_STRT_DT);
  589. DtINCD_END_PRAR_DT->Date = ITSUtil_StrToDateTime(pObj->INCD_END_PRAR_DT);
  590. CbRESP_LVL_CD->Text = sRSL;
  591. //공단에서 넘어온 돌발은 공단연계가 표출안되게
  592. if (pObj->INCD_ORGN_CD == "IST5")
  593. {
  594. ChkUTIS_CNCT_YN->Checked = false;
  595. //ChkUTIS_CNCT_YN->Enabled = false;
  596. }
  597. else
  598. {
  599. //ChkUTIS_CNCT_YN->Enabled = true;
  600. ChkUTIS_CNCT_YN->Checked = pObj->UTIS_CNCT_YN == "Y" ? true : false;
  601. }
  602. CbINCD_END_CNFM_MTHD_CD->Text = sEndICM;
  603. if (pObj->INCD_END_DT.IsEmpty())
  604. {
  605. DtINCD_END_DT->Date = Now();
  606. }
  607. else
  608. {
  609. DtINCD_END_DT->Date = ITSUtil_StrToDateTime(pObj->INCD_END_DT);
  610. }
  611. EdMBLZ_EQPM_CONT->Text = pObj->MBLZ_EQPM_CONT;
  612. SeMBLZ_PNUM->Value = pObj->MBLZ_PNUM.ToIntDef(0);
  613. EdRECR_CONT->Text = pObj->RECR_CONT;
  614. SeRECR_PERD->Value = pObj->RECR_PERD.ToIntDef(0);
  615. if (FLinkId != "")
  616. {
  617. //BtnVmsTarget->Enabled = true;
  618. }
  619. }
  620. catch(...)
  621. {
  622. }
  623. }
  624. //---------------------------------------------------------------------------
  625. void __fastcall TFRAMEIncidentEnd::BtnInfoCancelClick(TObject *Sender)
  626. {
  627. InitScreen();
  628. }
  629. //---------------------------------------------------------------------------
  630. void __fastcall TFRAMEIncidentEnd::BtnSaveClick(TObject *Sender)
  631. {
  632. #define USE_INC_PROGRESS 1
  633. //외부돌발(도로교통공단 UTIS)인 경우 진행상황을 입력하지 않으면 진행상황에서 입력해야할 정보가
  634. //입력되지 않는 경우가 발생함...
  635. //이때 진행상황의 필수입력항목을 체크할 것인지에 따라 위의 define을 설정하면 됨
  636. //1인경우 진행상황을 입력해야 종료처리가 되도록 하는 것이고 0인 경우 종료처리 필수항목만 체크하는 것임
  637. //입력
  638. if (EdINCD_OCRR_ID->Text.Trim().IsEmpty())
  639. {
  640. Application->MessageBox(L"돌발종료확인\r\n목록에서 돌발정보를 선택하신 후에 작업을 진행하세요.",
  641. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  642. return;
  643. }
  644. if (CbINCD_ORGN_CD->Text.IsEmpty())
  645. {
  646. Application->MessageBox(L"★[돌발구분] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  647. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  648. if (CbINCD_ORGN_CD->CanFocus()) CbINCD_ORGN_CD->SetFocus();
  649. return;
  650. }
  651. if (CbINCD_END_CNFM_MTHD_CD->Text.IsEmpty())
  652. {
  653. Application->MessageBox(L"★[종료확인방법] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  654. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  655. if (CbINCD_END_CNFM_MTHD_CD->CanFocus()) CbINCD_END_CNFM_MTHD_CD->SetFocus();
  656. return;
  657. }
  658. #if USE_INC_PROGRESS
  659. if (CbINCD_TYPE_CLSF_CD->Text.IsEmpty())
  660. {
  661. Application->MessageBox(L"★[돌발유형] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  662. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  663. if (CbINCD_TYPE_CLSF_CD->CanFocus()) CbINCD_TYPE_CLSF_CD->SetFocus();
  664. return;
  665. }
  666. if (CbINCD_TYPE_CD->Text.IsEmpty())
  667. {
  668. Application->MessageBox(L"★[돌발세부유형] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  669. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  670. if (CbINCD_TYPE_CD->CanFocus()) CbINCD_TYPE_CD->SetFocus();
  671. return;
  672. }
  673. if (CbINCD_CNFM_MTHD_CD->Text.IsEmpty())
  674. {
  675. Application->MessageBox(L"★[확인방법] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  676. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  677. if (CbINCD_CNFM_MTHD_CD->CanFocus()) CbINCD_CNFM_MTHD_CD->SetFocus();
  678. return;
  679. }
  680. if (CbINCD_SERN_CD->Text.IsEmpty())
  681. {
  682. Application->MessageBox(L"★[심각도] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  683. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  684. if (CbINCD_SERN_CD->CanFocus()) CbINCD_SERN_CD->SetFocus();
  685. return;
  686. }
  687. if (DtINCD_STRT_DT->EditValue.IsEmpty())
  688. {
  689. Application->MessageBox(L"★[돌발시작시각] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  690. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  691. if (DtINCD_STRT_DT->CanFocus()) DtINCD_STRT_DT->SetFocus();
  692. return;
  693. }
  694. if (DtINCD_END_PRAR_DT->EditValue.IsEmpty())
  695. {
  696. Application->MessageBox(L"★[종료예정시각] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  697. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  698. if (DtINCD_END_PRAR_DT->CanFocus()) DtINCD_END_PRAR_DT->SetFocus();
  699. return;
  700. }
  701. if (EdLinkId->Text.Trim().IsEmpty())
  702. {
  703. Application->MessageBox(L"★[발생구간(링크)] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  704. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  705. if (EdLinkId->CanFocus()) EdLinkId->SetFocus();
  706. return;
  707. }
  708. if (SePosX->Value == 0 ||
  709. SePosY->Value == 0)
  710. {
  711. Application->MessageBox(L"★발생구간(링크) 좌표값은 0이 될수 없습니다.] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  712. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  713. if (SePosX->CanFocus()) SePosX->SetFocus();
  714. return;
  715. }
  716. if (EdINCD_EXPL->Text.Trim().IsEmpty())
  717. {
  718. Application->MessageBox(L"★[돌발상황설명] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  719. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  720. if (EdINCD_EXPL->CanFocus()) EdINCD_EXPL->SetFocus();
  721. return;
  722. }
  723. if (EdINCD_TITL->Text.Trim().IsEmpty())
  724. {
  725. Application->MessageBox(L"★[돌발제목] 항목은 필수 입력 항목입니다.\r\n입력후 진행해 주세요.",
  726. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  727. if (EdINCD_TITL->CanFocus()) EdINCD_TITL->SetFocus();
  728. return;
  729. }
  730. #endif
  731. if (Application->MessageBox(L"돌발종료확인\r\n현재 입력 정보를 저장 하시겠습니까?",
  732. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  733. String sIncidentId = EdINCD_OCRR_ID->Text;
  734. TItsIncident *pObj = ItsIncidentManager->FLists.Find(sIncidentId);
  735. pObj->INCD_END_CNFM_MTHD_CD = ITSUtil_GetCode(CbINCD_END_CNFM_MTHD_CD->Text);
  736. pObj->INCD_END_DT = DtINCD_END_DT->Date.FormatString("YYYYMMDDHHNNSS");
  737. pObj->MBLZ_EQPM_CONT = EdMBLZ_EQPM_CONT->Text.Trim();
  738. pObj->MBLZ_PNUM = SeMBLZ_PNUM->Value;
  739. pObj->RECR_CONT = EdRECR_CONT->Text.Trim();
  740. pObj->RECR_PERD = SeRECR_PERD->Value;
  741. pObj->INCD_PRGR_STEP_CD = "ISS3"; // 현재는 종료단계이다.
  742. if (!ItsIncidentManager->UpdateIncidentInfo(pObj))
  743. {
  744. return;
  745. }
  746. ItsIncidentManager->UpdateVmsIncidentInfo(pObj->INCD_OCRR_ID, pObj->INCD_PRGR_STEP_CD);
  747. Application->MessageBox(FrmLang->lblDbSave->Caption.c_str(),//L"입력하신 돌발종료정보를 저장 하였습니다.",
  748. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  749. ItsIncidentManager->LoadFromDb();
  750. ItsIncidentManager->LoadFromVmsIncident();
  751. UpdateList();
  752. InitScreen();
  753. Application->ProcessMessages();
  754. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_02, 0);
  755. CMM_SetGridFocusRow(CxList, TvList, sIncidentId, Column01->Index);
  756. }
  757. //---------------------------------------------------------------------------
  758. void __fastcall TFRAMEIncidentEnd::ChkViewEndedClick(TObject *Sender)
  759. {
  760. bool bEnabled = ChkViewEnded->Checked;
  761. DtStDate->Enabled = bEnabled;
  762. DtEdDate->Enabled = bEnabled;
  763. DtStTime->Enabled = bEnabled;
  764. DtEdTime->Enabled = bEnabled;
  765. BtnSearch->Enabled = bEnabled;
  766. Label1->Enabled = bEnabled;
  767. if (false == ChkViewEnded->Checked)
  768. {
  769. UpdateList();
  770. }
  771. }
  772. //---------------------------------------------------------------------------
  773. void __fastcall TFRAMEIncidentEnd::BtnMoveGisClick(TObject *Sender)
  774. {
  775. #if 0
  776. if (EdLinkId->Text.IsEmpty()) return;
  777. g_SelLink.pForm = NULL;
  778. g_SelLink.Level = 1;
  779. g_SelLink.Id = EdLinkId->Text;
  780. POST_MSG(Application->MainForm->Handle, WM_PLUGINFORM, WP_MSG_15, LP_MSG_15);
  781. #else
  782. float sDx = SePosX->Value;
  783. float sDy = SePosY->Value;
  784. if (sDx != 0 && sDy != 0)
  785. {
  786. if (ITS00MAP) ITS00MAP->SelectObjectByPos(sDx, sDy, true);
  787. }
  788. else
  789. {
  790. if (EdLinkId->Text.IsEmpty()) return;
  791. if (ITS00MAP) ITS00MAP->SelectLinkById(1, EdLinkId->Text, true);
  792. #if 0
  793. g_SelLink.pForm = NULL;
  794. g_SelLink.Level = 1;
  795. g_SelLink.Id = EdLinkId->Text;
  796. POST_MSG(Application->MainForm->Handle, WM_PLUGINFORM, WP_MSG_15, LP_MSG_15);
  797. #endif
  798. }
  799. #endif
  800. }
  801. //---------------------------------------------------------------------------
  802. void __fastcall TFRAMEIncidentEnd::BtnSearchClick(TObject *Sender)
  803. {
  804. Application->ProcessMessages();
  805. TSqlCursor sqlCrs((TControl*)BtnSearch);
  806. FStDateTime = DtStDate->Date.FormatString("yyyymmdd") + DtStTime->Time.FormatString("hh");
  807. FEdDateTime = DtEdDate->Date.FormatString("yyyymmdd") + DtEdTime->Time.FormatString("hh");
  808. if (wcscmp(FStDateTime.c_str(), FEdDateTime.c_str()) >= 0)
  809. {
  810. Application->MessageBox(L"시작 시각이 종료 시각 보다 작거나 같습니다.", FTitle.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  811. //ActiveControl = DtStDate;
  812. return;
  813. }
  814. FStDateTime = FStDateTime + "0000";
  815. FEdDateTime = FEdDateTime + "5959";
  816. UpdateList();
  817. }
  818. //---------------------------------------------------------------------------
  819. void __fastcall TFRAMEIncidentEnd::BtnVmsTargetClick(TObject *Sender)
  820. {
  821. if (!ChkVMS_DSPL_YN->Checked) return;
  822. if (FLinkId == "") return;
  823. try
  824. {
  825. if (FrmIncidVmsInfo == NULL)
  826. {
  827. FrmIncidVmsInfo = new TFrmIncidVmsInfo(Application);
  828. }
  829. FrmIncidVmsInfo->Show();
  830. FrmIncidVmsInfo->ShowIncidVmsInfo(FLinkId);
  831. }
  832. catch(...)
  833. {
  834. }
  835. }
  836. //---------------------------------------------------------------------------