VMSM100MF.cpp 35 KB

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