VMSM100MF.cpp 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146
  1. /****************************************************************************
  2. * @source :
  3. * @description :
  4. ****************************************************************************
  5. * DATE AUTHOR DESCRIPTION
  6. * --------------------------------------------------------------------------
  7. * 2016/07/10 shjung 최초작성
  8. *
  9. ****************************************************************************/
  10. //---------------------------------------------------------------------------
  11. #include <vcl.h>
  12. #include "ITSSkinF.h"
  13. #include "ITSUtilF.h"
  14. #include "AppGlobalF.h"
  15. #include "ITSLangTransF.h"
  16. #pragma hdrstop
  17. #include "VMSM100MF.h"
  18. //---------------------------------------------------------------------------
  19. #pragma package(smart_init)
  20. #pragma link "cxButtons"
  21. #pragma link "cxCalendar"
  22. #pragma link "cxContainer"
  23. #pragma link "cxControls"
  24. #pragma link "cxDropDownEdit"
  25. #pragma link "cxEdit"
  26. #pragma link "cxGraphics"
  27. #pragma link "cxGroupBox"
  28. #pragma link "cxLabel"
  29. #pragma link "cxLookAndFeelPainters"
  30. #pragma link "cxLookAndFeels"
  31. #pragma link "cxMaskEdit"
  32. #pragma link "cxPC"
  33. #pragma link "cxPCdxBarPopupMenu"
  34. #pragma link "cxSpinEdit"
  35. #pragma link "cxSplitter"
  36. #pragma link "cxTextEdit"
  37. #pragma link "cxTimeEdit"
  38. #pragma link "dxSkinBlack"
  39. #pragma link "dxSkinBlue"
  40. #pragma link "dxSkinCaramel"
  41. #pragma link "dxSkinCoffee"
  42. #pragma link "dxSkinDarkRoom"
  43. #pragma link "dxSkinDarkSide"
  44. #pragma link "dxSkinFoggy"
  45. #pragma link "dxSkinGlassOceans"
  46. #pragma link "dxSkiniMaginary"
  47. #pragma link "dxSkinLilian"
  48. #pragma link "dxSkinLiquidSky"
  49. #pragma link "dxSkinLondonLiquidSky"
  50. #pragma link "dxSkinMcSkin"
  51. #pragma link "dxSkinMoneyTwins"
  52. #pragma link "dxSkinOffice2007Black"
  53. #pragma link "dxSkinOffice2007Blue"
  54. #pragma link "dxSkinOffice2007Green"
  55. #pragma link "dxSkinOffice2007Pink"
  56. #pragma link "dxSkinOffice2007Silver"
  57. #pragma link "dxSkinOffice2010Black"
  58. #pragma link "dxSkinOffice2010Blue"
  59. #pragma link "dxSkinOffice2010Silver"
  60. #pragma link "dxSkinsCore"
  61. #pragma link "dxSkinscxPCPainter"
  62. #pragma link "dxSkinSeven"
  63. #pragma link "dxSkinSharp"
  64. #pragma link "dxSkinSilver"
  65. #pragma link "dxSkinStardust"
  66. #pragma link "cxRadioGroup"
  67. #pragma link "cxClasses"
  68. #pragma link "cxCustomData"
  69. #pragma link "cxData"
  70. #pragma link "cxDataStorage"
  71. #pragma link "cxDBData"
  72. #pragma link "cxFilter"
  73. #pragma link "cxGrid"
  74. #pragma link "cxGridCustomTableView"
  75. #pragma link "cxGridCustomView"
  76. #pragma link "cxGridDBTableView"
  77. #pragma link "cxGridLevel"
  78. #pragma link "cxGridTableView"
  79. #pragma link "cxStyles"
  80. #pragma link "cxCheckBox"
  81. #pragma link "FRAME_VmsListF"
  82. #pragma link "FRAME_GoogleMapF"
  83. #pragma link "GMClasses"
  84. #pragma link "GMLinkedComponents"
  85. #pragma link "GMMap"
  86. #pragma link "GMMarker"
  87. #pragma link "GMMarkerVCL"
  88. #pragma resource "*.dfm"
  89. TVMSM100M *VMSM100M = NULL;
  90. //---------------------------------------------------------------------------
  91. __fastcall TVMSM100M::TVMSM100M(TComponent* Owner)
  92. : TForm(Owner)
  93. {
  94. LangTrans->Translate(this, ITSDb_GetConnection());
  95. ITSSkin_Load(this);
  96. CMM_LoadForm(g_sFormsDir, this);
  97. //BtnSaveAll->Caption = "Apply All VMS";
  98. //BtnSaveAll->Hint = "Apply the same value to the entire VMS.";
  99. FUpdate= false;
  100. FTitle = Caption;//"VMS 기본정보 관리";
  101. MapStart = false;
  102. //FRAMEVmsList1->Column02->Visible = false;
  103. FRAMEVmsList1->PnlTop->Visible = false;
  104. FRAMEVmsList1->PnlBottom->Visible = false;
  105. FRAMEVmsList1->ColumnSel->Visible = false;
  106. FRAMEVmsList1->Column05->Visible = true;
  107. FRAMEVmsList1->Column06->Visible = true;
  108. FRAMEVmsList1->Column07->Visible = true;
  109. FRAMEVmsList1->Column08->Visible = true;
  110. FRAMEVmsList1->Column09->Visible = true;
  111. FRAMEVmsList1->Column10->Visible = true;
  112. FRAMEVmsList1->Column13->Visible = true;
  113. m_pGDC = FRAMEVmsList1->TvList->DataController;
  114. FSelMkr = NULL;
  115. FNewMkr = GMMarkerNew->Items[0];
  116. FNewMkr->Icon = g_AppCfg.vms.ICON[icon_s];
  117. EditMode = false;
  118. }
  119. //---------------------------------------------------------------------------
  120. /*
  121. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  122. * Form과 DataModule class를 delete시킨다.
  123. * arguments
  124. *
  125. * return
  126. * void
  127. */
  128. void __fastcall TVMSM100M::CommClose()
  129. {
  130. try
  131. {
  132. CMM_SaveForm(g_sFormsDir, this);
  133. }
  134. catch(...)
  135. {
  136. }
  137. }
  138. //---------------------------------------------------------------------------
  139. /*
  140. * Form을 보여줄때 호출되는 event 메서드이다.
  141. * arguments
  142. * Sender : event handler 객체
  143. * return
  144. * void
  145. */
  146. void __fastcall TVMSM100M::FormShow(TObject *Sender)
  147. {
  148. Refresh();
  149. APP_FillCode(CbUsagType, "VUT");
  150. APP_FillCode(CbType, "VMP");
  151. try
  152. {
  153. VmsManager->FLists.Lock();
  154. FOR_STL(TVmsCtlr*, pObj, VmsManager->FLists)
  155. {
  156. if (pObj->DEL_YN == "Y") continue;
  157. pObj->FData3 = NULL;
  158. }
  159. }
  160. __finally
  161. {
  162. VmsManager->FLists.UnLock();
  163. }
  164. FormInit();
  165. ChangeEditMode(1);
  166. TmrShow->Enabled = true;
  167. }
  168. //---------------------------------------------------------------------------
  169. /*
  170. * form 초기화
  171. *
  172. * arguments
  173. *
  174. * return
  175. * void
  176. */
  177. void __fastcall TVMSM100M::FormInit()
  178. {
  179. EdNmbr->Text = "";
  180. EdId->Text = "";
  181. EdVmsId->Text = "";
  182. EdVmsNm->Text = "";
  183. SeMaxPhase->Value = 10;
  184. CbUsagType->ItemIndex = 0;
  185. CbType->ItemIndex = 0;
  186. SePosX->Value = 0;
  187. SePosY->Value = 0;
  188. EdCtlrIp->Text = "";
  189. EdCmncPort->Text = "";
  190. EdWebCamIp->Text = "";
  191. EdWebCamPort->Text = "";
  192. EdWebCamId->Text = "";
  193. EdWebCamPswd->Text = "";
  194. EdWebCamStrm->Text = "";
  195. cxTimeOn->Clear();
  196. cxTimeOff->Clear();
  197. cxTimeOn->EditValue = Now().FormatString("hh:nn");
  198. cxTimeOn->EditValue = "00:00";
  199. cxTimeOff->EditValue = Now().FormatString("hh:nn");
  200. cxTimeOff->EditValue = "00:00";
  201. if (FSelMkr)
  202. {
  203. FSelMkr->Icon = g_AppCfg.vms.ICON[icon_r];
  204. FSelMkr->Draggable = false;
  205. FSelMkr = NULL;
  206. }
  207. FNewMkr->Visible = false;
  208. FNewDb = false;
  209. }
  210. //---------------------------------------------------------------------------
  211. /*
  212. * Form이 Show되고 난 후 최초 1회 수행되는 타이머 이벤트
  213. * arguments
  214. * Sender : event handler 객체
  215. * return
  216. * void
  217. */
  218. void __fastcall TVMSM100M::TmrShowTimer(TObject *Sender)
  219. {
  220. TmrShow->Enabled = false;
  221. FRAMEGoogleMap1->LinkLevel = 2;
  222. FRAMEGoogleMap1->LoadGisMap();
  223. MapStart = true;
  224. FRAMEVmsList1->UpdateList();
  225. UpdateIcon();
  226. }
  227. //---------------------------------------------------------------------------
  228. /*
  229. * Close 버튼 클릭 이벤트 핸들러
  230. * arguments
  231. * Sender : event handler 객체
  232. * return
  233. * void
  234. */
  235. void __fastcall TVMSM100M::BtnCloseClick(TObject *Sender)
  236. {
  237. Close();
  238. }
  239. //---------------------------------------------------------------------------
  240. void __fastcall TVMSM100M::FormClose(TObject *Sender, TCloseAction &Action)
  241. {
  242. CommClose();
  243. VMSM100M = NULL;
  244. Action = caFree;
  245. }
  246. //---------------------------------------------------------------------------
  247. void __fastcall TVMSM100M::FormCloseQuery(TObject *Sender, bool &CanClose)
  248. {
  249. if (FUpdate)
  250. {
  251. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  252. }
  253. FRAMEVmsList1->OnCloseQuery(CanClose);
  254. }
  255. //---------------------------------------------------------------------------
  256. TMarker * _fastcall TVMSM100M::FindObjectMarker(String AId)
  257. {
  258. TVmsCtlr *pObj = VmsManager->FLists.Find(AId);
  259. if (pObj)
  260. {
  261. return (TMarker*)pObj->FData3;
  262. }
  263. return (TMarker*)NULL;
  264. }
  265. //---------------------------------------------------------------------------
  266. void __fastcall TVMSM100M::DisplayInfo(TVmsCtlr* AObj, bool AMoveVms/*=false*/)
  267. {
  268. FormInit();
  269. if (!AObj) return;
  270. FSelMkr = FindObjectMarker(String(AObj->VMS_CTLR_NMBR));
  271. if (FSelMkr)
  272. {
  273. FSelMkr->Icon = g_AppCfg.vms.ICON[icon_s];
  274. if (AMoveVms)
  275. {
  276. FSelMkr->CenterMapTo();
  277. }
  278. }
  279. EdNmbr->Text = String(AObj->VMS_CTLR_NMBR);
  280. EdId->Text = AObj->VMS_ID;
  281. EdVmsId->Text = AObj->VMS_CTLR_ID;
  282. EdVmsNm->Text = AObj->VMS_NM;
  283. APP_SetCode(CbUsagType, AObj->VMS_USAG_TYPE_CD);
  284. APP_SetCode(CbType, AObj->VMS_TYPE_CD);
  285. SePosX->Value = AObj->X_CRDN;
  286. SePosY->Value = AObj->Y_CRDN;
  287. EdCtlrIp->Text = AObj->VMS_CTLR_IP;
  288. EdCmncPort->Text = AObj->VMS_CMNC_PORT;
  289. EdWebCamIp->Text = AObj->WEB_CMRA_IP;
  290. EdWebCamPort->Text = AObj->WEB_CMRA_PORT;
  291. EdWebCamId->Text = AObj->WEB_CMRA_ID;
  292. EdWebCamPswd->Text = AObj->WEB_CMRA_PWD;
  293. EdWebCamStrm->Text = AObj->STRM_SESN_NM;
  294. SeMaxPhase->Value = AObj->VMS_MAX_PHSE_NUM;
  295. cxTimeOn->Clear();
  296. cxTimeOn->EditValue = Now().FormatString("hh:nn");
  297. cxTimeOn->EditValue = "00:00";
  298. cxTimeOff->Clear();
  299. cxTimeOff->EditValue = Now().FormatString("hh:nn");
  300. cxTimeOff->EditValue = "00:00";
  301. try
  302. {
  303. if (AObj->PANL_ON_TIME.Length() == 4) // 전팡관ON시각
  304. {
  305. String sPowerOnTime = AObj->PANL_ON_TIME;
  306. sPowerOnTime.Insert(":", 3);
  307. cxTimeOn->EditValue = sPowerOnTime;
  308. }
  309. }
  310. catch(Exception &e) { }
  311. try
  312. {
  313. if (AObj->PANL_OFF_TIME.Length() == 4) // 전광판OFF시각
  314. {
  315. String sPowerOffTime = AObj->PANL_OFF_TIME;
  316. sPowerOffTime.Insert(":", 3);
  317. cxTimeOff->EditValue = sPowerOffTime;
  318. }
  319. }
  320. catch(Exception &e) { }
  321. // FRAMEGisMap1->SelectObjectByPos(SePosX->Value, SePosY->Value, true);
  322. ChangeEditMode(3);
  323. }
  324. //---------------------------------------------------------------------------
  325. void __fastcall TVMSM100M::SelListData()
  326. {
  327. /* Google 아이콘 삭제 */
  328. FSelMkr = NULL;
  329. TGMMarker *pObjMarker = (TGMMarker*)GMMarker1;
  330. try
  331. {
  332. pObjMarker->Map = NULL;
  333. int nObjs = pObjMarker->Count;
  334. for (int ii = nObjs - 1; ii >= 0; ii--)
  335. {
  336. pObjMarker->Items[ii]->Visible = false;
  337. pObjMarker->Delete(ii);
  338. }
  339. pObjMarker->Clear();
  340. }
  341. catch(Exception &e)
  342. {
  343. }
  344. FRAMEVmsList1->UpdateList();
  345. UpdateIcon();
  346. }
  347. //---------------------------------------------------------------------------
  348. void __fastcall TVMSM100M::UpdateIcon()
  349. {
  350. if (!MapStart) return;
  351. TGMMarker *pMarker = GMMarker1;
  352. TMarker *pMk = NULL;
  353. TVmsCtlr *pObj;
  354. FRAMEGoogleMap->RemoveMarker(pMarker);
  355. try
  356. {
  357. try
  358. {
  359. VmsManager->FLists.Lock();
  360. FOR_STL(TVmsCtlr*, pObj, VmsManager->FLists)
  361. {
  362. if (pObj->DEL_YN == "Y") continue;
  363. pMk = pMarker->Add(pObj->Y_CRDN, pObj->X_CRDN, String(pObj->VMS_CTLR_NMBR));
  364. if (!pMk)
  365. {
  366. pObj->FData3 = NULL;
  367. continue;
  368. }
  369. pObj->FData3 = pMk;
  370. pMk->Tag = (int)pObj;
  371. pMk->Title = pObj->VMS_CTLR_ID;//VMS_NM;
  372. pMk->MarkerType = mtStyledMarker;//mtStandard; //mtStyledMarker
  373. pMk->StyledMarker->StyledIcon = siBubble;
  374. pMk->StyledMarker->BackgroundColor = clBlue;
  375. pMk->StyledMarker->TextColor = clWhite;
  376. pMk->StyledMarker->StarColor = clRed;
  377. String sContent = "";
  378. sContent += "<div style='width:135px; height:70px; float:left'>";
  379. sContent += "<font style=\"font-weight:bold;color:#0000FF\">" + String(pObj->VMS_CTLR_NMBR) + "</font><br>";
  380. sContent += pObj->VMS_CTLR_ID + "<br>";
  381. sContent += pObj->VMS_NM;
  382. sContent += "</div>";
  383. sContent += "<html:hidden [VMS]" + String(pObj->VMS_CTLR_NMBR) + " />";
  384. pMk->InfoWindow->DisableAutoPan = true;
  385. pMk->InfoWindow->HTMLContent = sContent;
  386. pMk->ShowInfoWinMouseOver = true;
  387. pMk->Icon = g_AppCfg.vms.ICON[icon_r];
  388. pMk->Visible = true;
  389. pMk->Clickable = true;
  390. }
  391. }
  392. __finally
  393. {
  394. VmsManager->FLists.UnLock();
  395. if (ChkViewIcon->Checked)
  396. {
  397. pMarker->Map = FRAMEGoogleMap1->GMMap1;
  398. }
  399. }
  400. }
  401. catch(...)
  402. {
  403. }
  404. }
  405. //---------------------------------------------------------------------------
  406. void __fastcall TVMSM100M::ChkViewIconClick(TObject *Sender)
  407. {
  408. if (ChkViewIcon->Checked)
  409. {
  410. GMMarker1->Map = FRAMEGoogleMap1->GMMap1;
  411. }
  412. else
  413. {
  414. GMMarker1->Map = NULL;
  415. }
  416. }
  417. //---------------------------------------------------------------------------
  418. void __fastcall TVMSM100M::BtnEditClick(TObject *Sender)
  419. {
  420. if (BtnEdit->Caption == FrmLang->lblEdit->Caption)//"편집")
  421. {
  422. //편집모드 시작
  423. if (FSelMkr)
  424. {
  425. FSelMkr->Draggable = true;
  426. }
  427. ChangeEditMode(0);
  428. FNewDb = false;
  429. }
  430. else
  431. {
  432. //편집모드 취소
  433. String sId = EdNmbr->Text;
  434. TVmsCtlr *pObj = VmsManager->FLists.Find(sId);
  435. if (FSelMkr)
  436. {
  437. if (pObj)
  438. {
  439. FSelMkr->Position->Lng = pObj->X_CRDN;
  440. FSelMkr->Position->Lat = pObj->Y_CRDN;
  441. }
  442. FSelMkr->Draggable = false;
  443. }
  444. ChangeEditMode(1);
  445. if (pObj)
  446. {
  447. CMM_SetGridRow(FRAMEVmsList1->CxList, FRAMEVmsList1->TvList, sId, FRAMEVmsList1->Column01->Index);
  448. DisplayInfo(pObj);
  449. }
  450. }
  451. }
  452. //---------------------------------------------------------------------------
  453. void __fastcall TVMSM100M::ChangeEditMode(int AEdit)
  454. {
  455. bool bEnabled = false;
  456. switch(AEdit)
  457. {
  458. case 0: //편집버튼클릭
  459. {
  460. BtnEdit->Enabled = true;
  461. BtnInsert->Enabled = false;
  462. BtnDelete->Enabled = false;
  463. BtnSave->Enabled = true;
  464. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  465. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  466. EditMode = true;
  467. }
  468. break;
  469. case 1: //편집[취소]버튼클릭
  470. {
  471. FormInit(); //화면을 모두 지운다.
  472. BtnEdit->Enabled = false;
  473. BtnInsert->Enabled = true;
  474. BtnDelete->Enabled = false;
  475. BtnSave->Enabled = false;
  476. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  477. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  478. //bEnabled = true;
  479. EditMode = false;
  480. }
  481. break;
  482. case 2: //추가
  483. {
  484. BtnEdit->Enabled = true;
  485. BtnInsert->Enabled = false;
  486. BtnDelete->Enabled = false;
  487. BtnSave->Enabled = true;
  488. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  489. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  490. EditMode = true;
  491. }
  492. break;
  493. case 3: //수정모드
  494. {
  495. BtnEdit->Enabled = true;
  496. BtnInsert->Enabled = true;
  497. BtnDelete->Enabled = true;
  498. BtnSave->Enabled = false;
  499. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  500. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  501. bEnabled = true;
  502. EditMode = false;
  503. }
  504. break;
  505. }
  506. if (AEdit == 0 || AEdit == 2)
  507. {
  508. FRAMEVmsList1->CxList->Enabled = false;
  509. }
  510. else
  511. {
  512. FRAMEVmsList1->CxList->Enabled = true;
  513. }
  514. PnlEdit->Enabled = EditMode;
  515. #if 0
  516. EdVmsId->Enabled = bEnabled;
  517. EdVmsNm->Enabled = bEnabled;
  518. CbUsagType->Enabled = bEnabled;
  519. CbType->Enabled = bEnabled;
  520. SePosX->Enabled = bEnabled;
  521. SePosY->Enabled = bEnabled;
  522. EdCtlrIp->Enabled = bEnabled;
  523. EdWebCamIp->Enabled = bEnabled;
  524. EdWebCamPort->Enabled = bEnabled;
  525. EdWebCamId->Enabled = bEnabled;
  526. EdWebCamPswd->Enabled = bEnabled;
  527. EdWebCamStrm->Enabled = bEnabled;
  528. cxTimeOn->Enabled = bEnabled;
  529. cxTimeOff->Enabled = bEnabled;
  530. #endif
  531. #if 0
  532. EdId->Properties->ReadOnly = bEnabled;
  533. EdRseId->Properties->ReadOnly = bEnabled;
  534. EdRoadSpotId->Properties->ReadOnly = bEnabled;
  535. EdLogCnncId->Properties->ReadOnly = bEnabled;
  536. EdLogCnncPwd->Properties->ReadOnly = bEnabled;
  537. EdIstlLctnNm->Properties->ReadOnly = bEnabled;
  538. SePosX->Properties->ReadOnly = bEnabled;
  539. SePosY->Properties->ReadOnly = bEnabled;
  540. EdIP->Properties->ReadOnly = bEnabled;
  541. EdPort->Properties->ReadOnly = bEnabled;
  542. CbMnfcCmpyCd->Properties->ReadOnly = bEnabled;
  543. SeCLCT_ABNR_BASI->Properties->ReadOnly = bEnabled;
  544. #endif
  545. }
  546. //---------------------------------------------------------------------------
  547. void __fastcall TVMSM100M::BtnInsertClick(TObject *Sender)
  548. {
  549. FormInit();
  550. //신규아이디를 얻어와서 화면을 초기화한다.
  551. int nNmbr, nId;
  552. if (!VmsManager->GetNextVmsId(nNmbr, nId))
  553. {
  554. Application->MessageBox(lblText1->Caption.c_str(),//L"새로운 VMS 정보를 생성하지 못하였습니다.\r\n프로그램 종료후에 다시 시도해 보세요.",
  555. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  556. return;
  557. }
  558. EdNmbr->Text = String(nNmbr);
  559. EdId->Text = String(nId);
  560. FNewMkr = GMMarkerNew->Items[0];
  561. FNewMkr->Position->Lat = FRAMEGoogleMap1->FCenterLat;
  562. FNewMkr->Position->Lng = FRAMEGoogleMap1->FCenterLng;
  563. FNewMkr->Visible = true;
  564. SePosX->Value = FNewMkr->Position->Lng;
  565. SePosY->Value = FNewMkr->Position->Lat;
  566. ChangeEditMode(2);
  567. FNewDb = true;
  568. }
  569. //---------------------------------------------------------------------------
  570. void __fastcall TVMSM100M::BtnDeleteClick(TObject *Sender)
  571. {
  572. #if 0
  573. if (!FRAMEGisMap1->MapStart) return;
  574. #endif
  575. int nIdx = m_pGDC->FocusedRecordIndex;
  576. if (nIdx < 0) return;
  577. String sId = EdNmbr->Text;
  578. if (sId.IsEmpty())
  579. {
  580. Application->MessageBox(lblText2->Caption.c_str(),//L"삭제할 VMS를 목록에서 선택하세요.\r\n목록에서 더블클릭하여 선택합니다.",
  581. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  582. return;
  583. }
  584. String sMsg;
  585. sMsg = lblText3->Caption + ": " + sId;//"VMS번호: " + sId;
  586. sMsg+= "\r\n" + lblText4->Caption;//"선택하신 VMS 정보를 삭제하시겠습니까?";
  587. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  588. TVmsCtlr *pObj = VmsManager->FLists.Find(sId);
  589. if (pObj)
  590. {
  591. if (VmsManager->DeleteVms(pObj))
  592. {
  593. pObj->DEL_YN = "Y";
  594. FRAMEVmsList1->UpdateList();
  595. UpdateIcon();
  596. }
  597. FUpdate = true;
  598. Application->MessageBox(lblText5->Caption.c_str(),//L"VMS 정보삭제\r\nVMS 정보를 삭제 하였습니다.",
  599. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  600. FSelMkr = NULL;
  601. FormInit();
  602. ChangeEditMode(1);
  603. //UpdateIcon();
  604. #if 0
  605. TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "DeleteFacility", FAC_VMS + "|" + sId);
  606. #endif
  607. //POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  608. }
  609. }
  610. //---------------------------------------------------------------------------
  611. void __fastcall TVMSM100M::BtnSaveClick(TObject *Sender)
  612. {
  613. if (EdNmbr->Text.IsEmpty() ||
  614. EdId->Text.Trim().IsEmpty() ||
  615. EdVmsId->Text.Trim().IsEmpty() ||
  616. EdVmsNm->Text.Trim().IsEmpty() ||
  617. SePosX->Value == 0 ||
  618. SePosY->Value == 0 ||
  619. CbUsagType->Text.IsEmpty() ||
  620. CbType->Text.IsEmpty() ||
  621. EdCtlrIp->Text.IsEmpty())
  622. {
  623. Application->MessageBox(FrmLang->lblNecessary->Caption.c_str(),//L"★항목은 필수 입력 항목입니다.\r\n모두 입력후 진행해 주세요.",
  624. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  625. return;
  626. }
  627. String sNmbr = EdNmbr->Text;
  628. String sId = EdId->Text;
  629. int nNmbr = sNmbr.ToInt();
  630. if (!ITSUtil_CheckIpAddress(EdCtlrIp->Text.Trim()))
  631. {
  632. Application->MessageBox(lblText6->Caption.c_str(),//L"제어기 IP가 유효하지 않습니다.",
  633. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  634. return;
  635. }
  636. if (EdWebCamIp->Text.Trim() != "")
  637. {
  638. if (!ITSUtil_CheckIpAddress(EdCtlrIp->Text.Trim()))
  639. {
  640. Application->MessageBox(lblText7->Caption.c_str(),//L"웹카메라 IP가 유효하지 않습니다.",
  641. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  642. return;
  643. }
  644. }
  645. String sVmsId = EdVmsId->Text.Trim();
  646. VmsManager->FLists.Lock();
  647. FOR_STL(TVmsCtlr*, pTmpObj, VmsManager->FLists)
  648. {
  649. if (pTmpObj->DEL_YN == "Y") continue;
  650. if (pTmpObj->VMS_CTLR_NMBR == nNmbr) continue; //자기자신
  651. if (pTmpObj->VMS_CTLR_ID == sVmsId)
  652. {
  653. Application->MessageBox(lblText8->Caption.c_str(),//L"VMS ID가 이미 사용 중입니다. VMS ID를 확인하세요.",
  654. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  655. return;
  656. }
  657. }
  658. VmsManager->FLists.UnLock();
  659. TVmsCtlr *pObj;
  660. if (FNewDb)
  661. pObj = new TVmsCtlr();
  662. else
  663. pObj = VmsManager->FLists.Find(sNmbr);
  664. if (pObj)
  665. {
  666. pObj->VMS_CTLR_NMBR = nNmbr;
  667. pObj->VMS_ID = sId;
  668. pObj->VMS_CTLR_ID = sVmsId;
  669. pObj->VMS_NM = EdVmsNm->Text.Trim();
  670. pObj->VMS_USAG_TYPE_CD = APP_GetCode(CbUsagType);
  671. pObj->VMS_TYPE_CD = APP_GetCode(CbType);
  672. pObj->X_CRDN = SePosX->Value;
  673. pObj->Y_CRDN = SePosY->Value;
  674. pObj->VMS_CTLR_IP = EdCtlrIp->Text;
  675. pObj->VMS_CMNC_PORT = EdCmncPort->Text;
  676. if (pObj->VMS_CMNC_PORT.Trim() == "") pObj->VMS_CMNC_PORT = "0";
  677. pObj->PANL_ON_TIME = cxTimeOn->Time.FormatString("HHNN");
  678. pObj->PANL_OFF_TIME = cxTimeOff->Time.FormatString("HHNN");
  679. pObj->WEB_CMRA_IP = EdWebCamIp->Text;
  680. pObj->WEB_CMRA_PORT = EdWebCamPort->Text.ToIntDef(0);
  681. pObj->WEB_CMRA_ID = EdWebCamId->Text;
  682. pObj->WEB_CMRA_PWD = EdWebCamPswd->Text;
  683. pObj->STRM_SESN_NM = EdWebCamStrm->Text;
  684. pObj->VMS_MAX_PHSE_NUM = SeMaxPhase->Value;
  685. pObj->Completed = true;
  686. pObj->MEM_DEL = "N";
  687. bool bResult;
  688. if (FNewDb)
  689. {
  690. pObj->DEL_YN = "N";
  691. pObj->FRST_REGR_NMBR = g_pLOGIN->sUserId;
  692. pObj->FRST_RGST_DT = Now().FormatString("yyyymmddhhnnss");
  693. pObj->VMS_MAX_PHSE_NUM = 16; //VMS 최대 표출면 개수
  694. pObj->VMS_PHSE_CHNG_CYCL = 5; //VMS 표출면 변경 주기(계획된 메시지의 동작시간(초))
  695. pObj->VMS_CMNC_ERR_BASS_VAL = 127; //VMS 통신 오류 기본 값(모듈 전원이 꺼지는 온도값(℃))
  696. pObj->FAN_MTNS_TMPR = 35; //팬동작온도
  697. pObj->HETR_MTNS_TMPR = 0; //히터동작온도
  698. pObj->VMS_MODL_ERR_RATE = 20; //모듈장애율(Options)
  699. bResult = VmsManager->InsertVms(pObj);
  700. if (bResult)
  701. {
  702. VmsManager->FLists.Push(sNmbr, pObj);
  703. }
  704. }
  705. else
  706. {
  707. pObj->LAST_CRPR_NMBR = g_pLOGIN->sUserId;
  708. pObj->LAST_CRCT_DT = Now().FormatString("yyyymmddhhnnss");
  709. bResult = VmsManager->UpdateVms(pObj);
  710. }
  711. if (bResult)
  712. {
  713. Application->MessageBox(lblText9->Caption.c_str(),//L"VMS 정보저장\r\nVMS 정보를 저장 하였습니다.",
  714. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  715. FUpdate = true;
  716. FRAMEVmsList1->UpdateList();
  717. UpdateIcon();
  718. CMM_SetGridRow(FRAMEVmsList1->CxList, FRAMEVmsList1->TvList, sNmbr, FRAMEVmsList1->Column01->Index);
  719. DisplayInfo(pObj, true);
  720. //POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  721. }
  722. }
  723. }
  724. //---------------------------------------------------------------------------
  725. void __fastcall TVMSM100M::FRAMEVmsList1TvListCellDblClick(TcxCustomGridTableView *Sender,
  726. TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  727. TShiftState AShift, bool &AHandled)
  728. {
  729. if (!ACellViewInfo) return;
  730. int nRow = FRAMEVmsList1->TvList->DataController->FocusedRecordIndex;
  731. if( nRow <= -1 )
  732. return;
  733. int nMemPtr = FRAMEVmsList1->TvList->DataController->Values[nRow][FRAMEVmsList1->Column99->Index];
  734. TVmsCtlr* pObj = (TVmsCtlr*)nMemPtr;
  735. DisplayInfo(pObj, true);
  736. }
  737. //---------------------------------------------------------------------------
  738. void __fastcall TVMSM100M::EdWebCamPortKeyPress(TObject *Sender, wchar_t &Key)
  739. {
  740. if (Key > '9' || Key < '0')
  741. {
  742. if (Key != VK_BACK && Key != VK_TAB && Key != '-')
  743. Key = 0;
  744. }
  745. }
  746. //---------------------------------------------------------------------------
  747. void __fastcall TVMSM100M::BtnSaveAllClick(TObject *Sender)
  748. {
  749. String sMsg;
  750. sMsg = "";
  751. sMsg+= "\r\n" + lblText10->Caption;//제어기 설정 정보를 전체 VMS에 동일하게 적용 하시겠습니까?";
  752. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  753. TVmsCtlr* pObj = NULL;
  754. try
  755. {
  756. pObj = new TVmsCtlr();
  757. pObj->PANL_ON_TIME = cxTimeOn->Time.FormatString("HHNN");
  758. pObj->PANL_OFF_TIME = cxTimeOff->Time.FormatString("HHNN");
  759. pObj->LAST_CRPR_NMBR = g_pLOGIN->sUserId;
  760. pObj->LAST_CRCT_DT = Now().FormatString("yyyymmddhhnnss");
  761. if (VmsManager->UpdateCtlrInfo(pObj))
  762. {
  763. FUpdate = true;
  764. VmsManager->FLists.Lock();
  765. FOR_STL(TVmsCtlr*, pTmpObj, VmsManager->FLists)
  766. {
  767. if (pTmpObj->DEL_YN == "Y") continue;
  768. pTmpObj->PANL_ON_TIME = pObj->PANL_ON_TIME;
  769. pTmpObj->PANL_OFF_TIME = pObj->PANL_OFF_TIME;
  770. pTmpObj->LAST_CRPR_NMBR = pObj->LAST_CRPR_NMBR;
  771. pTmpObj->LAST_CRCT_DT = pObj->LAST_CRCT_DT;
  772. }
  773. VmsManager->FLists.UnLock();
  774. Application->MessageBox(lblText11->Caption.c_str(),//L"VMS 제어기설정 정보저장\r\n제어기 설정 정보를 전체 제어기에 적용 하였습니다.",
  775. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  776. }
  777. }
  778. __finally
  779. {
  780. if (pObj)
  781. {
  782. delete pObj;
  783. pObj = NULL;
  784. }
  785. }
  786. }
  787. //---------------------------------------------------------------------------
  788. void __fastcall TVMSM100M::SeMaxPhasePropertiesChange(TObject *Sender)
  789. {
  790. if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue)
  791. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue;
  792. else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue &&
  793. ((TcxSpinEdit*)Sender)->Properties->MaxValue)
  794. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue;
  795. }
  796. //---------------------------------------------------------------------------
  797. void __fastcall TVMSM100M::MakeVmsWebCamHtml_ICSVIEW(TVmsCtlr *AObj)
  798. {
  799. FILE *AFd = NULL;
  800. String sVmsDir = g_sAppDir + "VMS\\";
  801. try
  802. {
  803. AnsiString sVmsHtml;
  804. sVmsHtml.printf("%s%d.html", AnsiString(sVmsDir).c_str(), AObj->VMS_CTLR_NMBR);
  805. if ((AFd = fopen(sVmsHtml.c_str(), "w")) == NULL)
  806. {
  807. return;
  808. }
  809. fprintf(AFd, "<html xmlns=\"http://www.w3.org/1999/xhtml\"\n");
  810. fprintf(AFd, " xmlns:v=\"urn:schemas-microsoft-com:vml\"\n");
  811. fprintf(AFd, " style=\"padding:0px; margin:0px; border:1px\">\n");
  812. fprintf(AFd, "<head>\n");
  813. fprintf(AFd, "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n");
  814. fprintf(AFd, "<title>%s</title>\n", AnsiString(AObj->WEB_CMRA_IP).c_str());
  815. fprintf(AFd, "<meta name=\"Author\" content=\"\">\n");
  816. fprintf(AFd, "<meta name=\"Keywords\" content=\"\">\n");
  817. fprintf(AFd, "<meta name=\"Description\" content=\"\"> \n");
  818. fprintf(AFd, "<style>\n");
  819. fprintf(AFd, "html, body {width:100%; height:100%; margin:0; padding:0;}\n");
  820. fprintf(AFd, "</style>\n");
  821. fprintf(AFd, "<script language=\"JavaScript\">\n");
  822. fprintf(AFd, "<!--\n");
  823. fprintf(AFd, "function window_onunload() {\n");
  824. fprintf(AFd, " IcsView1.Stop();\n");
  825. fprintf(AFd, "}\n");
  826. fprintf(AFd, "function window_onload() {\n");
  827. fprintf(AFd, " IcsView1.ShowTitle=false;\n");
  828. fprintf(AFd, " IcsView1.ShowStatusBar=false;\n");
  829. //fprintf(AFd, " IcsView1.Username='%s';\n", AnsiString(pObj->WEB_CMRA_ID).c_str());
  830. //fprintf(AFd, " IcsView1.Password='%s';\n", AnsiString(pObj->WEB_CMRA_PWD).c_str());
  831. fprintf(AFd, " IcsView1.UseTCP=true;\n");
  832. fprintf(AFd, " IcsView1.UseRtspOverHttp=false;\n");
  833. fprintf(AFd, " IcsView1.RtspOverHttpPort=80;\n");
  834. fprintf(AFd, " IcsView1.Play('%s', 0);\n", AnsiString(AObj->WEB_CMRA_IP).c_str());
  835. fprintf(AFd, "}\n");
  836. fprintf(AFd, "//-->\n");
  837. fprintf(AFd, "</script>\n");
  838. fprintf(AFd, "</head>\n");
  839. fprintf(AFd, "<body onload=\"window_onload()\" onunload=\"window_onunload()\" bgcolor=black scroll=no>\n");
  840. fprintf(AFd, " <div id=\"view1\" style=\"border-style:none;position:absolute;width:100%;height:100%;\">\n");
  841. fprintf(AFd, " <object id=\"IcsView1\" name=\"view_1\"\n");
  842. fprintf(AFd, " codebase=http://www.icantek.com/viewer/activex/icsview.cab#Version=3,8,2,3\n");
  843. fprintf(AFd, " classid=\"clsid:563DF2AD-1EB7-4C84-8DA8-52A0A134E30E\"\n");
  844. fprintf(AFd, " width=\"100%\" height=\"100%\">\n");
  845. fprintf(AFd, " <param name=\"_Version\" value=\"65539\">\n");
  846. fprintf(AFd, " <param name=\"_ExtentX\" value=\"8467\">\n");
  847. fprintf(AFd, " <param name=\"_ExtentY\" value=\"6350\">\n");
  848. fprintf(AFd, " <param name=\"_StockProps\" value=\"0\">\n");
  849. fprintf(AFd, " <param name=\"Mute\" value=\"0\">\n");
  850. fprintf(AFd, " <param name=\"Brightness\" value=\"0\">\n");
  851. fprintf(AFd, " <param name=\"Contrast\" value=\"0\">\n");
  852. fprintf(AFd, " <param name=\"Rotated\" value=\"0\">\n");
  853. fprintf(AFd, " <param name=\"UseTCP\" value=\"0\">\n");
  854. fprintf(AFd, " <param name=\"UseRtspOverHttp\" value=\"0\">\n");
  855. fprintf(AFd, " <param name=\"RtspPort\" value=\"554\">\n");
  856. fprintf(AFd, " <param name=\"RtspOverHttpPort\" value=\"80\">\n");
  857. fprintf(AFd, " <param name=\"ToolTipText\" value=\"choose\">\n");
  858. fprintf(AFd, " </object>\n");
  859. fprintf(AFd, " </div>\n");
  860. fprintf(AFd, "</body>\n");
  861. fprintf(AFd, "</html>\n");
  862. fclose(AFd);
  863. }
  864. catch(Exception &e)
  865. {
  866. }
  867. }
  868. //---------------------------------------------------------------------------
  869. void __fastcall TVMSM100M::MakeVmsWebCamHtml_STWEB(TVmsCtlr *AObj)
  870. {
  871. FILE *AFd = NULL;
  872. String sVmsDir = g_sAppDir + "VMS\\";
  873. try
  874. {
  875. AnsiString sVmsHtml;
  876. sVmsHtml.printf("%s%d.html", AnsiString(sVmsDir).c_str(), AObj->VMS_CTLR_NMBR);
  877. if ((AFd = fopen(sVmsHtml.c_str(), "w")) == NULL)
  878. {
  879. return;
  880. }
  881. fprintf(AFd, "<html xmlns=\"http://www.w3.org/1999/xhtml\"\n");
  882. fprintf(AFd, " xmlns:v=\"urn:schemas-microsoft-com:vml\"\n");
  883. fprintf(AFd, " style=\"padding:0px; margin:0px; border:1px\">\n");
  884. fprintf(AFd, "<head>\n");
  885. fprintf(AFd, "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n");
  886. fprintf(AFd, "<title>%s</title>\n", AnsiString(AObj->WEB_CMRA_IP).c_str());
  887. fprintf(AFd, "<meta name=\"Author\" content=\"\">\n");
  888. fprintf(AFd, "<meta name=\"Keywords\" content=\"\">\n");
  889. fprintf(AFd, "<meta name=\"Description\" content=\"\">\n");
  890. fprintf(AFd, "<style>\n");
  891. fprintf(AFd, "html, body {width:100%; height:100%; margin:0; padding:0;}\n");
  892. fprintf(AFd, "</style>\n");
  893. fprintf(AFd, "<script language=\"JavaScript\">\n");
  894. fprintf(AFd, "<!--\n");
  895. fprintf(AFd, "var SISOPlugin = null;\n");
  896. fprintf(AFd, "function window_onunload() {\n");
  897. fprintf(AFd, " SISOPlugin.Stop();\n");
  898. fprintf(AFd, "}\n");
  899. fprintf(AFd, "function window_onload() {\n");
  900. fprintf(AFd, " SISOPlugin = document.getElementById(\"STWebViwer1\");\n");
  901. fprintf(AFd, " var userName = \"%s\";\n", AnsiString(AObj->WEB_CMRA_ID).c_str());
  902. fprintf(AFd, " var userPW = \"%s\";\n", AnsiString(AObj->WEB_CMRA_PWD).c_str());
  903. fprintf(AFd, " if (userName != \"\") {\n");
  904. fprintf(AFd, " SISOPlugin.SetSecurityEnhancement();\n");
  905. fprintf(AFd, " }\n");
  906. fprintf(AFd, " SISOPlugin.LivePlay('%s', 4520, 1, userName, userPW);\n", AnsiString(AObj->WEB_CMRA_IP).c_str());
  907. fprintf(AFd, "}\n");
  908. fprintf(AFd, "//-->\n");
  909. fprintf(AFd, "</script>\n");
  910. fprintf(AFd, "</head>\n");
  911. fprintf(AFd, "<body onload=\"window_onload()\" onunload=\"window_onunload()\" bgcolor=black scroll=no>\n");
  912. fprintf(AFd, " <div id=\"view1\" style=\"border-style:none;position:absolute;width:100%;height:100%;\">\n");
  913. fprintf(AFd, " <object id=\"STWebViwer1\" name=\"STWebViwer1\"\n");
  914. fprintf(AFd, " classid=\"clsid:58930875-5F98-4151-B894-A7A3EA94ABC8\"\n");
  915. fprintf(AFd, " width=\"100%\" height=\"100%\">\n");
  916. fprintf(AFd, " </object>\n");
  917. fprintf(AFd, " </div>\n");
  918. fprintf(AFd, "</body>\n");
  919. fprintf(AFd, "</html>\n");
  920. fclose(AFd);
  921. }
  922. catch(Exception &e)
  923. {
  924. }
  925. }
  926. //---------------------------------------------------------------------------
  927. void __fastcall TVMSM100M::LblCaptionDblClick(TObject *Sender)
  928. {
  929. String sVmsDir = g_sAppDir + "VMS\\";
  930. ForceDirectories(sVmsDir.c_str());
  931. try
  932. {
  933. VmsManager->FLists.Lock();
  934. FOR_STL(TVmsCtlr*, pObj, VmsManager->FLists)
  935. {
  936. if (pObj->DEL_YN == "Y") continue;
  937. if (pObj->STRM_SESN_NM.Trim() == "icsview")
  938. MakeVmsWebCamHtml_ICSVIEW(pObj);
  939. else
  940. if (pObj->STRM_SESN_NM.Trim() == "stweb")
  941. MakeVmsWebCamHtml_STWEB(pObj);
  942. }
  943. }
  944. __finally
  945. {
  946. VmsManager->FLists.UnLock();
  947. }
  948. }
  949. //---------------------------------------------------------------------------
  950. void __fastcall TVMSM100M::cxButton1Click(TObject *Sender)
  951. {
  952. if (Application->MessageBox(L"VMS 웹카메라 뷰어 파일을 생성하시겠습니까?\r\n기존 파일을 삭제한 후 새롭게 생성합니다.",
  953. L"VMS 웹카메라 뷰어 파일 생성 확인", MB_YESNO|MB_ICONQUESTION) != IDYES)
  954. {
  955. return;
  956. }
  957. LblCaptionDblClick(Sender);
  958. Application->MessageBox(L"VMS 웹카메라 뷰어 파일 생성 하였습니다.",
  959. L"VMS 웹카메라 뷰어 파일 생성 확인", MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  960. }
  961. //---------------------------------------------------------------------------
  962. void __fastcall TVMSM100M::GMMarker1Click(TObject *Sender, TLatLng *LatLng, int Index,
  963. TLinkedComponent *LinkedComponent)
  964. {
  965. try
  966. {
  967. TMarker *pMkr = GMMarker1->Items[Index];
  968. if (EditMode)
  969. {
  970. //pMkr->Draggable = true;
  971. }
  972. else
  973. {
  974. int nTag = pMkr->Tag;
  975. TVmsCtlr *pObj = (TVmsCtlr*)nTag;
  976. if (!pObj) return;
  977. CMM_SetGridRow(FRAMEVmsList1->CxList, FRAMEVmsList1->TvList, String(pObj->VMS_CTLR_NMBR), FRAMEVmsList1->Column01->Index);
  978. DisplayInfo(pObj);
  979. }
  980. }
  981. catch(Exception &e)
  982. {
  983. }
  984. }
  985. //---------------------------------------------------------------------------
  986. void __fastcall TVMSM100M::GMMarker1DragEnd(TObject *Sender, TLatLng *LatLng, int Index,
  987. TLinkedComponent *LinkedComponent)
  988. {
  989. SePosY->Value = FRAMEGoogleMap1->FLat;//LatLng->Lat;
  990. SePosX->Value = FRAMEGoogleMap1->FLng;//LatLng->Lng;
  991. }
  992. //---------------------------------------------------------------------------
  993. void __fastcall TVMSM100M::GMMarkerNewDragEnd(TObject *Sender, TLatLng *LatLng, int Index,
  994. TLinkedComponent *LinkedComponent)
  995. {
  996. SePosY->Value = FRAMEGoogleMap1->FLat;//FNewMkr->Position->Lat;//LatLng->Lat;
  997. SePosX->Value = FRAMEGoogleMap1->FLng;//FNewMkr->Position->Lng;//LatLng->Lng;
  998. }
  999. //---------------------------------------------------------------------------