VDSM010MF.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662
  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. #include "ITSLangTransF.h"
  9. #pragma hdrstop
  10. #include "VDSM010MF.h"
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma link "FRAME_VdsListF"
  14. #pragma link "FRAME_FlashMapF"
  15. #pragma link "cxButtons"
  16. #pragma link "cxCheckBox"
  17. #pragma link "cxContainer"
  18. #pragma link "cxControls"
  19. #pragma link "cxDropDownEdit"
  20. #pragma link "cxEdit"
  21. #pragma link "cxGraphics"
  22. #pragma link "cxGroupBox"
  23. #pragma link "cxLabel"
  24. #pragma link "cxLookAndFeelPainters"
  25. #pragma link "cxLookAndFeels"
  26. #pragma link "cxMaskEdit"
  27. #pragma link "cxSpinEdit"
  28. #pragma link "cxSplitter"
  29. #pragma link "cxTextEdit"
  30. #pragma link "dxSkinBlack"
  31. #pragma link "dxSkinBlue"
  32. #pragma link "dxSkinsCore"
  33. #pragma resource "*.dfm"
  34. TVDSM010M *VDSM010M = NULL;
  35. //---------------------------------------------------------------------------
  36. void TVDSM010M_FlashCall(TObject *ASender, const WideString request)
  37. {
  38. try
  39. {
  40. if (!VDSM010M) return;
  41. VDSM010M->ShockwaveFlash1FlashCall1(ASender, request);
  42. }
  43. catch(Exception &exception)
  44. {
  45. }
  46. }
  47. //---------------------------------------------------------------------------
  48. __fastcall TVDSM010M::TVDSM010M(TComponent* Owner)
  49. : TForm(Owner)
  50. {
  51. LangTrans->Translate(this, ITSDb_GetConnection());
  52. FTitle = "VDS-제어기 관리";
  53. ITSSkin_Load(this);
  54. CMM_LoadForm(g_sFormsDir, this);
  55. FUpdate= false;
  56. MapStart = false;
  57. FRAMEGisMap1->FlashCallbackFunc = TVDSM010M_FlashCall;
  58. FRAMEGisMap1->DrawMode = 1; //구간정보표출
  59. FRAMEGisMap1->ImgPan->Visible = true;
  60. FRAMEGisMap1->ImgZoomIn->Visible = true;
  61. FRAMEGisMap1->ImgZoomOut->Visible = true;
  62. FRAMEGisMap1->ImgSel->Visible = true;
  63. FRAMEGisMap1->ImgStnd->Visible = true;
  64. FRAMEGisMap1->ImgRefresh->Visible = true;
  65. FRAMEGisMap1->LbDef->Caption = "(선택메뉴를 클릭하여 위치를 선택합니다.)";
  66. FRAMEGisMap1->LbDef->Hint = FRAMEGisMap1->LbDef->Caption;
  67. FRAMEGisMap1->LbDef->Visible = true;
  68. FRAMEVdsList1->PnlTop->Visible = false;
  69. FRAMEVdsList1->PnlBottom->Visible = false;
  70. FRAMEVdsList1->ColumnSel->Visible = false;
  71. FRAMEVdsList1->Column02->Visible = false;
  72. m_pGDC = FRAMEVdsList1->TvList->DataController;
  73. }
  74. //---------------------------------------------------------------------------
  75. /*
  76. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  77. * Form과 DataModule class를 delete시킨다.
  78. * arguments
  79. *
  80. * return
  81. * void
  82. */
  83. void __fastcall TVDSM010M::CommClose()
  84. {
  85. try
  86. {
  87. CMM_SaveForm(g_sFormsDir, this);
  88. }
  89. catch(...)
  90. {
  91. }
  92. }
  93. //---------------------------------------------------------------------------
  94. /*
  95. * Form을 보여줄때 호출되는 event 메서드이다.
  96. * arguments
  97. * Sender : event handler 객체
  98. * return
  99. * void
  100. */
  101. void __fastcall TVDSM010M::FormShow(TObject *Sender)
  102. {
  103. Refresh();
  104. CbTypeCd->Properties->Items->Clear();
  105. TItsCode *FCodeRMF = ItsCodeManager->FLists.Find("RMF");
  106. if (FCodeRMF)
  107. {
  108. FOR_STL(TItsSubCode *, pSubCode, FCodeRMF->FSubLists)
  109. {
  110. if (pSubCode->USE_YN == "N") continue;
  111. CbTypeCd->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  112. }
  113. }
  114. CbTypeCd->ItemIndex = 0;
  115. FormInit();
  116. ChangeEditMode(1);
  117. TmrShow->Enabled = true;
  118. }
  119. //---------------------------------------------------------------------------
  120. /*
  121. * form 초기화
  122. *
  123. * arguments
  124. *
  125. * return
  126. * void
  127. */
  128. void __fastcall TVDSM010M::FormInit()
  129. {
  130. EdId->Text = "";
  131. EdMngmNmbr->Text = "";
  132. CbTypeCd->ItemIndex = 0;
  133. CbValidYn->ItemIndex = 0;
  134. SePosX->Value = 0;
  135. SePosY->Value = 0;
  136. EdLctn->Text = "";
  137. EdIP->Text = "";
  138. EdPort->Text = "";
  139. SeClctCycle->Value = 0;
  140. SeSttsCycl->Value = 0;
  141. SeBordNum->Value = 0;
  142. FNewDb = false;
  143. }
  144. //---------------------------------------------------------------------------
  145. /*
  146. * Form이 Show되고 난 후 최초 1회 수행되는 타이머 이벤트
  147. * arguments
  148. * Sender : event handler 객체
  149. * return
  150. * void
  151. */
  152. void __fastcall TVDSM010M::TmrShowTimer(TObject *Sender)
  153. {
  154. TmrShow->Enabled = false;
  155. FRAMEGisMap1->LinkLevel = 1;
  156. FRAMEGisMap1->LoadGisMap();
  157. FRAMEVdsList1->UpdateList();
  158. }
  159. //---------------------------------------------------------------------------
  160. /*
  161. * Close 버튼 클릭 이벤트 핸들러
  162. * arguments
  163. * Sender : event handler 객체
  164. * return
  165. * void
  166. */
  167. void __fastcall TVDSM010M::BtnCloseClick(TObject *Sender)
  168. {
  169. Close();
  170. }
  171. //---------------------------------------------------------------------------
  172. void __fastcall TVDSM010M::FormClose(TObject *Sender, TCloseAction &Action)
  173. {
  174. CommClose();
  175. VDSM010M = NULL;
  176. Action = caFree;
  177. }
  178. //---------------------------------------------------------------------------
  179. void __fastcall TVDSM010M::FormCloseQuery(TObject *Sender, bool &CanClose)
  180. {
  181. if (FUpdate)
  182. {
  183. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  184. }
  185. FRAMEVdsList1->OnCloseQuery(CanClose);
  186. }
  187. //---------------------------------------------------------------------------
  188. void __fastcall TVDSM010M::DisplayInfo(TItsVds* AObj)
  189. {
  190. FormInit();
  191. if (!AObj) return;
  192. EdId->Text = AObj->CTLR_MNGM_NMBR;
  193. EdMngmNmbr->Text = AObj->CTLR_MNGM_NMBR;
  194. CMM_SetComboBoxItem(CbTypeCd, AObj->CTLR_TYPE_CD);
  195. CbValidYn->Text = AObj->VALD_YN;
  196. SePosX->Value = StrToFloatDef(AObj->X_CRDN, 0);
  197. SePosY->Value = StrToFloatDef(AObj->Y_CRDN, 0);
  198. EdLctn->Text = AObj->LCTN;
  199. EdIP->Text = AObj->TRMN_IP;
  200. EdPort->Text = AObj->TRMN_PORT;
  201. SeClctCycle->Value = AObj->CTLR_CLCT_CYCL.ToIntDef(0);
  202. SeSttsCycl->Value = AObj->CTLR_STTS_CYCL.ToIntDef(0);
  203. SeBordNum->Value = AObj->DLTR_NMBR.ToIntDef(0);
  204. FRAMEGisMap1->SelectObjectByPos(SePosX->Value, SePosY->Value, true);
  205. ChangeEditMode(3);
  206. }
  207. //---------------------------------------------------------------------------
  208. void __fastcall TVDSM010M::UpdateVdsIcon()
  209. {
  210. if (!MapStart) return;
  211. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "RemoveFacility", FAC_VDS);
  212. TItsFacility *pFacility;
  213. try
  214. {
  215. //if (ChkViewIcon->Checked)
  216. {
  217. String sObjList = "";
  218. try
  219. {
  220. FRAMEVdsList1->MyItsVdsManager->FLists.Lock();
  221. FOR_STL(TItsVds*, pObj, FRAMEVdsList1->MyItsVdsManager->FLists)
  222. {
  223. if (pObj->DEL_YN == "Y") continue;
  224. //pFacility = ItsFacilityManager->FLists.Find(pObj->CTLR_MNGM_NMBR);
  225. //if (!pFacility) continue;
  226. String sLoc = TCommFlash::ReplaceName(pObj->LCTN);
  227. sObjList += (pObj->CTLR_MNGM_NMBR + "," + "0," + sLoc + "," + pObj->X_CRDN + "," + pObj->Y_CRDN + "," + pObj->CTLR_MNGM_NMBR + "|");
  228. }
  229. }
  230. __finally
  231. {
  232. FRAMEVdsList1->MyItsVdsManager->FLists.UnLock();
  233. if (sObjList != "")
  234. {
  235. sObjList = sObjList.SubString(1, sObjList.Length()-1);
  236. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "AddFacility", FAC_VDS + "|" + sObjList);
  237. }
  238. }
  239. }
  240. }
  241. catch(...)
  242. {
  243. }
  244. }
  245. //---------------------------------------------------------------------------
  246. void __fastcall TVDSM010M::FRAMEVdsList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  247. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  248. {
  249. if (!ACellViewInfo) return;
  250. int nRow = FRAMEVdsList1->TvList->DataController->FocusedRecordIndex;
  251. if( nRow <= -1 )
  252. return;
  253. int nMemPtr = FRAMEVdsList1->TvList->DataController->Values[nRow][FRAMEVdsList1->Column99->Index];
  254. TItsVds* pObj = (TItsVds*)nMemPtr;
  255. DisplayInfo(pObj);
  256. }
  257. //---------------------------------------------------------------------------
  258. void __fastcall TVDSM010M::ChkViewIconClick(TObject *Sender)
  259. {
  260. if (!MapStart) return;
  261. String sShowIcon = ChkViewIcon->Checked ? "1" : "0";
  262. String sShowName = ChkViewName->Checked ? "1" : "0";
  263. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "ShowFacility", "VDS|" + sShowIcon + "|" + sShowName);
  264. }
  265. //---------------------------------------------------------------------------
  266. void __fastcall TVDSM010M::BtnEditClick(TObject *Sender)
  267. {
  268. if (BtnEdit->Caption == "편집")
  269. {
  270. ChangeEditMode(0);
  271. FNewDb = false;
  272. }
  273. else
  274. {
  275. String sId = EdId->Text;
  276. ChangeEditMode(1);
  277. TItsVds *pObj = FRAMEVdsList1->MyItsVdsManager->FLists.Find(sId);
  278. if (pObj)
  279. {
  280. CMM_SetGridRow(FRAMEVdsList1->CxList, FRAMEVdsList1->TvList, sId, FRAMEVdsList1->Column01->Index);
  281. DisplayInfo(pObj);
  282. }
  283. }
  284. }
  285. //---------------------------------------------------------------------------
  286. void __fastcall TVDSM010M::ChangeEditMode(int AEdit)
  287. {
  288. bool bEnabled = false;
  289. switch(AEdit)
  290. {
  291. case 0: //편집버튼클릭
  292. {
  293. BtnEdit->Enabled = true;
  294. BtnInsert->Enabled = false;
  295. BtnDelete->Enabled = false;
  296. BtnSave->Enabled = true;
  297. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  298. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  299. }
  300. break;
  301. case 1: //편집[취소]버튼클릭
  302. {
  303. FormInit(); //화면을 모두 지운다.
  304. BtnEdit->Enabled = false;
  305. BtnInsert->Enabled = true;
  306. BtnDelete->Enabled = false;
  307. BtnSave->Enabled = false;
  308. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  309. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  310. bEnabled = true;
  311. }
  312. break;
  313. case 2: //추가
  314. {
  315. BtnEdit->Enabled = true;
  316. BtnInsert->Enabled = false;
  317. BtnDelete->Enabled = false;
  318. BtnSave->Enabled = true;
  319. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  320. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  321. }
  322. break;
  323. case 3: //수정모드
  324. {
  325. BtnEdit->Enabled = true;
  326. BtnInsert->Enabled = true;
  327. BtnDelete->Enabled = true;
  328. BtnSave->Enabled = false;
  329. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  330. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  331. bEnabled = true;
  332. }
  333. break;
  334. }
  335. if (AEdit == 0 || AEdit == 2)
  336. {
  337. FRAMEVdsList1->CxList->Enabled = false;
  338. }
  339. else
  340. {
  341. FRAMEVdsList1->CxList->Enabled = true;
  342. }
  343. EdId->Properties->ReadOnly = bEnabled;
  344. EdMngmNmbr->Properties->ReadOnly = bEnabled;
  345. CbTypeCd->Properties->ReadOnly = bEnabled;
  346. CbValidYn->Properties->ReadOnly = bEnabled;
  347. SePosX->Properties->ReadOnly = bEnabled;
  348. SePosY->Properties->ReadOnly = bEnabled;
  349. EdLctn->Properties->ReadOnly = bEnabled;
  350. EdIP->Properties->ReadOnly = bEnabled;
  351. EdPort->Properties->ReadOnly = bEnabled;
  352. SeClctCycle->Properties->ReadOnly = bEnabled;
  353. SeSttsCycl->Properties->ReadOnly = bEnabled;
  354. SeBordNum->Properties->ReadOnly = bEnabled;
  355. }
  356. //---------------------------------------------------------------------------
  357. void __fastcall TVDSM010M::BtnInsertClick(TObject *Sender)
  358. {
  359. FormInit();
  360. //신규아이디를 얻어와서 화면을 초기화한다.
  361. String sId;
  362. #if 0
  363. if (!FRAMEVdsList1->MyItsVdsManager->GetNextVdsId(sId))
  364. {
  365. Application->MessageBox(L"새로운 VDS-제어기 관리번호를 생성하지 못하였습니다.\r\n프로그램 종료후에 다시 시도해 보세요.",
  366. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  367. return;
  368. }
  369. #else
  370. sId = InputBox("제어기 관리번호", "신규 제어기 관리번호를 입력하세요(20Byte).", "제어기 관리번호" );
  371. sId = sId.Trim();
  372. if (sId == "제어기 관리번호" || sId == "")
  373. {
  374. return;
  375. }
  376. if (AnsiString(sId).Length() > 20)
  377. {
  378. Application->MessageBox(L"제어기 관리번호는 20Byte를 초과할 수 없습니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  379. return;
  380. }
  381. TItsVds *pDb = (TItsVds *)FRAMEVdsList1->MyItsVdsManager->FLists.Find(sId);
  382. if (pDb)
  383. {
  384. String sErr = FrmLang->lbIdErr->Caption + "[" + sId + "]";
  385. Application->MessageBox(sErr.c_str(),//("[" + sId + "]는 사용할 수 없는 제어기 관리번호 입니다.").c_str(),
  386. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  387. return;
  388. }
  389. #endif
  390. EdId->Text = sId;
  391. EdMngmNmbr->Text = sId;
  392. ChangeEditMode(2);
  393. FNewDb = true;
  394. }
  395. //---------------------------------------------------------------------------
  396. void __fastcall TVDSM010M::BtnDeleteClick(TObject *Sender)
  397. {
  398. if (!MapStart) return;
  399. int nIdx = m_pGDC->FocusedRecordIndex;
  400. if (nIdx < 0) return;
  401. String sId = EdId->Text;
  402. if (sId.IsEmpty())
  403. {
  404. Application->MessageBox(L"삭제할 VDS-제어기를 목록에서 선택하세요.\r\n목록에서 더블클릭하여 선택합니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  405. return;
  406. }
  407. String sMsg;
  408. sMsg = "ID: " + sId;
  409. sMsg+= "\r\n선택하신 VDS-제어기 정보를 삭제하시겠습니까?";
  410. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  411. TItsVds *pObj = FRAMEVdsList1->MyItsVdsManager->FLists.Find(sId);
  412. if (pObj)
  413. {
  414. if (FRAMEVdsList1->MyItsVdsManager->DeleteVds(pObj))
  415. {
  416. pObj->DEL_YN = "Y";
  417. FRAMEVdsList1->UpdateList();
  418. }
  419. TItsFacility *pFacility = ItsFacilityManager->FLists.Find(sId);
  420. if (pFacility)
  421. {
  422. FUpdate = true;
  423. }
  424. Application->MessageBox(L"VDS-제어기 정보삭제\r\nVDS-제어기 정보를 삭제 하였습니다.",
  425. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  426. FormInit();
  427. ChangeEditMode(1);
  428. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "DeleteFacility", FAC_VDS + "|" + sId);
  429. }
  430. }
  431. //---------------------------------------------------------------------------
  432. void __fastcall TVDSM010M::BtnSaveClick(TObject *Sender)
  433. {
  434. if (EdId->Text.IsEmpty() ||
  435. EdLctn->Text.Trim().IsEmpty()||
  436. SePosX->Value == 0 ||
  437. SePosY->Value == 0 )
  438. //CbTypeCd->Text.IsEmpty() )
  439. {
  440. Application->MessageBox(L"★항목은 필수 입력 항목입니다.\r\n모두 입력후 진행해 주세요.",
  441. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  442. return;
  443. }
  444. String sId = EdId->Text;
  445. TItsVds *pObj;
  446. if (FNewDb)
  447. pObj = new TItsVds();
  448. else
  449. pObj = FRAMEVdsList1->MyItsVdsManager->FLists.Find(sId);
  450. if (pObj)
  451. {
  452. pObj->CTLR_MNGM_NMBR = sId;
  453. pObj->CTLR_TYPE_CD = ITSUtil_GetCode(CbTypeCd->Text);
  454. pObj->VALD_YN = CbValidYn->Text;
  455. pObj->X_CRDN = VarToStr(SePosX->Value);
  456. pObj->Y_CRDN = VarToStr(SePosY->Value);
  457. pObj->LCTN = EdLctn->Text.Trim();
  458. pObj->TRMN_IP = EdIP->Text.Trim();
  459. pObj->TRMN_PORT = EdPort->Text.Trim();
  460. pObj->CTLR_CLCT_CYCL = VarToStr(SeClctCycle->Value);
  461. pObj->CTLR_STTS_CYCL = VarToStr(SeSttsCycl->Value);
  462. pObj->DLTR_NMBR = VarToStr(SeBordNum->Value);
  463. pObj->DEL_YN = "N";
  464. bool bResult;
  465. if (FNewDb)
  466. {
  467. bResult = FRAMEVdsList1->MyItsVdsManager->InsertVds(pObj);
  468. if (bResult)
  469. {
  470. FRAMEVdsList1->MyItsVdsManager->FLists.Push(sId, pObj);
  471. }
  472. }
  473. else
  474. {
  475. bResult = FRAMEVdsList1->MyItsVdsManager->UpdateVds(pObj);
  476. }
  477. if (bResult)
  478. {
  479. Application->MessageBox(FrmLang->lblDbSave->Caption.c_str(),//L"VDS-제어기 정보저장\r\nVDS-제어기 정보를 저장 하였습니다.",
  480. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  481. FUpdate = true;
  482. FRAMEVdsList1->UpdateList();
  483. UpdateVdsIcon();
  484. CMM_SetGridRow(FRAMEVdsList1->CxList, FRAMEVdsList1->TvList, sId, FRAMEVdsList1->Column01->Index);
  485. DisplayInfo(pObj);
  486. }
  487. }
  488. }
  489. //---------------------------------------------------------------------------
  490. void __fastcall TVDSM010M::ShockwaveFlash1FlashCall1(TObject *ASender, const WideString request)
  491. {
  492. try
  493. {
  494. String sTemp;
  495. String sFunc;
  496. String sArgs;
  497. sTemp = request;
  498. int nFuncStrIdx = sTemp.Pos("\"");
  499. int nFuncEndIdx = sTemp.Pos("\" returntype");
  500. int nArgsStrIdx = sTemp.Pos("string>");
  501. int nArgsEndIdx = sTemp.Pos("</string");
  502. sFunc = sTemp.SubString(nFuncStrIdx + 1, nFuncEndIdx - (nFuncStrIdx + 1));
  503. sArgs = sTemp.SubString(nArgsStrIdx + 7, nArgsEndIdx - (nArgsStrIdx + 7));
  504. if (sFunc == "OnMapStart")
  505. {
  506. String sShowIcon = ChkViewIcon->Checked ? "1" : "0";
  507. String sShowName = ChkViewName->Checked ? "1" : "0";
  508. MapStart = true;
  509. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "ShowFacility", "VDS|" + sShowIcon + "|" + sShowName);
  510. }
  511. else
  512. if (sFunc == "OnDrawTrafLink")
  513. {
  514. static bool bFirst = true;
  515. if (bFirst)
  516. {
  517. UpdateVdsIcon();
  518. bFirst = true;
  519. }
  520. }
  521. else
  522. if (sFunc == "OnMousePos")
  523. {
  524. if (FRAMEGisMap1->ModeSelect)
  525. {
  526. TStringList *pStringList = new TStringList;
  527. pStringList->CommaText = sArgs;
  528. String sMapX = pStringList->Strings[0]; //lat
  529. String sMapY = pStringList->Strings[1]; //lng
  530. delete pStringList;
  531. try {
  532. SePosX->Value = sMapX.ToDouble();
  533. SePosY->Value = sMapY.ToDouble();
  534. } catch(...) {}
  535. }
  536. }
  537. else
  538. if (sFunc == "OnSelLink")
  539. {
  540. if (FRAMEGisMap1->ModeSelect)
  541. {
  542. TStringList *pStringList = new TStringList;
  543. pStringList->CommaText = sArgs;
  544. String sLevl = pStringList->Strings[0]; //링크레벨
  545. String sId = pStringList->Strings[1]; //링크아이디
  546. String sZoom = pStringList->Strings[2]; //줌레벨
  547. String sPosX = pStringList->Strings[3]; //x
  548. String sPosY = pStringList->Strings[4]; //y
  549. String sMapX = pStringList->Strings[5]; //lat
  550. String sMapY = pStringList->Strings[6]; //lng
  551. delete pStringList;
  552. try {
  553. SePosX->Value = sMapX.ToDouble();
  554. SePosY->Value = sMapY.ToDouble();
  555. } catch(...) {}
  556. }
  557. }
  558. else
  559. if (sFunc == "OnClickFacility")
  560. {
  561. TStringList *pStringList = new TStringList;
  562. pStringList->CommaText = sArgs;
  563. String sType = pStringList->Strings[0]; //유형
  564. String sId = pStringList->Strings[1]; //아이디
  565. String sName = pStringList->Strings[2]; //아이디
  566. delete pStringList;
  567. }
  568. }
  569. catch(Exception &exception)
  570. {
  571. }
  572. }
  573. //---------------------------------------------------------------------------