CRSM100MF.cpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "ITSLangTransF.h"
  7. #include "ITSMapF.h"
  8. #include "WindowMsgF.h"
  9. #include "ITS_OPLibF.h"
  10. #pragma hdrstop
  11. #include "CRSM100MF.h"
  12. #include "VDSM101MF.h"
  13. //---------------------------------------------------------------------------
  14. #pragma package(smart_init)
  15. #pragma link "cxButtons"
  16. #pragma link "cxClasses"
  17. #pragma link "cxContainer"
  18. #pragma link "cxControls"
  19. #pragma link "cxCustomData"
  20. #pragma link "cxData"
  21. #pragma link "cxDataStorage"
  22. #pragma link "cxDropDownEdit"
  23. #pragma link "cxEdit"
  24. #pragma link "cxFilter"
  25. #pragma link "cxGraphics"
  26. #pragma link "cxGrid"
  27. #pragma link "cxGridCustomTableView"
  28. #pragma link "cxGridCustomView"
  29. #pragma link "cxGridLevel"
  30. #pragma link "cxGridTableView"
  31. #pragma link "cxGroupBox"
  32. #pragma link "cxLabel"
  33. #pragma link "cxLookAndFeelPainters"
  34. #pragma link "cxLookAndFeels"
  35. #pragma link "cxMaskEdit"
  36. #pragma link "cxSpinEdit"
  37. #pragma link "cxSplitter"
  38. #pragma link "cxStyles"
  39. #pragma link "cxTextEdit"
  40. #pragma link "dxSkinBlue"
  41. #pragma link "dxSkinsCore"
  42. #pragma link "dxSkinscxPCPainter"
  43. #pragma link "FRAME_OpenMapF"
  44. #pragma link "FRAME_CrsListF"
  45. #pragma link "dxSkinBlack"
  46. #pragma link "dxSkinMcSkin"
  47. #pragma resource "*.dfm"
  48. TCRSM100M *CRSM100M = NULL;
  49. //---------------------------------------------------------------------------
  50. void TCRSM100M_MapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst)
  51. {
  52. try
  53. {
  54. if (!CRSM100M) return;
  55. CRSM100M->OpenMapCallback(ASender, AFunc, AArgs, AFirst);
  56. }
  57. catch(Exception &exception)
  58. {
  59. }
  60. }
  61. //---------------------------------------------------------------------------
  62. __fastcall TCRSM100M::TCRSM100M(TComponent* Owner)
  63. : TForm(Owner)
  64. {
  65. LangTrans->Translate(this, ITSDb_GetConnection());
  66. ITSSkin_Load(this);
  67. CMM_LoadForm(g_sFormsDir, this);
  68. FUpdate= false;
  69. FTitle = Caption;
  70. FRAMECrsList1->PnlTop->Visible = false;
  71. FRAMECrsList1->PnlBottom->Visible = false;
  72. FRAMECrsList1->ColumnSel->Visible = false;
  73. m_pGDC = FRAMECrsList1->TvList->DataController;
  74. FLayerIdx = LyrTp_Crs;
  75. FRAMEOpenMap1->LayerIdx = FLayerIdx;
  76. FRAMEOpenMap1->MapCallbackFunc = TCRSM100M_MapCallback;
  77. FRAMEOpenMap1->ChkShowNmbr->Caption = "교차로 ID";
  78. EditMode = false;
  79. }
  80. //---------------------------------------------------------------------------
  81. void __fastcall TCRSM100M::CommClose()
  82. {
  83. try
  84. {
  85. CMM_SaveForm(g_sFormsDir, this);
  86. }
  87. catch(...)
  88. {
  89. }
  90. }
  91. //---------------------------------------------------------------------------
  92. void __fastcall TCRSM100M::FormShow(TObject *Sender)
  93. {
  94. Refresh();
  95. FRAMEOpenMap1->OpenMap();
  96. CrossManager->FLists.Lock();
  97. try
  98. {
  99. FOR_STL(TCross*, pObj, CrossManager->FLists)
  100. {
  101. if (pObj->DEL_YN == "Y") continue;
  102. pObj->FData3 = NULL;
  103. }
  104. }
  105. __finally
  106. {
  107. CrossManager->FLists.UnLock();
  108. }
  109. FormInit();
  110. ChangeEditMode(1);
  111. TmrShow->Enabled = true;
  112. }
  113. //---------------------------------------------------------------------------
  114. void __fastcall TCRSM100M::FormInit()
  115. {
  116. EdNmbr->Text = "";
  117. EdId->Text = "";
  118. EdNm->Text = "";
  119. //CbType->ItemIndex = 0;
  120. SePosX->Value = 0;
  121. SePosY->Value = 0;
  122. EdCtlrIp->Text = "";
  123. EdCmncPort->Text = "";
  124. Se_GROUP_NO->Value = 1;
  125. Se_LOCAL_NO->Value = 1;
  126. Se_TRAF_CLCT_CYCL->Value = 60;
  127. Se_STTS_CLCT_CYCL->Value = 60;
  128. Ed_ISTL_LCTN_NM->Text = "";
  129. ISTL_LCTN_ADDR->Text = "";
  130. FNewDb = false;
  131. }
  132. //---------------------------------------------------------------------------
  133. void __fastcall TCRSM100M::TmrShowTimer(TObject *Sender)
  134. {
  135. TmrShow->Enabled = false;
  136. FRAMECrsList1->UpdateList();
  137. }
  138. //---------------------------------------------------------------------------
  139. void __fastcall TCRSM100M::BtnCloseClick(TObject *Sender)
  140. {
  141. Close();
  142. }
  143. //---------------------------------------------------------------------------
  144. void __fastcall TCRSM100M::FormClose(TObject *Sender, TCloseAction &Action)
  145. {
  146. CommClose();
  147. CRSM100M = NULL;
  148. Action = caFree;
  149. }
  150. //---------------------------------------------------------------------------
  151. void __fastcall TCRSM100M::FormCloseQuery(TObject *Sender, bool &CanClose)
  152. {
  153. if (FUpdate)
  154. {
  155. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  156. }
  157. FRAMECrsList1->OnCloseQuery(CanClose);
  158. FRAMEOpenMap1->OnCloseQuery(CanClose);
  159. }
  160. //---------------------------------------------------------------------------
  161. void __fastcall TCRSM100M::DisplayInfo(TCross* AObj, bool AMoveObj/*=true*/)
  162. {
  163. FormInit();
  164. if (!AObj) return;
  165. if (AMoveObj)
  166. {
  167. sJs.printf(L"selectLayerObject(%d, '%s', %d)", FLayerIdx, AObj->CTLR_NMBR.c_str(), FRAMEOpenMap1->MapZoom);
  168. FRAMEOpenMap1->ExecScript(sJs);
  169. }
  170. EdNmbr->Text = AObj->CTLR_NMBR;
  171. EdId->Text = AObj->CTLR_NMBR;
  172. EdNm->Text = AObj->NAME;
  173. //APP_SetCode(CbType, AObj->TYPE_CD);
  174. SePosX->Value = AObj->X_CRDN;
  175. SePosY->Value = AObj->Y_CRDN;
  176. EdType->Text = AObj->CROSS_TYPE;
  177. // FRAMEGisMap1->SelectObjectByPos(SePosX->Value, SePosY->Value, true);
  178. ChangeEditMode(3);
  179. }
  180. //---------------------------------------------------------------------------
  181. void __fastcall TCRSM100M::UpdateIcon()
  182. {
  183. if (!FRAMEOpenMap1->MapStart) return;
  184. sJs.printf(L"removeLayerObject(%d)", FLayerIdx);
  185. FRAMEOpenMap1->ExecScript(sJs);
  186. String arrObj = "";
  187. String sTemp;
  188. CrossManager->FLists.Lock();
  189. try
  190. {
  191. FOR_STL(TCross*, pObj, CrossManager->FLists)
  192. {
  193. if (pObj->DEL_YN == "Y") continue;
  194. if (arrObj != "") arrObj += "|";
  195. sTemp.printf(L"%s,%s,%s,%.6f,%.6f,0,0,0,0", pObj->CTLR_NMBR.c_str(), pObj->CTLR_NMBR.c_str(), pObj->NAME.c_str(), pObj->X_CRDN, pObj->Y_CRDN);
  196. arrObj += sTemp;
  197. }
  198. }
  199. __finally
  200. {
  201. CrossManager->FLists.UnLock();
  202. if (arrObj != "")
  203. {
  204. sJs.printf(L"addFacility(%d, '%s')", FLayerIdx, arrObj.c_str());
  205. FRAMEOpenMap1->ExecScript(sJs);
  206. }
  207. }
  208. }
  209. //---------------------------------------------------------------------------
  210. void __fastcall TCRSM100M::BtnEditClick(TObject *Sender)
  211. {
  212. String sId = EdNmbr->Text;
  213. TCross *pObj = CrossManager->FLists.Find(sId);
  214. FNewDb = false;
  215. if (BtnEdit->Caption == FrmLang->lblEdit->Caption)//"편집")
  216. {
  217. //편집모드 시작
  218. ChangeEditMode(0);
  219. if (pObj)
  220. {
  221. //시설물아이콘을 편집아이콘으로 변경
  222. //function editFacilityObject(ALyrIdx, ANmbr, AComm(0:오류-편집,1:정상), AEdit(편집모드:1-편집,0-편집취소))
  223. sJs.printf(L"editFacilityObject(%d, '%s', 1, 1)", FLayerIdx, pObj->CTLR_NMBR.c_str());
  224. FRAMEOpenMap1->ExecScript(sJs);
  225. }
  226. }
  227. else
  228. {
  229. //편집모드 취소
  230. ChangeEditMode(1);
  231. if (pObj)
  232. {
  233. //원래 정보를 화면에 표출
  234. CMM_SetGridRow(FRAMECrsList1->CxList, FRAMECrsList1->TvList, sId, FRAMECrsList1->Column01->Index);
  235. DisplayInfo(pObj, false);
  236. #if 0
  237. //지도시설물아이콘을 원래아이콘으로 변경
  238. sJs.printf(L"editFacilityObject(%d, '%s', 0, 0)", FLayerIdx, pObj->CROSS_ID.c_str());
  239. FRAMEOpenMap1->ExecScript(sJs);
  240. #else
  241. //추가 모드에서 취소하는 경우 지도에 신규로 추가한 객체를 찾아서 삭제해 주는것 보다
  242. //새롭게 다시 그리자
  243. UpdateIcon();
  244. #endif
  245. }
  246. else
  247. {
  248. //객체가 없는 경우는 추가 모드에서 취소한 경우임
  249. sJs.printf(L"removeFacilityObject(%d, '%s')", FLayerIdx, sId.c_str());
  250. FRAMEOpenMap1->ExecScript(sJs);
  251. }
  252. }
  253. }
  254. //---------------------------------------------------------------------------
  255. void __fastcall TCRSM100M::ChangeEditMode(int AEdit)
  256. {
  257. bool bEnabled = false;
  258. switch(AEdit)
  259. {
  260. case 0: //편집버튼클릭
  261. {
  262. BtnEdit->Enabled = true;
  263. BtnInsert->Enabled = false;
  264. BtnDelete->Enabled = false;
  265. BtnSave->Enabled = true;
  266. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  267. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  268. EditMode = true;
  269. }
  270. break;
  271. case 1: //편집[취소]버튼클릭
  272. {
  273. FormInit(); //화면을 모두 지운다.
  274. BtnEdit->Enabled = false;
  275. BtnInsert->Enabled = true;
  276. BtnDelete->Enabled = false;
  277. BtnSave->Enabled = false;
  278. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  279. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  280. //bEnabled = true;
  281. EditMode = false;
  282. }
  283. break;
  284. case 2: //추가
  285. {
  286. BtnEdit->Enabled = true;
  287. BtnInsert->Enabled = false;
  288. BtnDelete->Enabled = false;
  289. BtnSave->Enabled = true;
  290. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  291. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  292. EditMode = true;
  293. }
  294. break;
  295. case 3: //수정모드
  296. {
  297. BtnEdit->Enabled = true;
  298. BtnInsert->Enabled = true;
  299. BtnDelete->Enabled = true;
  300. BtnSave->Enabled = false;
  301. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  302. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  303. bEnabled = true;
  304. EditMode = false;
  305. }
  306. break;
  307. }
  308. if (AEdit == 0 || AEdit == 2)
  309. {
  310. FRAMECrsList1->CxList->Enabled = false;
  311. }
  312. else
  313. {
  314. FRAMECrsList1->CxList->Enabled = true;
  315. }
  316. PnlEdit->Enabled = EditMode;
  317. }
  318. //---------------------------------------------------------------------------
  319. void __fastcall TCRSM100M::BtnInsertClick(TObject *Sender)
  320. {
  321. int nMsgType = MB_OK|MB_ICONERROR|MB_APPLMODAL;
  322. String sId = InputBox("교차로 ID",
  323. "신규 교차로 ID를 입력하세요.",
  324. "최대10자리" );
  325. sId = sId.Trim();
  326. if (sId == "최대10자리" || sId == "")
  327. {
  328. return;
  329. }
  330. if (AnsiString(sId).Length() > 10)
  331. {
  332. Application->MessageBox(L"교차로 ID는 10Byte를 초과할 수 없습니다.",
  333. FTitle.c_str(), nMsgType);
  334. return;
  335. }
  336. TCross *pDb = (TCross *)CrossManager->FLists.Find(sId);
  337. if (pDb)
  338. {
  339. String sErr = "교차로 ID [" + sId + "]는 이미 사용 중 입니다.";
  340. Application->MessageBox(sErr.c_str(), FTitle.c_str(), nMsgType);
  341. return;
  342. }
  343. FormInit();
  344. EdNmbr->Text = sId;
  345. EdId->Text = EdNmbr->Text;
  346. SePosX->Value = FRAMEOpenMap1->CenterX;
  347. SePosY->Value = FRAMEOpenMap1->CenterY;
  348. //지도에 새로운 시설물 아이콘 추가하면서 편집모드로 변경
  349. String arrObj = "";
  350. arrObj.printf(L"'%s',New,New,%.6f,%.6f,0", sId.c_str(), FRAMEOpenMap1->CenterX, FRAMEOpenMap1->CenterY);
  351. sJs.printf(L"addFacilityObject(%d, '%s')", FLayerIdx, arrObj.c_str());
  352. FRAMEOpenMap1->ExecScript(sJs);
  353. ChangeEditMode(2);
  354. FNewDb = true;
  355. }
  356. //---------------------------------------------------------------------------
  357. void __fastcall TCRSM100M::BtnDeleteClick(TObject *Sender)
  358. {
  359. if (!FRAMEOpenMap1->MapStart) return;
  360. int nIdx = m_pGDC->FocusedRecordIndex;
  361. if (nIdx < 0) return;
  362. String sId = EdNmbr->Text;
  363. if (sId.IsEmpty())
  364. {
  365. Application->MessageBox(lblText2->Caption.c_str(),//L"삭제할 VDS를 목록에서 선택하세요.\r\n목록에서 더블클릭하여 선택합니다.",
  366. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  367. return;
  368. }
  369. String sMsg;
  370. sMsg = lblText3->Caption + ": " + sId;//"VDS번호: " + sId;
  371. sMsg+= "\r\n" + lblText4->Caption;//"선택하신 VDS 정보를 삭제하시겠습니까?";
  372. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  373. TCross *pObj = CrossManager->FLists.Find(sId);
  374. if (pObj)
  375. {
  376. if (CrossManager->DeleteCross(pObj))
  377. {
  378. pObj->DEL_YN = "Y";
  379. FRAMECrsList1->UpdateList();
  380. UpdateIcon();
  381. }
  382. FUpdate = true;
  383. Application->MessageBox(lblText5->Caption.c_str(),//L"VDS 정보삭제\r\nVDS 정보를 삭제 하였습니다.",
  384. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  385. FormInit();
  386. ChangeEditMode(1);
  387. UpdateIcon();
  388. }
  389. }
  390. //---------------------------------------------------------------------------
  391. void __fastcall TCRSM100M::BtnSaveClick(TObject *Sender)
  392. {
  393. if (EdId->Text.Trim().IsEmpty() ||
  394. EdNm->Text.Trim().IsEmpty() ||
  395. SePosX->Value == 0 ||
  396. SePosY->Value == 0 ||
  397. EdType->Text.Trim().IsEmpty() )
  398. {
  399. Application->MessageBox(FrmLang->lblNecessary->Caption.c_str(),//L"★항목은 필수 입력 항목입니다.\r\n모두 입력후 진행해 주세요.",
  400. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  401. return;
  402. }
  403. String sNmbr = EdId->Text;
  404. //int nNmbr = sNmbr.ToInt();
  405. String sId = EdId->Text.Trim();
  406. #if 0
  407. CrossManager->FLists.Lock();
  408. FOR_STL(TCross*, pTmpObj, CrossManager->FLists)
  409. {
  410. if (pTmpObj->DEL_YN == "Y") continue;
  411. if (pTmpObj->CROSS_ID == sNmbr) continue; //자기자신
  412. if (pTmpObj->CROSS_ID == sNmbr)
  413. {
  414. Application->MessageBox(lblText8->Caption.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  415. CrossManager->FLists.UnLock();
  416. return;
  417. }
  418. }
  419. CrossManager->FLists.UnLock();
  420. #endif
  421. TCross *pObj;
  422. if (FNewDb)
  423. {
  424. CrossManager->FLists.Lock();
  425. FOR_STL(TCross*, pTmpObj, CrossManager->FLists)
  426. {
  427. if (pTmpObj->DEL_YN == "Y") continue;
  428. if (pTmpObj->CTLR_NMBR == sId)
  429. {
  430. Application->MessageBox(lblText8->Caption.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  431. CrossManager->FLists.UnLock();
  432. return;
  433. }
  434. }
  435. CrossManager->FLists.UnLock();
  436. pObj = new TCross();
  437. }
  438. else
  439. pObj = CrossManager->FLists.Find(sNmbr);
  440. if (pObj)
  441. {
  442. //pObj->CROSS_ID = sNmbr;
  443. pObj->CTLR_NMBR = sId;
  444. pObj->NAME = EdNm->Text.Trim();
  445. pObj->ZOOM_LEVEL = 0;
  446. pObj->LOCAL_GROUP_ID = "";
  447. pObj->CROSS_TYPE = EdType->Text.Trim();
  448. pObj->X_CRDN = SePosX->Value;
  449. pObj->Y_CRDN = SePosY->Value;
  450. pObj->Completed = true;
  451. pObj->MEM_DEL = "N";
  452. bool bResult;
  453. if (FNewDb)
  454. {
  455. pObj->DEL_YN = "N";
  456. bResult = CrossManager->InsertCross(pObj);
  457. if (bResult)
  458. {
  459. CrossManager->FLists.Push(sNmbr, pObj);
  460. }
  461. }
  462. else
  463. {
  464. bResult = CrossManager->UpdateCross(pObj);
  465. }
  466. if (bResult)
  467. {
  468. Application->MessageBox(lblText9->Caption.c_str(),//L"VDS 정보저장\r\nVDS 정보를 저장 하였습니다.",
  469. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  470. FUpdate = true;
  471. FRAMECrsList1->UpdateList();
  472. UpdateIcon();
  473. CMM_SetGridRow(FRAMECrsList1->CxList, FRAMECrsList1->TvList, sNmbr, FRAMECrsList1->Column01->Index);
  474. DisplayInfo(pObj, true);
  475. }
  476. }
  477. }
  478. //---------------------------------------------------------------------------
  479. void __fastcall TCRSM100M::FRAMECrsList1TvListCellDblClick(TcxCustomGridTableView *Sender,
  480. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  481. TShiftState AShift, bool &AHandled)
  482. {
  483. if (!ACellViewInfo) return;
  484. int nRow = FRAMECrsList1->TvList->DataController->FocusedRecordIndex;
  485. if( nRow <= -1 )
  486. return;
  487. int nMemPtr = FRAMECrsList1->TvList->DataController->Values[nRow][FRAMECrsList1->Column99->Index];
  488. TCross* pObj = (TCross*)nMemPtr;
  489. DisplayInfo(pObj, true);
  490. }
  491. //---------------------------------------------------------------------------
  492. void __fastcall TCRSM100M::Ed_VDS_PORTKeyPress(TObject *Sender, wchar_t &Key)
  493. {
  494. if (Key > '9' || Key < '0')
  495. {
  496. if (Key != VK_BACK && Key != VK_TAB && Key != '-')
  497. Key = 0;
  498. }
  499. }
  500. //---------------------------------------------------------------------------
  501. void __fastcall TCRSM100M::Se_VDS_CHNLPropertiesChange(TObject *Sender)
  502. {
  503. if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue)
  504. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue;
  505. else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue &&
  506. ((TcxSpinEdit*)Sender)->Properties->MaxValue)
  507. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue;
  508. }
  509. //---------------------------------------------------------------------------
  510. void __fastcall TCRSM100M::OpenMapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst)
  511. {
  512. try
  513. {
  514. if (AFirst)
  515. {
  516. //지도를 편집모드로 변경
  517. sJs.printf(L"setEditMode(%d, 1)", FLayerIdx);
  518. FRAMEOpenMap1->ExecScript(sJs);
  519. //시설물아이콘 등록
  520. UpdateIcon();
  521. sJs.printf(L"extentLayer(%d)", FLayerIdx);
  522. FRAMEOpenMap1->ExecScript(sJs);
  523. return;
  524. }
  525. if (AFunc.Pos("onfacilitydragend"))
  526. {
  527. TStringList *pStringList = new TStringList;
  528. pStringList->CommaText = AArgs;
  529. try
  530. {
  531. String sNmbr = pStringList->Strings[0];
  532. String sCenterLat = pStringList->Strings[1];
  533. String sCenterLng = pStringList->Strings[2];
  534. SePosX->Value = sCenterLat.ToDouble();
  535. SePosY->Value = sCenterLng.ToDouble();
  536. }
  537. catch(Exception &e)
  538. {
  539. }
  540. delete pStringList;
  541. }
  542. }
  543. catch(Exception &exception)
  544. {
  545. }
  546. }
  547. //---------------------------------------------------------------------------