PIS0010MF.cpp 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "CDSCodeF.h"
  7. #include "CDSFacilityF.h"
  8. #pragma hdrstop
  9. #include "PIS0010MF.h"
  10. //---------------------------------------------------------------------------
  11. #pragma package(smart_init)
  12. #pragma link "cxButtons"
  13. #pragma link "cxCheckBox"
  14. #pragma link "cxClasses"
  15. #pragma link "cxContainer"
  16. #pragma link "cxControls"
  17. #pragma link "cxCustomData"
  18. #pragma link "cxData"
  19. #pragma link "cxDataStorage"
  20. #pragma link "cxDropDownEdit"
  21. #pragma link "cxEdit"
  22. #pragma link "cxFilter"
  23. #pragma link "cxGraphics"
  24. #pragma link "cxGrid"
  25. #pragma link "cxGridCustomTableView"
  26. #pragma link "cxGridCustomView"
  27. #pragma link "cxGridLevel"
  28. #pragma link "cxGridTableView"
  29. #pragma link "cxGroupBox"
  30. #pragma link "cxLabel"
  31. #pragma link "cxLookAndFeelPainters"
  32. #pragma link "cxLookAndFeels"
  33. #pragma link "cxMaskEdit"
  34. #pragma link "cxSpinEdit"
  35. #pragma link "cxSplitter"
  36. #pragma link "cxStyles"
  37. #pragma link "cxTextEdit"
  38. #pragma link "cxTimeEdit"
  39. #pragma link "dxSkinBlack"
  40. #pragma link "dxSkinBlue"
  41. #pragma link "dxSkinsCore"
  42. #pragma link "dxSkinscxPCPainter"
  43. #pragma link "FRAME_FlashMapF"
  44. #pragma link "FRAME_ParkingListF"
  45. #pragma resource "*.dfm"
  46. TPIS0010M *PIS0010M = NULL;
  47. //---------------------------------------------------------------------------
  48. void TPIS0010M_FlashCall(TObject *ASender, const WideString request)
  49. {
  50. try
  51. {
  52. if (!PIS0010M) return;
  53. PIS0010M->ShockwaveFlash1FlashCall1(ASender, request);
  54. }
  55. catch(Exception &exception)
  56. {
  57. }
  58. }
  59. //---------------------------------------------------------------------------
  60. __fastcall TPIS0010M::TPIS0010M(TComponent* Owner)
  61. : TForm(Owner)
  62. {
  63. ITSSkin_Load(this);
  64. CMM_LoadForm(g_sFormsDir, this);
  65. FUpdate= false;
  66. FTitle = "주차장 관리";
  67. #ifndef USE_PARK_REAL
  68. ImgDesc27->Visible = false;
  69. cxLabel16->Visible = false;
  70. REAL_DATA_YN->Visible = false;
  71. #endif
  72. MapStart = false;
  73. FRAMEGisMap1->FlashCallbackFunc = TPIS0010M_FlashCall;
  74. FRAMEGisMap1->DrawMode = 1; //구간정보표출
  75. FRAMEGisMap1->ImgPan->Visible = true;
  76. FRAMEGisMap1->ImgZoomIn->Visible = true;
  77. FRAMEGisMap1->ImgZoomOut->Visible = true;
  78. FRAMEGisMap1->ImgSel->Visible = true;
  79. FRAMEGisMap1->ImgStnd->Visible = true;
  80. FRAMEGisMap1->ImgRefresh->Visible = true;
  81. FRAMEGisMap1->LbDef->Caption = "(선택메뉴를 클릭하여 위치를 선택합니다.)";
  82. FRAMEGisMap1->LbDef->Hint = FRAMEGisMap1->LbDef->Caption;
  83. FRAMEGisMap1->LbDef->Visible = true;
  84. FRAMEParkingList1->PnlTop->Visible = false;
  85. FRAMEParkingList1->PnlBottom->Visible = false;
  86. FRAMEParkingList1->ColumnSel->Visible = false;
  87. FRAMEParkingList1->Column02->Visible = true;
  88. FRAMEParkingList1->Column03->Visible = true;
  89. FRAMEParkingList1->Column05->Visible = true;
  90. FRAMEParkingList1->Column06->Visible = true;
  91. FRAMEParkingList1->Column07->Visible = true;
  92. FRAMEParkingList1->Column08->Visible = true;
  93. FRAMEParkingList1->Column09->Visible = true;
  94. FRAMEParkingList1->Column10->Visible = true;
  95. FRAMEParkingList1->Column13->Visible = true;
  96. m_pGDC = FRAMEParkingList1->TvList->DataController;
  97. TvLink->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<주차장 층정보>";
  98. }
  99. //---------------------------------------------------------------------------
  100. /*
  101. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  102. * Form과 DataModule class를 delete시킨다.
  103. * arguments
  104. *
  105. * return
  106. * void
  107. */
  108. void __fastcall TPIS0010M::CommClose()
  109. {
  110. try
  111. {
  112. CMM_SaveForm(g_sFormsDir, this);
  113. }
  114. catch(...)
  115. {
  116. }
  117. }
  118. //---------------------------------------------------------------------------
  119. /*
  120. * Form을 보여줄때 호출되는 event 메서드이다.
  121. * arguments
  122. * Sender : event handler 객체
  123. * return
  124. * void
  125. */
  126. void __fastcall TPIS0010M::FormShow(TObject *Sender)
  127. {
  128. Refresh();
  129. TcxComboBox *pCombo = PRLT_OPER_DVSN_CD;
  130. pCombo->Properties->Items->Clear();
  131. TItsCode *pCode = ItsCodeManager->FLists.Find("POT");
  132. if (pCode)
  133. {
  134. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  135. {
  136. if (pSubCode->USE_YN == "N") continue;
  137. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  138. }
  139. }
  140. pCombo->ItemIndex = 0;
  141. pCombo = PRLT_TYPE_DVSN_CD;
  142. pCombo->Properties->Items->Clear();
  143. pCode = ItsCodeManager->FLists.Find("PFT");
  144. if (pCode)
  145. {
  146. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  147. {
  148. if (pSubCode->USE_YN == "N") continue;
  149. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  150. }
  151. }
  152. pCombo->ItemIndex = 0;
  153. pCombo = PARK_NDSY_CD;
  154. pCombo->Properties->Items->Clear();
  155. pCode = ItsCodeManager->FLists.Find("PND");
  156. if (pCode)
  157. {
  158. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  159. {
  160. if (pSubCode->USE_YN == "N") continue;
  161. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  162. }
  163. }
  164. pCombo->ItemIndex = 0;
  165. pCombo = PARK_OPER_DAY_CD;
  166. pCombo->Properties->Items->Clear();
  167. pCode = ItsCodeManager->FLists.Find("POD");
  168. if (pCode)
  169. {
  170. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  171. {
  172. if (pSubCode->USE_YN == "N") continue;
  173. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  174. }
  175. }
  176. pCombo->ItemIndex = 0;
  177. pCombo = PARK_OPDR_CD;
  178. pCombo->Properties->Items->Clear();
  179. pCode = ItsCodeManager->FLists.Find("POP");
  180. if (pCode)
  181. {
  182. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  183. {
  184. if (pSubCode->USE_YN == "N") continue;
  185. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  186. }
  187. }
  188. pCombo->ItemIndex = 0;
  189. pCombo = PARK_FARE_IMPS_CD;
  190. pCombo->Properties->Items->Clear();
  191. pCode = ItsCodeManager->FLists.Find("PFS");
  192. if (pCode)
  193. {
  194. FOR_STL(TItsSubCode *, pSubCode, pCode->FSubLists)
  195. {
  196. if (pSubCode->USE_YN == "N") continue;
  197. pCombo->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  198. }
  199. }
  200. pCombo->ItemIndex = 0;
  201. FormInit();
  202. ChangeEditMode(1);
  203. TmrShow->Enabled = true;
  204. }
  205. //---------------------------------------------------------------------------
  206. /*
  207. * form 초기화
  208. *
  209. * arguments
  210. *
  211. * return
  212. * void
  213. */
  214. void __fastcall TPIS0010M::FormInit()
  215. {
  216. EdId->Text = "";
  217. CTLR_MNGM_NMBR->Text = "";
  218. CTLR_MNGM_NM->Text = "";
  219. ISTL_LCTN_ADDR->Text = "";
  220. TRMN_IP->Text = "";
  221. TRMN_PORT->Text = "";
  222. PRLT_MNGM_INTN_NM->Text = "";
  223. PRLT_MNGM_INTN_TEL->Text = "";
  224. X_CRDN->Value = 0;
  225. Y_CRDN->Value = 0;
  226. CTLR_CLCT_CYCL->Value = 0;
  227. CTLR_STTS_CYCL->Value = 0;
  228. WHOL_NPLS->Value = 0;
  229. PRLT_OPER_DVSN_CD->ItemIndex = 0;
  230. PRLT_TYPE_DVSN_CD->ItemIndex = 0;
  231. VALD_YN->ItemIndex = 0;
  232. REAL_DATA_YN->ItemIndex = 1;
  233. PARK_NDSY_CD->ItemIndex = 0;
  234. PARK_OPER_DAY_CD->ItemIndex = 0;
  235. PARK_OPDR_CD->ItemIndex = 0;
  236. PARK_FARE_IMPS_CD->ItemIndex = 0;
  237. PARK_APNT_OFFR_YN->ItemIndex = 0;
  238. PARK_WKDY_STRT_HH->Clear();
  239. PARK_WKDY_STRT_HH->EditValue = Now().FormatString("hh:nn");
  240. PARK_WKDY_STRT_HH->EditValue = "00:00";
  241. PARK_WKDY_END_HH->Clear();
  242. PARK_WKDY_END_HH->EditValue = Now().FormatString("hh:nn");
  243. PARK_WKDY_END_HH->EditValue = "00:00";
  244. PARK_LHDY_STRT_HH->Clear();
  245. PARK_LHDY_STRT_HH->EditValue = Now().FormatString("hh:nn");
  246. PARK_LHDY_STRT_HH->EditValue = "00:00";
  247. PARK_LHDY_END_HH->Clear();
  248. PARK_LHDY_END_HH->EditValue = Now().FormatString("hh:nn");
  249. PARK_LHDY_END_HH->EditValue = "00:00";
  250. CMM_ClearGridTableView(TvLink);
  251. FNewDb = false;
  252. }
  253. //---------------------------------------------------------------------------
  254. /*
  255. * Form이 Show되고 난 후 최초 1회 수행되는 타이머 이벤트
  256. * arguments
  257. * Sender : event handler 객체
  258. * return
  259. * void
  260. */
  261. void __fastcall TPIS0010M::TmrShowTimer(TObject *Sender)
  262. {
  263. TmrShow->Enabled = false;
  264. FRAMEGisMap1->LinkLevel = 1;
  265. FRAMEGisMap1->LoadGisMap();
  266. FRAMEParkingList1->UpdateList();
  267. }
  268. //---------------------------------------------------------------------------
  269. /*
  270. * Close 버튼 클릭 이벤트 핸들러
  271. * arguments
  272. * Sender : event handler 객체
  273. * return
  274. * void
  275. */
  276. void __fastcall TPIS0010M::BtnCloseClick(TObject *Sender)
  277. {
  278. Close();
  279. }
  280. //---------------------------------------------------------------------------
  281. void __fastcall TPIS0010M::FormClose(TObject *Sender, TCloseAction &Action)
  282. {
  283. CommClose();
  284. PIS0010M = NULL;
  285. Action = caFree;
  286. }
  287. //---------------------------------------------------------------------------
  288. void __fastcall TPIS0010M::FormCloseQuery(TObject *Sender, bool &CanClose)
  289. {
  290. if (FUpdate)
  291. {
  292. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  293. }
  294. FRAMEParkingList1->OnCloseQuery(CanClose);
  295. }
  296. //---------------------------------------------------------------------------
  297. void __fastcall TPIS0010M::DisplayInfo(TItsParking* AObj)
  298. {
  299. FormInit();
  300. if (!AObj) return;
  301. ItsParkingManager->SelParkingFloors(AObj);
  302. CMM_ClearGridTableView(TvLink);
  303. try
  304. {
  305. int nRow;
  306. TvLink->BeginUpdate();
  307. for(int ii = 0; ii < AObj->Floors; ii++)
  308. {
  309. nRow = TvLink->DataController->AppendRecord();
  310. TvLink->DataController->Values[nRow][ColLink2->Index] = AObj->FLOR_NMBR[ii];
  311. TvLink->DataController->Values[nRow][ColLink3->Index] = AObj->FLOR_NM[ii];
  312. }
  313. }
  314. __finally
  315. {
  316. TvLink->EndUpdate();
  317. }
  318. EdId->Text = AObj->CTLR_MNGM_NMBR;
  319. CTLR_MNGM_NMBR->Text = AObj->CTLR_MNGM_NMBR;
  320. CTLR_MNGM_NM->Text = AObj->CTLR_MNGM_NM;
  321. ISTL_LCTN_ADDR->Text = AObj->ISTL_LCTN_ADDR;
  322. TRMN_IP->Text = AObj->TRMN_IP;
  323. TRMN_PORT->Text = AObj->TRMN_PORT;
  324. PRLT_MNGM_INTN_NM->Text = AObj->PRLT_MNGM_INTN_NM;
  325. PRLT_MNGM_INTN_TEL->Text = AObj->PRLT_MNGM_INTN_TEL;
  326. X_CRDN->Value = StrToFloatDef(AObj->X_CRDN, 0);
  327. Y_CRDN->Value = StrToFloatDef(AObj->Y_CRDN, 0);
  328. CTLR_CLCT_CYCL->Value = AObj->CTLR_CLCT_CYCL.ToIntDef(0);
  329. CTLR_STTS_CYCL->Value = AObj->CTLR_STTS_CYCL.ToIntDef(0);
  330. WHOL_NPLS->Value = AObj->WHOL_NPLS.ToIntDef(0);
  331. CMM_SetComboBoxItem(PRLT_OPER_DVSN_CD, AObj->PRLT_OPER_DVSN_CD);
  332. CMM_SetComboBoxItem(PRLT_TYPE_DVSN_CD, AObj->PRLT_TYPE_DVSN_CD);
  333. CMM_SetComboBoxItem(VALD_YN, AObj->VALD_YN);
  334. CMM_SetComboBoxItem(REAL_DATA_YN, AObj->REAL_DATA_YN);
  335. CMM_SetComboBoxItem(PARK_NDSY_CD, AObj->PARK_NDSY_CD);
  336. CMM_SetComboBoxItem(PARK_OPER_DAY_CD, AObj->PARK_OPER_DAY_CD);
  337. CMM_SetComboBoxItem(PARK_OPDR_CD, AObj->PARK_OPDR_CD);
  338. CMM_SetComboBoxItem(PARK_FARE_IMPS_CD, AObj->PARK_FARE_IMPS_CD);
  339. CMM_SetComboBoxItem(PARK_APNT_OFFR_YN, AObj->PARK_APNT_OFFR_YN);
  340. try
  341. {
  342. if (AObj->PARK_WKDY_STRT_HH.Length() >= 4) // 전팡관ON시각
  343. {
  344. String sTmp = AObj->PARK_WKDY_STRT_HH.SubString(1, 4);
  345. sTmp.Insert(":", 3);
  346. PARK_WKDY_STRT_HH->EditValue = sTmp;
  347. }
  348. }
  349. catch(Exception &e)
  350. {
  351. }
  352. try
  353. {
  354. if (AObj->PARK_WKDY_END_HH.Length() >= 4) // 전팡관ON시각
  355. {
  356. String sTmp = AObj->PARK_WKDY_END_HH.SubString(1, 4);
  357. sTmp.Insert(":", 3);
  358. PARK_WKDY_END_HH->EditValue = sTmp;
  359. }
  360. }
  361. catch(Exception &e)
  362. {
  363. }
  364. try
  365. {
  366. if (AObj->PARK_LHDY_STRT_HH.Length() >= 4) // 전팡관ON시각
  367. {
  368. String sTmp = AObj->PARK_LHDY_STRT_HH.SubString(1, 4);
  369. sTmp.Insert(":", 3);
  370. PARK_LHDY_STRT_HH->EditValue = sTmp;
  371. }
  372. }
  373. catch(Exception &e)
  374. {
  375. }
  376. try
  377. {
  378. if (AObj->PARK_LHDY_END_HH.Length() >= 4) // 전팡관ON시각
  379. {
  380. String sTmp = AObj->PARK_LHDY_END_HH.SubString(1, 4);
  381. sTmp.Insert(":", 3);
  382. PARK_LHDY_END_HH->EditValue = sTmp;
  383. }
  384. }
  385. catch(Exception &e)
  386. {
  387. }
  388. FRAMEGisMap1->SelectObjectByPos(X_CRDN->Value, Y_CRDN->Value, true);
  389. ChangeEditMode(3);
  390. }
  391. //---------------------------------------------------------------------------
  392. void __fastcall TPIS0010M::UpdateParkingIcon()
  393. {
  394. if (!MapStart) return;
  395. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "RemoveFacility", FAC_PARK);
  396. TItsFacility *pFacility;
  397. try
  398. {
  399. //if (ChkViewIcon->Checked)
  400. {
  401. String sObjList = "";
  402. try
  403. {
  404. ItsFacilityManager->FParkLists.Lock();
  405. FOR_STL(TItsParking*, pObj, ItsFacilityManager->FParkLists)
  406. {
  407. if (pObj->DEL_YN != "N") continue;
  408. String sLoc = TCommFlash::ReplaceName(pObj->CTLR_MNGM_NM);
  409. sObjList += (pObj->CTLR_MNGM_NMBR + "," + "0," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->CTLR_MNGM_NMBR + "|");
  410. }
  411. }
  412. __finally
  413. {
  414. ItsFacilityManager->FParkLists.UnLock();
  415. if (sObjList != "")
  416. {
  417. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  418. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "AddFacility", FAC_PARK + "|" + sObjList);
  419. }
  420. }
  421. }
  422. }
  423. catch(...)
  424. {
  425. }
  426. }
  427. //---------------------------------------------------------------------------
  428. void __fastcall TPIS0010M::FRAMEParkingList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  429. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  430. {
  431. if (!ACellViewInfo) return;
  432. int nRow = FRAMEParkingList1->TvList->DataController->FocusedRecordIndex;
  433. if( nRow <= -1 )
  434. return;
  435. int nMemPtr = FRAMEParkingList1->TvList->DataController->Values[nRow][FRAMEParkingList1->Column99->Index];
  436. TItsParking* pObj = (TItsParking*)nMemPtr;
  437. DisplayInfo(pObj);
  438. }
  439. //---------------------------------------------------------------------------
  440. void __fastcall TPIS0010M::ChkViewIconClick(TObject *Sender)
  441. {
  442. if (!MapStart) return;
  443. String sShowIcon = ChkViewIcon->Checked ? "1" : "0";
  444. String sShowName = ChkViewName->Checked ? "1" : "0";
  445. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "ShowFacility", "PARK|" + sShowIcon + "|" + sShowName);
  446. }
  447. //---------------------------------------------------------------------------
  448. void __fastcall TPIS0010M::BtnEditClick(TObject *Sender)
  449. {
  450. if (BtnEdit->Caption == "편집")
  451. {
  452. ChangeEditMode(0);
  453. FNewDb = false;
  454. }
  455. else
  456. {
  457. String sId = EdId->Text;
  458. ChangeEditMode(1);
  459. TItsParking *pObj = ItsFacilityManager->FParkLists.Find(sId);
  460. if (pObj)
  461. {
  462. CMM_SetGridRow(FRAMEParkingList1->CxList, FRAMEParkingList1->TvList, sId, FRAMEParkingList1->Column01->Index);
  463. DisplayInfo(pObj);
  464. }
  465. }
  466. }
  467. //---------------------------------------------------------------------------
  468. void __fastcall TPIS0010M::ChangeEditMode(int AEdit)
  469. {
  470. bool bEnabled = false;
  471. switch(AEdit)
  472. {
  473. case 0: //편집버튼클릭
  474. {
  475. BtnEdit->Enabled = true;
  476. BtnInsert->Enabled = false;
  477. BtnDelete->Enabled = false;
  478. BtnSave->Enabled = true;
  479. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  480. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  481. }
  482. break;
  483. case 1: //편집[취소]버튼클릭
  484. {
  485. FormInit(); //화면을 모두 지운다.
  486. BtnEdit->Enabled = false;
  487. BtnInsert->Enabled = true;
  488. BtnDelete->Enabled = false;
  489. BtnSave->Enabled = false;
  490. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  491. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  492. bEnabled = true;
  493. }
  494. break;
  495. case 2: //추가
  496. {
  497. BtnEdit->Enabled = true;
  498. BtnInsert->Enabled = false;
  499. BtnDelete->Enabled = false;
  500. BtnSave->Enabled = true;
  501. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  502. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  503. }
  504. break;
  505. case 3: //수정모드
  506. {
  507. BtnEdit->Enabled = true;
  508. BtnInsert->Enabled = true;
  509. BtnDelete->Enabled = true;
  510. BtnSave->Enabled = false;
  511. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  512. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  513. bEnabled = true;
  514. }
  515. break;
  516. }
  517. if (AEdit == 0 || AEdit == 2)
  518. {
  519. FRAMEParkingList1->CxList->Enabled = false;
  520. GrpInfo->Enabled = true;
  521. }
  522. else
  523. {
  524. FRAMEParkingList1->CxList->Enabled = true;
  525. GrpInfo->Enabled = false;
  526. }
  527. }
  528. //---------------------------------------------------------------------------
  529. void __fastcall TPIS0010M::BtnInsertClick(TObject *Sender)
  530. {
  531. FormInit();
  532. //신규아이디를 얻어와서 화면을 초기화한다.
  533. String sId;
  534. #if 0
  535. if (!ItsParkingManager->GetNextParkingId(sId))
  536. {
  537. Application->MessageBox(L"새로운 주차장ID를 생성하지 못하였습니다.\r\n프로그램 종료후에 다시 시도해 보세요.",
  538. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  539. return;
  540. }
  541. #else
  542. sId = InputBox("주차장ID", "신규 주차장ID를 입력하세요(10Byte).", "주차장ID" );
  543. sId = sId.Trim();
  544. if (sId == "주차장ID" || sId == "")
  545. {
  546. return;
  547. }
  548. if (AnsiString(sId).Length() > 10)
  549. {
  550. Application->MessageBox(L"주차장ID는 10Byte를 초과할 수 없습니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  551. return;
  552. }
  553. TItsParking *pDb = (TItsParking *)ItsFacilityManager->FParkLists.Find(sId);
  554. if (pDb)
  555. {
  556. String sErr = FrmLang->lbIdErr->Caption + "[" + sId + "]";
  557. Application->MessageBox(sErr.c_str(),//("[" + sId + "]는 사용할 수 없는 주차장ID 입니다.").c_str(),
  558. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  559. return;
  560. }
  561. #endif
  562. EdId->Text = sId;
  563. CTLR_MNGM_NMBR->Text = sId;
  564. ChangeEditMode(2);
  565. FNewDb = true;
  566. }
  567. //---------------------------------------------------------------------------
  568. void __fastcall TPIS0010M::BtnDeleteClick(TObject *Sender)
  569. {
  570. if (!MapStart) return;
  571. int nIdx = m_pGDC->FocusedRecordIndex;
  572. if (nIdx < 0) return;
  573. String sId = EdId->Text;
  574. if (sId.IsEmpty())
  575. {
  576. Application->MessageBox(L"삭제할 주차장정보를 목록에서 선택하세요.\r\n목록에서 더블클릭하여 선택합니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  577. return;
  578. }
  579. String sMsg;
  580. sMsg = "ID: " + sId;
  581. sMsg+= "\r\n선택하신 주차장 정보를 삭제하시겠습니까?";
  582. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  583. TItsParking *pObj = ItsFacilityManager->FParkLists.Find(sId);
  584. if (pObj)
  585. {
  586. pObj->DEL_USER_ID = g_pLOGIN->sUserId; //변경자 명
  587. pObj->DEL_DT = Now().FormatString("yyyymmddhhnnss"); //변경 일시
  588. if (ItsParkingManager->DeleteParking(pObj))
  589. {
  590. pObj->DEL_YN = "Y";
  591. FRAMEParkingList1->UpdateList();
  592. }
  593. TItsFacility *pFacility = ItsFacilityManager->FLists.Find(sId);
  594. if (pFacility)
  595. {
  596. FUpdate = true;
  597. }
  598. FUpdate = true;
  599. Application->MessageBox(L"주차장 정보삭제\r\n주차장 정보를 삭제 하였습니다.",
  600. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  601. FormInit();
  602. ChangeEditMode(1);
  603. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "DeleteFacility", FAC_PARK + "|" + sId);
  604. }
  605. }
  606. //---------------------------------------------------------------------------
  607. void __fastcall TPIS0010M::BtnSaveClick(TObject *Sender)
  608. {
  609. if (EdId->Text.IsEmpty() ||
  610. CTLR_MNGM_NM->Text.Trim().IsEmpty()||
  611. X_CRDN->Value == 0 ||
  612. Y_CRDN->Value == 0 ||
  613. VALD_YN->ItemIndex < 0 ||
  614. REAL_DATA_YN->ItemIndex < 0 )
  615. {
  616. Application->MessageBox(L"★항목은 필수 입력 항목입니다.\r\n모두 입력후 진행해 주세요.",
  617. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  618. return;
  619. }
  620. String sId = EdId->Text;
  621. TItsParking *pObj;
  622. if (FNewDb)
  623. pObj = new TItsParking();
  624. else
  625. pObj = ItsFacilityManager->FParkLists.Find(sId);
  626. if (pObj)
  627. {
  628. pObj->CTLR_MNGM_NMBR = sId;
  629. pObj->PRLT_OPER_DVSN_CD = APP_GetCode(PRLT_OPER_DVSN_CD);
  630. pObj->PRLT_TYPE_DVSN_CD = APP_GetCode(PRLT_TYPE_DVSN_CD);
  631. pObj->VALD_YN = APP_GetCode(VALD_YN);
  632. pObj->REAL_DATA_YN = APP_GetCode(REAL_DATA_YN);
  633. pObj->X_CRDN = VarToStr(X_CRDN->Value);
  634. pObj->Y_CRDN = VarToStr(Y_CRDN->Value);
  635. pObj->CTLR_MNGM_NM = CTLR_MNGM_NM->Text.Trim();
  636. pObj->ISTL_LCTN_ADDR = ISTL_LCTN_ADDR->Text.Trim();
  637. pObj->TRMN_IP = TRMN_IP->Text.Trim();
  638. pObj->TRMN_PORT = TRMN_PORT->Text.Trim();
  639. pObj->CTLR_CLCT_CYCL = VarToStr(CTLR_CLCT_CYCL->Value);
  640. pObj->CTLR_STTS_CYCL = VarToStr(CTLR_STTS_CYCL->Value);
  641. pObj->WHOL_NPLS = VarToStr(WHOL_NPLS->Value);
  642. pObj->PRLT_MNGM_INTN_NM = PRLT_MNGM_INTN_NM->Text.Trim();
  643. pObj->PRLT_MNGM_INTN_TEL = PRLT_MNGM_INTN_TEL->Text.Trim();
  644. pObj->PARK_NDSY_CD = APP_GetCode(PARK_NDSY_CD);
  645. pObj->PARK_OPER_DAY_CD = APP_GetCode(PARK_OPER_DAY_CD);
  646. pObj->PARK_WKDY_STRT_HH = PARK_WKDY_STRT_HH->Time.FormatString("HHNN")+"00";
  647. pObj->PARK_WKDY_END_HH = PARK_WKDY_END_HH->Time.FormatString("HHNN")+"00";
  648. pObj->PARK_LHDY_STRT_HH = PARK_LHDY_STRT_HH->Time.FormatString("HHNN")+"00";
  649. pObj->PARK_LHDY_END_HH = PARK_LHDY_END_HH->Time.FormatString("HHNN")+"00";
  650. pObj->PARK_OPDR_CD = APP_GetCode(PARK_OPDR_CD);
  651. pObj->PARK_FARE_IMPS_CD = APP_GetCode(PARK_FARE_IMPS_CD);
  652. pObj->PARK_APNT_OFFR_YN = APP_GetCode(PARK_APNT_OFFR_YN);
  653. pObj->DEL_YN = "N";
  654. pObj->Floors = 0;
  655. try {
  656. TvLink->BeginUpdate();
  657. for (int ii = 0; ii < TvLink->DataController->RecordCount; ii++)
  658. {
  659. String sNmbr = VarToStr(TvLink->DataController->Values[ii][ColLink2->Index]);
  660. String sNm = VarToStr(TvLink->DataController->Values[ii][ColLink3->Index]);
  661. if (sNmbr == "") continue;
  662. pObj->FLOR_NMBR[pObj->Floors] = sNmbr;
  663. pObj->FLOR_NM[pObj->Floors] = sNm;
  664. pObj->Floors++;
  665. if (pObj->Floors >= MAX_PARKING_FLOOR)
  666. {
  667. break;
  668. }
  669. }
  670. }
  671. __finally
  672. {
  673. TvLink->EndUpdate();
  674. }
  675. bool bResult;
  676. if (FNewDb)
  677. {
  678. pObj->ADTN_USER_ID = g_pLOGIN->sUserId; //변경자 명
  679. pObj->ADTN_DT = Now().FormatString("yyyymmddhhnnss"); //변경 일시
  680. bResult = ItsParkingManager->InsertParking(pObj);
  681. if (bResult)
  682. {
  683. ItsFacilityManager->FParkLists.Push(sId, pObj);
  684. }
  685. }
  686. else
  687. {
  688. pObj->CHNG_USER_ID = g_pLOGIN->sUserId; //변경자 명
  689. pObj->CHNG_DT = Now().FormatString("yyyymmddhhnnss"); //변경 일시
  690. bResult = ItsParkingManager->UpdateParking(pObj);
  691. }
  692. if (bResult)
  693. {
  694. Application->MessageBox(FrmLang->lblDbSave->Caption.c_str(),//L"주차장 정보저장\r\n주차장 정보를 저장 하였습니다.",
  695. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  696. FUpdate = true;
  697. FRAMEParkingList1->UpdateList();
  698. UpdateParkingIcon();
  699. CMM_SetGridRow(FRAMEParkingList1->CxList, FRAMEParkingList1->TvList, sId, FRAMEParkingList1->Column01->Index);
  700. DisplayInfo(pObj);
  701. }
  702. }
  703. }
  704. //---------------------------------------------------------------------------
  705. void __fastcall TPIS0010M::ShockwaveFlash1FlashCall1(TObject *ASender, const WideString request)
  706. {
  707. try
  708. {
  709. String sTemp;
  710. String sFunc;
  711. String sArgs;
  712. sTemp = request;
  713. int nFuncStrIdx = sTemp.Pos("\"");
  714. int nFuncEndIdx = sTemp.Pos("\" returntype");
  715. int nArgsStrIdx = sTemp.Pos("string>");
  716. int nArgsEndIdx = sTemp.Pos("</string");
  717. sFunc = sTemp.SubString(nFuncStrIdx + 1, nFuncEndIdx - (nFuncStrIdx + 1));
  718. sArgs = sTemp.SubString(nArgsStrIdx + 7, nArgsEndIdx - (nArgsStrIdx + 7));
  719. if (sFunc == "OnMapStart")
  720. {
  721. String sShowIcon = ChkViewIcon->Checked ? "1" : "0";
  722. String sShowName = ChkViewName->Checked ? "1" : "0";
  723. MapStart = true;
  724. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "ShowFacility", "PARK|" + sShowIcon + "|" + sShowName);
  725. }
  726. else
  727. if (sFunc == "OnDrawTrafLink")
  728. {
  729. static bool bFirst = true;
  730. if (bFirst)
  731. {
  732. UpdateParkingIcon();
  733. bFirst = true;
  734. }
  735. }
  736. else
  737. if (sFunc == "OnMousePos")
  738. {
  739. if (FRAMEGisMap1->ModeSelect)
  740. {
  741. TStringList *pStringList = new TStringList;
  742. pStringList->CommaText = sArgs;
  743. String sMapX = pStringList->Strings[0]; //lat
  744. String sMapY = pStringList->Strings[1]; //lng
  745. delete pStringList;
  746. try {
  747. X_CRDN->Value = sMapX.ToDouble();
  748. Y_CRDN->Value = sMapY.ToDouble();
  749. } catch(...) {}
  750. }
  751. }
  752. else
  753. if (sFunc == "OnSelLink")
  754. {
  755. if (FRAMEGisMap1->ModeSelect)
  756. {
  757. TStringList *pStringList = new TStringList;
  758. pStringList->CommaText = sArgs;
  759. String sLevl = pStringList->Strings[0]; //링크레벨
  760. String sId = pStringList->Strings[1]; //링크아이디
  761. String sZoom = pStringList->Strings[2]; //줌레벨
  762. String sPosX = pStringList->Strings[3]; //x
  763. String sPosY = pStringList->Strings[4]; //y
  764. String sMapX = pStringList->Strings[5]; //lat
  765. String sMapY = pStringList->Strings[6]; //lng
  766. delete pStringList;
  767. try {
  768. X_CRDN->Value = sMapX.ToDouble();
  769. Y_CRDN->Value = sMapY.ToDouble();
  770. } catch(...) {}
  771. }
  772. }
  773. else
  774. if (sFunc == "OnClickFacility")
  775. {
  776. TStringList *pStringList = new TStringList;
  777. pStringList->CommaText = sArgs;
  778. String sType = pStringList->Strings[0]; //유형
  779. String sId = pStringList->Strings[1]; //아이디
  780. String sName = pStringList->Strings[2]; //아이디
  781. delete pStringList;
  782. }
  783. }
  784. catch(Exception &exception)
  785. {
  786. }
  787. }
  788. //---------------------------------------------------------------------------
  789. void __fastcall TPIS0010M::BtnListDeleteClick(TObject *Sender)
  790. {
  791. int nSelRows = TvLink->Controller->SelectedRowCount;
  792. if (nSelRows <= 0)
  793. {
  794. Application->MessageBox(L"삭제를 원하는 주차장 층을 목록에서 선택하세요.",
  795. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  796. return;
  797. }
  798. TvLink->Controller->DeleteSelection();
  799. }
  800. //---------------------------------------------------------------------------
  801. bool __fastcall TPIS0010M::FindParkingFloor(String ANmbr)
  802. {
  803. try {
  804. TvLink->BeginUpdate();
  805. for (int ii = 0; ii < TvLink->DataController->RecordCount; ii++)
  806. {
  807. String sNmbr = VarToStr(TvLink->DataController->Values[ii][ColLink2->Index]);
  808. if (sNmbr == "") continue;
  809. if (sNmbr == ANmbr) return true;
  810. }
  811. }
  812. __finally
  813. {
  814. TvLink->EndUpdate();
  815. }
  816. return false;
  817. }
  818. //---------------------------------------------------------------------------
  819. void __fastcall TPIS0010M::BtnListAddClick(TObject *Sender)
  820. {
  821. String sId = InputBox("층번호", "신규 주차장 층번호를 입력하세요(최대 20Byte).", "층번호" );
  822. sId = sId.Trim();
  823. if (sId == "층번호" || sId == "")
  824. {
  825. return;
  826. }
  827. if (AnsiString(sId).Length() > 20)
  828. {
  829. Application->MessageBox(L"주차장 층번호는 20Byte를 초과할 수 없습니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  830. return;
  831. }
  832. if (FindParkingFloor(sId))
  833. {
  834. Application->MessageBox(L"이미 등록되어 있는 층번호 입니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  835. return;
  836. }
  837. int nRow = TvLink->DataController->AppendRecord();
  838. TvLink->DataController->Values[nRow][ColLink2->Index] = sId;
  839. }
  840. //---------------------------------------------------------------------------
  841. void __fastcall TPIS0010M::TRMN_PORTKeyPress(TObject *Sender, wchar_t &Key)
  842. {
  843. if (Key > '9' || Key < '0')
  844. {
  845. if (Key != VK_BACK && Key != VK_TAB && Key != '-')
  846. Key = 0;
  847. }
  848. }
  849. //---------------------------------------------------------------------------