//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "ITSLangTransF.h" #include "ITSMapF.h" #include "CDSCodeF.h" #include "CDSFacilityF.h" #include "CDSNodeF.h" #include "CDSLinkF.h" #include "CDSCctvCtlrF.h" #include "WindowMsgF.h" #include "ITS_OPLibF.h" #pragma hdrstop #include "CTVM100MF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxButtons" #pragma link "cxContainer" #pragma link "cxControls" #pragma link "cxDropDownEdit" #pragma link "cxEdit" #pragma link "cxGraphics" #pragma link "cxGroupBox" #pragma link "cxLabel" #pragma link "cxLookAndFeelPainters" #pragma link "cxLookAndFeels" #pragma link "cxMaskEdit" #pragma link "cxSpinEdit" #pragma link "cxSplitter" #pragma link "cxTextEdit" #pragma link "dxSkinBlue" #pragma link "dxSkinsCore" #pragma link "dxSkinBlack" #pragma link "dxSkinMcSkin" #pragma link "FRAME_OpenMapF" #pragma link "FRAME_CctvListF" #pragma resource "*.dfm" TCTVM100M *CTVM100M = NULL; //--------------------------------------------------------------------------- void TCTVM100M_MapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst) { try { if (!CTVM100M) return; CTVM100M->OpenMapCallback(ASender, AFunc, AArgs, AFirst); } catch(Exception &exception) { } } //--------------------------------------------------------------------------- __fastcall TCTVM100M::TCTVM100M(TComponent* Owner) : TForm(Owner) { LangTrans->Translate(this, ITSDb_GetConnection()); ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); FUpdate= false; FTitle = Caption;//"CCTV ±âº»Á¤º¸ °ü¸®"; FRAMECctvList1->PnlTop->Visible = false; FRAMECctvList1->PnlBottom->Visible = false; FRAMECctvList1->ColumnSel->Visible = false; FRAMECctvList1->Column13->Options->Editing = false; m_pGDC = FRAMECctvList1->TvList->DataController; FLayerIdx = LyrTp_Cctv; FRAMEOpenMap1->LayerIdx = FLayerIdx; FRAMEOpenMap1->MapCallbackFunc = TCTVM100M_MapCallback; EditMode = false; } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::CommClose() { try { CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::FormShow(TObject *Sender) { Refresh(); FRAMEOpenMap1->OpenMap(); //APP_FillCode(CbType, "WCAM"); CctvCtlrManager->FLists.Lock(); try { FOR_STL(TCctvCtlr*, pObj, CctvCtlrManager->FLists) { if (pObj->DEL_YN == "Y") continue; pObj->FData3 = NULL; } } __finally { CctvCtlrManager->FLists.UnLock(); } FormInit(); ChangeEditMode(1); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::FormInit() { if (FRAMEOpenMap1->MapStart) { try { String sLinkId = Ed_LINK_ID->Text; if (sLinkId != "") { sJs.printf(L"updateEditLink('%s', 0)", sLinkId.c_str()); FRAMEOpenMap1->ExecScript(sJs); } } catch(...) { } } EdNmbr->Text = ""; EdCtlrId->Text = ""; EdCtlrNm->Text = ""; ISTL_LCTN_NM->Text = ""; ISTL_LCTN_ADDR->Text = ""; SePosX->Value = 0; SePosY->Value = 0; EdCtlrIp->Text = ""; EdCmncPort->Text = "0"; Se_CCTV_CTLR_PORT->Value = 0; Se_TYPE->Value = 1; Ed_CCTV_ENCD_IP->Text = ""; //ÀÎÄÚµå IP Ed_CCTV_CAPT_IP->Text = ""; //ÀÚ¸·±â IP Ed_STRM_SESN_NM->Text = ""; Ed_STRM_RTSP_ADDR->Text = ""; Ed_STRM_RTMP_ADDR->Text = ""; Ed_STRM_HTTP_ADDR->Text = ""; Ed_INTR_RTMP_ADDR->Text = ""; Ed_LINK_ID->Text = ""; EdTmpLinkId->Text = ""; FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; FRAMECctvList1->UpdateList(); } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); CTVM100M = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::FormCloseQuery(TObject *Sender, bool &CanClose) { if (FUpdate) { POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } FRAMECctvList1->OnCloseQuery(CanClose); FRAMEOpenMap1->OnCloseQuery(CanClose); } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::DisplayInfo(TCctvCtlr* AObj, bool AMoveObj/*=true*/) { FormInit(); if (!AObj) return; if (AMoveObj) { sJs.printf(L"selectLayerObject(%d, '%s', %d)", FLayerIdx, AObj->CTLR_NMBR.c_str(), FRAMEOpenMap1->MapZoom); FRAMEOpenMap1->ExecScript(sJs); } EdNmbr->Text = AObj->CTLR_NMBR; EdCtlrId->Text = AObj->CTLR_ID; EdCtlrNm->Text = AObj->NAME; ISTL_LCTN_NM->Text = AObj->ISTL_LCTN_NM; ISTL_LCTN_ADDR->Text = AObj->ISTL_LCTN_ADDR; SePosX->Value = AObj->X_CRDN; SePosY->Value = AObj->Y_CRDN; EdCtlrIp->Text = AObj->CTLR_IP; //EdCmncPort->Text = AObj->CTLR_PORT; Se_CCTV_CTLR_PORT->Value = AObj->CTLR_PORT; Se_TYPE->Value = AObj->CCTV_TYPE.ToIntDef(1); Ed_CCTV_ENCD_IP->Text = AObj->CCTV_ENCD_IP; //ÀÎÄÚµå IP Ed_CCTV_CAPT_IP->Text = AObj->CCTV_CAPT_IP; //ÀÚ¸·±â IP Ed_STRM_SESN_NM->Text = AObj->STRM_SESN_NM; Ed_STRM_RTSP_ADDR->Text = AObj->STRM_RTSP_ADDR; Ed_STRM_RTMP_ADDR->Text = AObj->STRM_RTMP_ADDR; Ed_STRM_HTTP_ADDR->Text = AObj->STRM_HTTP_ADDR; Ed_INTR_RTMP_ADDR->Text = AObj->INTR_RTMP_ADDR; Ed_LINK_ID->Text = AObj->LINK_ID; // FRAMEGisMap1->SelectObjectByPos(SePosX->Value, SePosY->Value, true); ChangeEditMode(3); DisplayLink(AObj); } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::DisplayLink(TCctvCtlr* AObj) { if (!AObj) return; String sLinkId = AObj->LINK_ID; if (sLinkId != "") { sJs.printf(L"updateEditLink('%s', %d)", sLinkId.c_str(), 3); FRAMEOpenMap1->ExecScript(sJs); } } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::UpdateIcon() { if (!FRAMEOpenMap1->MapStart) return; sJs.printf(L"removeLayerObject(%d)", FLayerIdx); FRAMEOpenMap1->ExecScript(sJs); String arrObj = ""; String sTemp; CctvCtlrManager->FLists.Lock(); try { FOR_STL(TCctvCtlr*, pObj, CctvCtlrManager->FLists) { if (pObj->DEL_YN == "Y") continue; if (arrObj != "") arrObj += "|"; sTemp.printf(L"%s,%s,%s,%.6f,%.6f,0,0,0,0", pObj->CTLR_NMBR.c_str(), pObj->CTLR_ID.c_str(), pObj->NAME.c_str(), pObj->X_CRDN, pObj->Y_CRDN); arrObj += sTemp; } } __finally { CctvCtlrManager->FLists.UnLock(); if (arrObj != "") { sJs.printf(L"addFacility(%d, '%s')", FLayerIdx, arrObj.c_str()); FRAMEOpenMap1->ExecScript(sJs); } } } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::BtnEditClick(TObject *Sender) { String sId = EdNmbr->Text; TCctvCtlr *pObj = CctvCtlrManager->FLists.Find(sId); FNewDb = false; if (BtnEdit->Caption == FrmLang->lblEdit->Caption)//"ÆíÁý") { //ÆíÁý¸ðµå ½ÃÀÛ ChangeEditMode(0); if (pObj) { //½Ã¼³¹°¾ÆÀÌÄÜÀ» ÆíÁý¾ÆÀÌÄÜÀ¸·Î º¯°æ //function editFacilityObject(ALyrIdx, ANmbr, AComm(0:¿À·ù-ÆíÁý,1:Á¤»ó), AEdit(ÆíÁý¸ðµå:1-ÆíÁý,0-ÆíÁýÃë¼Ò)) sJs.printf(L"editFacilityObject(%d, %s, 1, 1)", FLayerIdx, pObj->CTLR_NMBR.c_str()); FRAMEOpenMap1->ExecScript(sJs); } } else { //ÆíÁý¸ðµå Ãë¼Ò ChangeEditMode(1); if (pObj) { //¿ø·¡ Á¤º¸¸¦ È­¸é¿¡ Ç¥Ãâ CMM_SetGridRow(FRAMECctvList1->CxList, FRAMECctvList1->TvList, sId, FRAMECctvList1->Column01->Index); DisplayInfo(pObj, false); #if 0 //Áöµµ½Ã¼³¹°¾ÆÀÌÄÜÀ» ¿ø·¡¾ÆÀÌÄÜÀ¸·Î º¯°æ sJs.printf(L"editFacilityObject(%d, %s, 0, 0)", FLayerIdx, pObj->CTLR_NMBR.c_str()); FRAMEOpenMap1->ExecScript(sJs); #else //Ãß°¡ ¸ðµå¿¡¼­ Ãë¼ÒÇÏ´Â °æ¿ì Áöµµ¿¡ ½Å±Ô·Î Ãß°¡ÇÑ °´Ã¼¸¦ ã¾Æ¼­ »èÁ¦ÇØ ÁÖ´Â°Í º¸´Ù //»õ·Ó°Ô ´Ù½Ã ±×¸®ÀÚ UpdateIcon(); #endif } else { //°´Ã¼°¡ ¾ø´Â °æ¿ì´Â Ãß°¡ ¸ðµå¿¡¼­ Ãë¼ÒÇÑ °æ¿ìÀÓ sJs.printf(L"removeFacilityObject(%d, %s)", FLayerIdx, sId.c_str()); FRAMEOpenMap1->ExecScript(sJs); } } } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::ChangeEditMode(int AEdit) { bool bEnabled = false; switch(AEdit) { case 0: //ÆíÁý¹öưŬ¸¯ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = FrmLang->lblCancel->Caption;//"Ãë¼Ò"; BtnEdit->Hint = FrmLang->lblCancel->Hint;//µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; EditMode = true; } break; case 1: //ÆíÁý[Ãë¼Ò]¹öưŬ¸¯ { FormInit(); //È­¸éÀ» ¸ðµÎ Áö¿î´Ù. BtnEdit->Enabled = false; BtnInsert->Enabled = true; BtnDelete->Enabled = false; BtnSave->Enabled = false; BtnEdit->Caption = FrmLang->lblEdit->Caption;//"ÆíÁý"; BtnEdit->Hint = FrmLang->lblEdit->Hint;//µ¥ÀÌÅÍ ÆíÁý"; //bEnabled = true; EditMode = false; } break; case 2: //Ãß°¡ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = FrmLang->lblCancel->Caption;//"Ãë¼Ò"; BtnEdit->Hint = FrmLang->lblCancel->Hint;//µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; EditMode = true; } break; case 3: //¼öÁ¤¸ðµå { BtnEdit->Enabled = true; BtnInsert->Enabled = true; BtnDelete->Enabled = true; BtnSave->Enabled = false; BtnEdit->Caption = FrmLang->lblEdit->Caption;//"ÆíÁý"; BtnEdit->Hint = FrmLang->lblEdit->Hint;//µ¥ÀÌÅÍ ÆíÁý"; bEnabled = true; EditMode = false; } break; } if (AEdit == 0 || AEdit == 2) { FRAMECctvList1->CxList->Enabled = false; } else { FRAMECctvList1->CxList->Enabled = true; } PnlEdit->Enabled = EditMode; } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::BtnInsertClick(TObject *Sender) { FormInit(); //½Å±Ô¾ÆÀ̵𸦠¾ò¾î¿Í¼­ È­¸éÀ» ÃʱâÈ­ÇÑ´Ù. int nNmbr, nId; if (!CctvCtlrManager->GetNextCctvId(nNmbr, nId)) { Application->MessageBox(lblText1->Caption.c_str(),//L"»õ·Î¿î CCTV Á¤º¸¸¦ »ý¼ºÇÏÁö ¸øÇÏ¿´½À´Ï´Ù.\r\nÇÁ·Î±×·¥ Á¾·áÈÄ¿¡ ´Ù½Ã ½ÃµµÇØ º¸¼¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } EdNmbr->Text = String(nNmbr); SePosX->Value = FRAMEOpenMap1->CenterX; SePosY->Value = FRAMEOpenMap1->CenterY; //Áöµµ¿¡ »õ·Î¿î ½Ã¼³¹° ¾ÆÀÌÄÜ Ãß°¡Çϸ鼭 ÆíÁý¸ðµå·Î º¯°æ String arrObj = ""; arrObj.printf(L"%d,New,New,%.6f,%.6f,0", nNmbr, FRAMEOpenMap1->CenterX, FRAMEOpenMap1->CenterY); sJs.printf(L"addFacilityObject(%d, '%s')", FLayerIdx, arrObj.c_str()); FRAMEOpenMap1->ExecScript(sJs); ChangeEditMode(2); FNewDb = true; } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::BtnDeleteClick(TObject *Sender) { if (!FRAMEOpenMap1->MapStart) return; int nIdx = m_pGDC->FocusedRecordIndex; if (nIdx < 0) return; String sId = EdNmbr->Text; if (sId.IsEmpty()) { Application->MessageBox(lblText2->Caption.c_str(),//L"»èÁ¦ÇÒ CCTV¸¦ ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.\r\n¸ñ·Ï¿¡¼­ ´õºíŬ¸¯ÇÏ¿© ¼±ÅÃÇÕ´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sMsg; sMsg = lblText3->Caption + ": " + sId;//"CCTV¹øÈ£: " + sId; sMsg+= "\r\n" + lblText4->Caption;//"¼±ÅÃÇϽŠCCTV Á¤º¸¸¦ »èÁ¦ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; TCctvCtlr *pObj = CctvCtlrManager->FLists.Find(sId); if (pObj) { if (CctvCtlrManager->DeleteCctv(pObj)) { pObj->DEL_YN = "Y"; FRAMECctvList1->UpdateList(); UpdateIcon(); } FUpdate = true; Application->MessageBox(lblText5->Caption.c_str(),//L"CCTV Á¤º¸»èÁ¦\r\nCCTV Á¤º¸¸¦ »èÁ¦ ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FormInit(); ChangeEditMode(1); UpdateIcon(); } } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::BtnSaveClick(TObject *Sender) { if (EdNmbr->Text.IsEmpty() || EdCtlrId->Text.Trim().IsEmpty() || EdCtlrNm->Text.Trim().IsEmpty() || SePosX->Value == 0 || SePosY->Value == 0 || EdCtlrIp->Text.IsEmpty()) { Application->MessageBox(FrmLang->lblNecessary->Caption.c_str(),//L"¡ÚÇ׸ñÀº Çʼö ÀÔ·Â Ç׸ñÀÔ´Ï´Ù.\r\n¸ðµÎ ÀÔ·ÂÈÄ ÁøÇàÇØ ÁÖ¼¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sNmbr = EdNmbr->Text; String sCtlrId = EdCtlrId->Text.Trim(); if (!ITSUtil_CheckIpAddress(EdCtlrIp->Text.Trim())) { Application->MessageBox(lblText6->Caption.c_str(),//L"Á¦¾î±â IP°¡ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } if (Ed_CCTV_ENCD_IP->Text.Trim() != "") { if (!ITSUtil_CheckIpAddress(Ed_CCTV_ENCD_IP->Text.Trim())) { Application->MessageBox(L"ÀÎÄÚ´õ IP°¡ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); Ed_CCTV_ENCD_IP->SetFocus(); return; } } if (Ed_CCTV_CAPT_IP->Text.Trim() != "") { if (!ITSUtil_CheckIpAddress(Ed_CCTV_CAPT_IP->Text.Trim())) { Application->MessageBox(L"ÀÚ¸·±â IP°¡ À¯È¿ÇÏÁö ¾Ê½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); Ed_CCTV_CAPT_IP->SetFocus(); return; } } CctvCtlrManager->FLists.Lock(); FOR_STL(TCctvCtlr*, pTmpObj, CctvCtlrManager->FLists) { if (pTmpObj->DEL_YN == "Y") continue; if (pTmpObj->CTLR_NMBR == sNmbr) continue; //ÀÚ±âÀڽŠif (pTmpObj->CTLR_ID == sCtlrId) { Application->MessageBox(lblText8->Caption.c_str(),//L"CCTV ID°¡ ÀÌ¹Ì »ç¿ë ÁßÀÔ´Ï´Ù. CCTV ID¸¦ È®ÀÎÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } } CctvCtlrManager->FLists.UnLock(); TCctvCtlr *pObj; if (FNewDb) pObj = new TCctvCtlr(); else pObj = CctvCtlrManager->FLists.Find(sNmbr); if (pObj) { pObj->CTLR_NMBR = sNmbr; pObj->CTLR_ID = sCtlrId; pObj->NAME = EdCtlrNm->Text.Trim(); pObj->CTLR_IP = EdCtlrIp->Text; pObj->CTLR_PORT = Se_CCTV_CTLR_PORT->Value; //EdCmncPort->Text.ToIntDef(0); pObj->CTLR_LOCAL_NO = 0; //pObj->CCTV_TYPE = APP_GetCode(CbType); pObj->ISTL_LCTN_NM = ISTL_LCTN_NM->Text.Trim(); pObj->ISTL_LCTN_ADDR = ISTL_LCTN_ADDR->Text.Trim(); pObj->X_CRDN = SePosX->Value; pObj->Y_CRDN = SePosY->Value; pObj->CCTV_TYPE = Se_TYPE->Value; pObj->CCTV_ENCD_IP = Ed_CCTV_ENCD_IP->Text; //ÀÎÄÚµå IP pObj->CCTV_CAPT_IP = Ed_CCTV_CAPT_IP->Text; //ÀÚ¸·±â IP pObj->STRM_SESN_NM = Ed_STRM_SESN_NM->Text; pObj->STRM_RTSP_ADDR = Ed_STRM_RTSP_ADDR->Text; pObj->STRM_RTMP_ADDR = Ed_STRM_RTMP_ADDR->Text; pObj->STRM_HTTP_ADDR = Ed_STRM_HTTP_ADDR->Text; pObj->INTR_RTMP_ADDR = Ed_INTR_RTMP_ADDR->Text; pObj->LINK_ID = Ed_LINK_ID->Text; pObj->Completed = true; pObj->MEM_DEL = "N"; bool bResult; if (FNewDb) { pObj->DEL_YN = "N"; bResult = CctvCtlrManager->InsertCctv(pObj); if (bResult) { CctvCtlrManager->FLists.Push(sNmbr, pObj); } } else { bResult = CctvCtlrManager->UpdateCctv(pObj); } if (bResult) { Application->MessageBox(lblText9->Caption.c_str(),//L"CCTV Á¤º¸ÀúÀå\r\nCCTV Á¤º¸¸¦ ÀúÀå ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FUpdate = true; FRAMECctvList1->UpdateList(); UpdateIcon(); CMM_SetGridRow(FRAMECctvList1->CxList, FRAMECctvList1->TvList, sNmbr, FRAMECctvList1->Column01->Index); DisplayInfo(pObj, true); } } } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::Ed_CMRA_PORTKeyPress(TObject *Sender, wchar_t &Key) { if (Key > '9' || Key < '0') { if (Key != VK_BACK && Key != VK_TAB && Key != '-') Key = 0; } } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::Se_CMRA_CHNLPropertiesChange(TObject *Sender) { if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue) ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue; else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue && ((TcxSpinEdit*)Sender)->Properties->MaxValue) ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue; } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::UpdateEditLink() { if (!FRAMEOpenMap1->MapStart) return; TItsNode* pNode; String STRT_NM; String END_NM; try { ItsLinkManager->FLists.Lock(); try { FOR_STL(TItsLink*, pLink, ItsLinkManager->FLists) { if (pLink->DEL_YN == "Y") continue; #if 0 pVrtx = pLink->Vrtxs.Find(nZoom); if (!pVrtx) continue; pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID); if (pNode) STRT_NM = pNode->NODE_NAME; else STRT_NM = " "; pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID); if (pNode) END_NM = pNode->NODE_NAME; else END_NM = " "; sJs.printf(L"addEditLink('%s', '%s', '%s', '%s', '%s', '%s')", pLink->LINK_ID.c_str(), pLink->ROAD_NAME.c_str(), STRT_NM.c_str(), END_NM.c_str(), pVrtx->X_CRDN_ARR.c_str(), pVrtx->Y_CRDN_ARR.c_str()); FRAMEOpenMap1->ExecScript(sJs); #else if (pLink->IsVertex) { pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID); if (pNode) STRT_NM = pNode->NODE_NAME; else STRT_NM = " "; pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID); if (pNode) END_NM = pNode->NODE_NAME; else END_NM = " "; sJs.printf(L"addEditLink('%s', '%s', '%s', '%s', '%s', '%s')", pLink->LINK_ID.c_str(), pLink->ROAD_NAME.c_str(), STRT_NM.c_str(), END_NM.c_str(), pLink->X_CRDN_ARR.c_str(), pLink->Y_CRDN_ARR.c_str()); FRAMEOpenMap1->ExecScript(sJs); } #endif } } __finally { ItsLinkManager->FLists.UnLock(); } FRAMEOpenMap1->ExecScript("makeEditLinkLayer()"); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::OpenMapCallback(TObject *ASender, const String AFunc, const String AArgs, const bool AFirst) { try { if (AFirst) { //Áöµµ¸¦ ÆíÁý¸ðµå·Î º¯°æ sJs.printf(L"setEditMode(%d, 1)", FLayerIdx); FRAMEOpenMap1->ExecScript(sJs); //ÆíÁý·¹ÀÌ¾î »ý¼º FRAMEOpenMap1->ExecScript("initEditLayer()"); //¹è°æ¸µÅ©·¹ÀÌ¾î »ý¼º UpdateEditLink(); //½Ã¼³¹°¾ÆÀÌÄÜ µî·Ï UpdateIcon(); sJs.printf(L"extentLayer(%d)", FLayerIdx); FRAMEOpenMap1->ExecScript(sJs); return; } if (AFunc.Pos("onlinkclick")) { TStringList *pStringList = new TStringList; pStringList->CommaText = AArgs; try { String sLyrType = pStringList->Strings[0]; String sLinkId = pStringList->Strings[1]; if (EditMode) { EdTmpLinkId->Text = sLinkId; } } catch(Exception &e) { } delete pStringList; } if (AFunc.Pos("onfacilitydragend")) { TStringList *pStringList = new TStringList; pStringList->CommaText = AArgs; try { String sNmbr = pStringList->Strings[0]; String sCenterLat = pStringList->Strings[1]; String sCenterLng = pStringList->Strings[2]; SePosX->Value = sCenterLat.ToDouble(); SePosY->Value = sCenterLng.ToDouble(); } catch(Exception &e) { } delete pStringList; } } catch(Exception &exception) { } } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::FRAMECctvList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; int nRow = FRAMECctvList1->TvList->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; int nMemPtr = FRAMECctvList1->TvList->DataController->Values[nRow][FRAMECctvList1->Column99->Index]; TCctvCtlr* pObj = (TCctvCtlr*)nMemPtr; DisplayInfo(pObj, true); } //--------------------------------------------------------------------------- void __fastcall TCTVM100M::BtnApplyClick(TObject *Sender) { if (EditMode) { Ed_LINK_ID->Text = EdTmpLinkId->Text.Trim(); } } //---------------------------------------------------------------------------