//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "CDSCodeF.h" #include "CDSFacilityF.h" #include "ITSLangTransF.h" #pragma hdrstop #include "VDSM010MF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "FRAME_VdsListF" #pragma link "cxButtons" #pragma link "cxCheckBox" #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 "dxSkinBlack" #pragma link "dxSkinBlue" #pragma link "dxSkinsCore" #pragma link "FRAME_GoogleMapF" #pragma link "GMClasses" #pragma link "GMLinkedComponents" #pragma link "GMMap" #pragma link "GMMarker" #pragma link "GMMarkerVCL" #pragma resource "*.dfm" TVDSM010M *VDSM010M = NULL; //--------------------------------------------------------------------------- __fastcall TVDSM010M::TVDSM010M(TComponent* Owner) : TForm(Owner) { LangTrans->Translate(this, ITSDb_GetConnection()); ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); FTitle = Caption;//"VDS-Á¦¾î±â °ü¸®"; FUpdate= false; MapStart = false; FRAMEVdsList1->PnlTop->Visible = false; FRAMEVdsList1->PnlBottom->Visible = false; FRAMEVdsList1->ColumnSel->Visible = false; FRAMEVdsList1->Column02->Visible = false; m_pGDC = FRAMEVdsList1->TvList->DataController; FSelMkr = NULL; FNewMkr = GMMarkerNew->Items[0]; FNewMkr->Icon = g_AppCfg.vds.ICON[icon_s]; EditMode = false; } //--------------------------------------------------------------------------- /* * ´Ý±â¹öư À̳ª x¹öư Ŭ¸¯½Ã °øÅëÀ¸·Î ó¸®ÇÏ´Â ·ÎÁ÷À̵é¾î°£´Ù.. * Form°ú DataModule class¸¦ delete½ÃŲ´Ù. * arguments * * return * void */ void __fastcall TVDSM010M::CommClose() { try { CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- /* * FormÀ» º¸¿©ÁÙ¶§ È£ÃâµÇ´Â event ¸Þ¼­µåÀÌ´Ù. * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVDSM010M::FormShow(TObject *Sender) { Refresh(); CbTypeCd->Properties->Items->Clear(); TItsCode *FCodeRMF = ItsCodeManager->FLists.Find("RMF"); if (FCodeRMF) { FOR_STL(TItsSubCode *, pSubCode, FCodeRMF->FSubLists) { if (pSubCode->USE_YN == "N") continue; CbTypeCd->Properties->Items->Add(" [" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM); } } CbTypeCd->ItemIndex = 0; try { FRAMEVdsList1->MyItsVdsManager->FLists.Lock(); FOR_STL(TItsVds*, pObj, FRAMEVdsList1->MyItsVdsManager->FLists) { if (pObj->DEL_YN == "Y") continue; pObj->FData3 = NULL; } } __finally { FRAMEVdsList1->MyItsVdsManager->FLists.UnLock(); } FormInit(); ChangeEditMode(1); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- /* * form ÃʱâÈ­ * * arguments * * return * void */ void __fastcall TVDSM010M::FormInit() { EdId->Text = ""; EdMngmNmbr->Text = ""; CbTypeCd->ItemIndex = 0; CbValidYn->ItemIndex = 0; SePosX->Value = 0; SePosY->Value = 0; EdLctn->Text = ""; EdIP->Text = ""; EdPort->Text = ""; EdVdsId->Text = ""; SeClctCycle->Value = 0; SeSttsCycl->Value = 0; SeBordNum->Value = 0; if (FSelMkr) { FSelMkr->Icon = g_AppCfg.vds.ICON[icon_r]; FSelMkr->Draggable = false; FSelMkr = NULL; } FNewMkr->Visible = false; FNewDb = false; } //--------------------------------------------------------------------------- /* * FormÀÌ ShowµÇ°í ³­ ÈÄ ÃÖÃÊ 1ȸ ¼öÇàµÇ´Â ŸÀÌ¸Ó À̺¥Æ® * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVDSM010M::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; #if 0 FRAMEGisMap1->LinkLevel = 1; FRAMEGisMap1->LoadGisMap(); #else FRAMEGoogleMap1->LinkLevel = 1; FRAMEGoogleMap1->LoadGisMap(); MapStart = true; #endif FRAMEVdsList1->UpdateList(); UpdateIcon(); } //--------------------------------------------------------------------------- /* * Close ¹öư Ŭ¸¯ À̺¥Æ® Çڵ鷯 * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVDSM010M::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); VDSM010M = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::FormCloseQuery(TObject *Sender, bool &CanClose) { if (FUpdate) { POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } FRAMEVdsList1->OnCloseQuery(CanClose); } //--------------------------------------------------------------------------- TMarker * _fastcall TVDSM010M::FindObjectMarker(String AId) { TItsVds* pObj = FRAMEVdsList1->MyItsVdsManager->FLists.Find(AId); if (pObj) { return (TMarker*)pObj->FData3; } return (TMarker*)NULL; } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::DisplayInfo(TItsVds* AObj, bool AMoveVms/*=false*/) { FormInit(); if (!AObj) return; FSelMkr = FindObjectMarker(AObj->CTLR_MNGM_NMBR); if (FSelMkr) { FSelMkr->Icon = g_AppCfg.vds.ICON[icon_s]; if (AMoveVms) { FSelMkr->CenterMapTo(); } } EdId->Text = AObj->CTLR_MNGM_NMBR; EdMngmNmbr->Text = AObj->CTLR_MNGM_NMBR; CMM_SetComboBoxItem(CbTypeCd, AObj->CTLR_TYPE_CD); CbValidYn->Text = AObj->VALD_YN; SePosX->Value = StrToFloatDef(AObj->X_CRDN, 0); SePosY->Value = StrToFloatDef(AObj->Y_CRDN, 0); EdLctn->Text = AObj->LCTN; EdIP->Text = AObj->TRMN_IP; EdPort->Text = AObj->TRMN_PORT; SeClctCycle->Value = AObj->CTLR_CLCT_CYCL.ToIntDef(0); SeSttsCycl->Value = AObj->CTLR_STTS_CYCL.ToIntDef(0); SeBordNum->Value = AObj->DLTR_NMBR.ToIntDef(0); EdVdsId->Text = AObj->VDS_CTLR_ID; //FRAMEGisMap1->SelectObjectByPos(SePosX->Value, SePosY->Value, true); ChangeEditMode(3); } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::SelListData() { /* Google ¾ÆÀÌÄÜ »èÁ¦ */ FSelMkr = NULL; TGMMarker *pObjMarker = (TGMMarker*)GMMarker1; try { pObjMarker->Map = NULL; int nObjs = pObjMarker->Count; for (int ii = nObjs - 1; ii >= 0; ii--) { pObjMarker->Items[ii]->Visible = false; pObjMarker->Delete(ii); } pObjMarker->Clear(); } catch(Exception &e) { } FRAMEVdsList1->UpdateList(); UpdateIcon(); } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::UpdateIcon() { if (!MapStart) return; TGMMarker *pMarker = GMMarker1; TMarker *pMk = NULL; TItsFacility *pFacility; FRAMEGoogleMap->RemoveMarker(pMarker); try { try { FRAMEVdsList1->MyItsVdsManager->FLists.Lock(); FOR_STL(TItsVds*, pObj, FRAMEVdsList1->MyItsVdsManager->FLists) { if (pObj->DEL_YN == "Y") continue; pMk = pMarker->Add(pObj->Y_CRDN.ToDouble(), pObj->X_CRDN.ToDouble(), pObj->CTLR_MNGM_NMBR); if (!pMk) { pObj->FData3 = NULL; continue; } pObj->FData3 = pMk; pMk->Tag = (int)pObj; pMk->Title = pObj->VDS_CTLR_ID;//LCTN; pMk->MarkerType = mtStyledMarker;//mtStandard; //mtStyledMarker pMk->StyledMarker->StyledIcon = siMarker; //pMk->StyledMarker->StyledIcon = siBubble; pMk->StyledMarker->BackgroundColor = clBlue; pMk->StyledMarker->TextColor = clWhite; pMk->StyledMarker->StarColor = clRed; String sContent = ""; sContent += "
"; sContent += "" + (pObj->CTLR_MNGM_NMBR) + "
"; sContent += pObj->VDS_CTLR_ID + "
"; sContent += pObj->LCTN; sContent += "
"; sContent += "CTLR_MNGM_NMBR) + " />"; pMk->InfoWindow->DisableAutoPan = true; pMk->InfoWindow->HTMLContent = sContent; pMk->ShowInfoWinMouseOver = true; pMk->Icon = g_AppCfg.vds.ICON[icon_r]; pMk->Visible = true; pMk->Clickable = true; } } __finally { FRAMEVdsList1->MyItsVdsManager->FLists.UnLock(); if (ChkViewIcon->Checked) { pMarker->Map = FRAMEGoogleMap1->GMMap1; } } } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::ChkViewIconClick(TObject *Sender) { if (ChkViewIcon->Checked) { GMMarker1->Map = FRAMEGoogleMap1->GMMap1; } else { GMMarker1->Map = NULL; } } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::BtnEditClick(TObject *Sender) { if (BtnEdit->Caption == FrmLang->lblEdit->Caption)//"ÆíÁý") { //ÆíÁý¸ðµå ½ÃÀÛ if (FSelMkr) { FSelMkr->Draggable = true; } ChangeEditMode(0); FNewDb = false; } else { //ÆíÁý¸ðµå Ãë¼Ò String sId = EdId->Text; TItsVds *pObj = FRAMEVdsList1->MyItsVdsManager->FLists.Find(sId); if (FSelMkr) { if (pObj) { FSelMkr->Position->Lng = StrToFloatDef(pObj->X_CRDN, 0); FSelMkr->Position->Lat = StrToFloatDef(pObj->Y_CRDN, 0); } FSelMkr->Draggable = false; } ChangeEditMode(1); if (pObj) { CMM_SetGridRow(FRAMEVdsList1->CxList, FRAMEVdsList1->TvList, sId, FRAMEVdsList1->Column01->Index); DisplayInfo(pObj); } } } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::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) { FRAMEVdsList1->CxList->Enabled = false; } else { FRAMEVdsList1->CxList->Enabled = true; } PnlEdit->Enabled = EditMode; #if 0 EdId->Properties->ReadOnly = bEnabled; EdMngmNmbr->Properties->ReadOnly = bEnabled; CbTypeCd->Properties->ReadOnly = bEnabled; CbValidYn->Properties->ReadOnly = bEnabled; SePosX->Properties->ReadOnly = bEnabled; SePosY->Properties->ReadOnly = bEnabled; EdLctn->Properties->ReadOnly = bEnabled; EdIP->Properties->ReadOnly = bEnabled; EdPort->Properties->ReadOnly = bEnabled; SeClctCycle->Properties->ReadOnly = bEnabled; SeSttsCycl->Properties->ReadOnly = bEnabled; SeBordNum->Properties->ReadOnly = bEnabled; EdVdsId->Properties->ReadOnly = bEnabled; #endif } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::BtnInsertClick(TObject *Sender) { FormInit(); int nMsgType = MB_OK|MB_ICONERROR|MB_APPLMODAL; //½Å±Ô¾ÆÀ̵𸦠¾ò¾î¿Í¼­ È­¸éÀ» ÃʱâÈ­ÇÑ´Ù. String sId = InputBox(lblInput->Caption,//"Á¦¾î±â °ü¸®¹øÈ£", lblInQry->Caption,//"½Å±Ô Á¦¾î±â °ü¸®¹øÈ£¸¦ ÀÔ·ÂÇϼ¼¿ä(20Byte).", lblInput->Caption);//"ÃÖ´ë20ÀÚ¸®" ); sId = sId.Trim(); if (sId == lblInput->Caption //"Á¦¾î±â °ü¸®¹øÈ£" || sId == "") { return; } if (AnsiString(sId).Length() > 20) { Application->MessageBox(lblDigitErr->Caption.c_str(),//L"Á¦¾î±â °ü¸®¹øÈ£´Â 20Byte¸¦ ÃʰúÇÒ ¼ö ¾ø½À´Ï´Ù.", FTitle.c_str(), nMsgType); return; } TItsVds *pDb = (TItsVds *)FRAMEVdsList1->MyItsVdsManager->FLists.Find(sId); if (pDb) { String sErr = FrmLang->lbIdErr->Caption + "[" + sId + "]"; Application->MessageBox(sErr.c_str(),//("[" + sId + "]´Â »ç¿ëÇÒ ¼ö ¾ø´Â Á¦¾î±â °ü¸®¹øÈ£ ÀÔ´Ï´Ù.").c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } EdId->Text = sId; EdMngmNmbr->Text = sId; FNewMkr = GMMarkerNew->Items[0]; FNewMkr->Position->Lat = FRAMEGoogleMap1->FCenterLat; FNewMkr->Position->Lng = FRAMEGoogleMap1->FCenterLng; FNewMkr->Visible = true; SePosX->Value = FNewMkr->Position->Lng; SePosY->Value = FNewMkr->Position->Lat; ChangeEditMode(2); FNewDb = true; } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::BtnDeleteClick(TObject *Sender) { if (!MapStart) return; int nIdx = m_pGDC->FocusedRecordIndex; if (nIdx < 0) return; String sId = EdId->Text; if (sId.IsEmpty()) { Application->MessageBox(lblDel1->Caption.c_str(),//L"»èÁ¦ÇÒ VDS-Á¦¾î±â¸¦ ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.\r\n¸ñ·Ï¿¡¼­ ´õºíŬ¸¯ÇÏ¿© ¼±ÅÃÇÕ´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sMsg; sMsg = "ID: " + sId; sMsg+= lblDel2->Caption;//"\r\n¼±ÅÃÇϽŠVDS-Á¦¾î±â Á¤º¸¸¦ »èÁ¦ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; TItsVds *pObj = FRAMEVdsList1->MyItsVdsManager->FLists.Find(sId); if (pObj) { if (FRAMEVdsList1->MyItsVdsManager->DeleteVds(pObj)) { pObj->DEL_YN = "Y"; FRAMEVdsList1->UpdateList(); UpdateIcon(); } TItsFacility *pFacility = ItsFacilityManager->FLists.Find(sId); if (pFacility) { FUpdate = true; } Application->MessageBox(lblDel3->Caption.c_str(),//L"VDS-Á¦¾î±â Á¤º¸»èÁ¦\r\nVDS-Á¦¾î±â Á¤º¸¸¦ »èÁ¦ ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FSelMkr = NULL; FormInit(); ChangeEditMode(1); } } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::BtnSaveClick(TObject *Sender) { if (EdId->Text.IsEmpty() || EdVdsId->Text.IsEmpty() || EdLctn->Text.Trim().IsEmpty()|| SePosX->Value == 0 || SePosY->Value == 0 ) //CbTypeCd->Text.IsEmpty() ) { Application->MessageBox(FrmLang->lblCnfm->Caption.c_str(),//L"¡ÚÇ׸ñÀº Çʼö ÀÔ·Â Ç׸ñÀÔ´Ï´Ù.\r\n¸ðµÎ ÀÔ·ÂÈÄ ÁøÇàÇØ ÁÖ¼¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sId = EdId->Text; TItsVds *pObj; if (FNewDb) pObj = new TItsVds(); else pObj = FRAMEVdsList1->MyItsVdsManager->FLists.Find(sId); if (pObj) { pObj->CTLR_MNGM_NMBR = sId; pObj->CTLR_TYPE_CD = ITSUtil_GetCode(CbTypeCd->Text); pObj->VALD_YN = CbValidYn->Text; pObj->X_CRDN = VarToStr(SePosX->Value); pObj->Y_CRDN = VarToStr(SePosY->Value); pObj->LCTN = EdLctn->Text.Trim(); pObj->TRMN_IP = EdIP->Text.Trim(); pObj->TRMN_PORT = EdPort->Text.Trim(); pObj->CTLR_CLCT_CYCL = VarToStr(SeClctCycle->Value); pObj->CTLR_STTS_CYCL = VarToStr(SeSttsCycl->Value); pObj->DLTR_NMBR = VarToStr(SeBordNum->Value); pObj->DEL_YN = "N"; pObj->VDS_CTLR_ID = EdVdsId->Text.Trim(); bool bResult; if (FNewDb) { bResult = FRAMEVdsList1->MyItsVdsManager->InsertVds(pObj); if (bResult) { FRAMEVdsList1->MyItsVdsManager->FLists.Push(sId, pObj); } } else { bResult = FRAMEVdsList1->MyItsVdsManager->UpdateVds(pObj); } if (bResult) { Application->MessageBox(FrmLang->lblDbSave->Caption.c_str(),//L"VDS-Á¦¾î±â Á¤º¸ÀúÀå\r\nVDS-Á¦¾î±â Á¤º¸¸¦ ÀúÀå ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FUpdate = true; FRAMEVdsList1->UpdateList(); UpdateIcon(); CMM_SetGridRow(FRAMEVdsList1->CxList, FRAMEVdsList1->TvList, sId, FRAMEVdsList1->Column01->Index); DisplayInfo(pObj, true); } } } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::FRAMEVdsList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; int nRow = FRAMEVdsList1->TvList->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; int nMemPtr = FRAMEVdsList1->TvList->DataController->Values[nRow][FRAMEVdsList1->Column99->Index]; TItsVds* pObj = (TItsVds*)nMemPtr; DisplayInfo(pObj, true); } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::GMMarker1Click(TObject *Sender, TLatLng *LatLng, int Index, TLinkedComponent *LinkedComponent) { try { TMarker *pMkr = GMMarker1->Items[Index]; if (EditMode) { //pMkr->Draggable = true; } else { int nTag = pMkr->Tag; TItsVds *pObj = (TItsVds*)nTag; if (!pObj) return; CMM_SetGridRow(FRAMEVdsList1->CxList, FRAMEVdsList1->TvList, pObj->CTLR_MNGM_NMBR, FRAMEVdsList1->Column01->Index); DisplayInfo(pObj); } } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::GMMarker1DragEnd(TObject *Sender, TLatLng *LatLng, int Index, TLinkedComponent *LinkedComponent) { SePosY->Value = FRAMEGoogleMap1->FLat;//LatLng->Lat; SePosX->Value = FRAMEGoogleMap1->FLng;//LatLng->Lng; } //--------------------------------------------------------------------------- void __fastcall TVDSM010M::GMMarkerNewDragEnd(TObject *Sender, TLatLng *LatLng, int Index, TLinkedComponent *LinkedComponent) { #if 0 TGMMarker *pMarker = (TGMMarker*)Sender; TMarker *pMkr = pMarker->Items[Index]; ShowMessage(pMkr->ToString()); SePosY->Value = pMkr->Position->Lat;//LatLng->Lat; SePosX->Value = pMkr->Position->Lng;//LatLng->Lng; return; #endif SePosY->Value = FRAMEGoogleMap1->FLat;//FNewMkr->Position->Lat;//LatLng->Lat; SePosX->Value = FRAMEGoogleMap1->FLng;//FNewMkr->Position->Lng;//LatLng->Lng; } //---------------------------------------------------------------------------