/**************************************************************************** * @source : * @description : **************************************************************************** * DATE AUTHOR DESCRIPTION * -------------------------------------------------------------------------- * 2011/12/24 Á¤½ÂÈ£ ÃÖÃÊÀÛ¼º * ****************************************************************************/ //--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "CDSCodeF.h" #include "CDSFacilityF.h" #include "CDSNodeF.h" #include "CDSLinkF.h" #include "XiMapUtilF.h" #pragma hdrstop #include "VDSM020MF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxButtons" #pragma link "cxCalendar" #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 "cxPC" #pragma link "cxPCdxBarPopupMenu" #pragma link "cxSpinEdit" #pragma link "cxSplitter" #pragma link "cxTextEdit" #pragma link "cxTimeEdit" #pragma link "dxSkinBlack" #pragma link "dxSkinBlue" #pragma link "dxSkinCaramel" #pragma link "dxSkinCoffee" #pragma link "dxSkinDarkRoom" #pragma link "dxSkinDarkSide" #pragma link "dxSkinFoggy" #pragma link "dxSkinGlassOceans" #pragma link "dxSkiniMaginary" #pragma link "dxSkinLilian" #pragma link "dxSkinLiquidSky" #pragma link "dxSkinLondonLiquidSky" #pragma link "dxSkinMcSkin" #pragma link "dxSkinMoneyTwins" #pragma link "dxSkinOffice2007Black" #pragma link "dxSkinOffice2007Blue" #pragma link "dxSkinOffice2007Green" #pragma link "dxSkinOffice2007Pink" #pragma link "dxSkinOffice2007Silver" #pragma link "dxSkinOffice2010Black" #pragma link "dxSkinOffice2010Blue" #pragma link "dxSkinOffice2010Silver" #pragma link "dxSkinsCore" #pragma link "dxSkinscxPCPainter" #pragma link "dxSkinSeven" #pragma link "dxSkinSharp" #pragma link "dxSkinSilver" #pragma link "dxSkinStardust" #pragma link "cxRadioGroup" #pragma link "cxClasses" #pragma link "cxCustomData" #pragma link "cxData" #pragma link "cxDataStorage" #pragma link "cxDBData" #pragma link "cxFilter" #pragma link "cxGrid" #pragma link "cxGridCustomTableView" #pragma link "cxGridCustomView" #pragma link "cxGridDBTableView" #pragma link "cxGridLevel" #pragma link "cxGridTableView" #pragma link "cxStyles" #pragma link "FRAME_GisMapF" #pragma link "cxCheckBox" #pragma link "cxCalc" #pragma link "FRAME_VdsDtctListF" #pragma link "FRAME_VdsListF" #pragma resource "*.dfm" TVDSM020M *VDSM020M = NULL; //--------------------------------------------------------------------------- __fastcall TVDSM020M::TVDSM020M(TComponent* Owner) : TForm(Owner) { ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); FUpdate= false; FTitle = "VDS-°ËÁö±â °ü¸®"; m_pGDC = FRAMEVdsDtctList1->TvList->DataController; FRAMEGisMap1->LbDef->Visible = false; FRAMEGisMap1->LbDef->Caption = "(¼±Åø޴º¸¦ Ŭ¸¯ÇÏ¿© À§Ä¡¸¦ ¼±ÅÃÇÕ´Ï´Ù.)"; FRAMEGisMap1->LbDef->Hint = FRAMEGisMap1->LbDef->Caption; FRAMEVdsList1->PnlTop->Visible = false; FRAMEVdsList1->PnlBottom->Visible = false; FRAMEVdsList1->ColumnSel->Visible = false; FRAMEVdsList1->Column02->Visible = false; FRAMEVdsDtctList1->PnlTop->Visible = false; FRAMEVdsDtctList1->PnlBottom->Visible = false; FRAMEVdsDtctList1->ColumnSel->Visible = false; TvParam->OptionsView->NoDataToDisplayInfoText = ""; TvCndt->OptionsView->NoDataToDisplayInfoText = ""; TvLink->OptionsView->NoDataToDisplayInfoText = ""; } //--------------------------------------------------------------------------- /* * ´Ý±â¹öư À̳ª x¹öư Ŭ¸¯½Ã °øÅëÀ¸·Î ó¸®ÇÏ´Â ·ÎÁ÷À̵é¾î°£´Ù.. * Form°ú DataModule class¸¦ delete½ÃŲ´Ù. * arguments * * return * void */ void __fastcall TVDSM020M::CommClose() { try { CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- /* * FormÀ» º¸¿©ÁÙ¶§ È£ÃâµÇ´Â event ¸Þ¼­µåÀÌ´Ù. * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVDSM020M::FormShow(TObject *Sender) { Refresh(); FRAMEGisMap1->LinkLevel = 1; CbCTLR_MNGM_NMBR->Properties->Items->Clear(); try { FRAMEVdsList1->MyItsVdsManager->FLists.Lock(); FOR_STL(TItsVds*, pObj, FRAMEVdsList1->MyItsVdsManager->FLists) { if (pObj->DEL_YN == "Y") continue; String sId = pObj->CTLR_MNGM_NMBR; //°ü¸®¹øÈ£ String sNm = pObj->LCTN; //À§Ä¡ CbCTLR_MNGM_NMBR->Properties->Items->Add("[" + sId + "] " + sNm); } } __finally { FRAMEVdsList1->MyItsVdsManager->FLists.UnLock(); } CbCTLR_MNGM_NMBR->ItemIndex = -1; EdVdsCtrl->Properties->ReadOnly = true; EdDTCT_NMBR->Properties->ReadOnly = true; CbDTCT_TYPE_CD->Properties->ReadOnly = true; CbCTLR_MNGM_NMBR->Properties->ReadOnly = true; SeSTLN_DSTC->Properties->ReadOnly = true; SeSNST->Properties->ReadOnly = true; CbUSE_YN->Properties->ReadOnly = true; SeISTL_LANE->Properties->ReadOnly = true; EdDET_NMBR->Properties->ReadOnly = true; EdCHNL_NMBR->Properties->ReadOnly = true; SeDTCT_VALD_DSTC->Properties->ReadOnly = true; SeMDVH_UPLM_LNGT->Properties->ReadOnly = true; SeMDVH_LWLM_LNGT->Properties->ReadOnly = true; FormInit(); ChangeEditMode(1); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- /* * form ÃʱâÈ­ * * arguments * * return * void */ void __fastcall TVDSM020M::FormInit() { EdVdsCtrl->Text = ""; EdDTCT_NMBR->Text = ""; CbDTCT_TYPE_CD->ItemIndex = 0; CbCTLR_MNGM_NMBR->ItemIndex = -1; SeSTLN_DSTC->Value = 0; SeSNST->Value = 0; CbUSE_YN->ItemIndex = 0; SeISTL_LANE->Value = 0; EdDET_NMBR->Text = "0"; EdCHNL_NMBR->Text = "0"; SeDTCT_VALD_DSTC->Value = 0; SeMDVH_UPLM_LNGT->Value = 0; SeMDVH_LWLM_LNGT->Value = 0; CMM_ClearGridTableView(TvParam); CMM_ClearGridTableView(TvCndt); CMM_ClearGridTableView(TvLink); FRAMEGisMap1->xclntMap->ClearUserDrawPolyGon(); FRAMEGisMap1->xclntMap->ClearPathInfo(); FRAMEGisMap1->xclntMap->ReDraw(); FNewDb = false; } //--------------------------------------------------------------------------- /* * FormÀÌ ShowµÇ°í ³­ ÈÄ ÃÖÃÊ 1ȸ ¼öÇàµÇ´Â ŸÀÌ¸Ó À̺¥Æ® * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVDSM020M::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; FRAMEGisMap1->LoadGisMap(); UpdateVdsIcon(); FRAMEVdsList1->UpdateList(); //FRAMEVdsDtctList1->UpdateList(); FRAMEVdsDtctList1->MyItsVdsManager->LoadFromDtctLinkDb(); FRAMEVdsDtctList1->MyItsVdsManager->LoadFromDtctParamDb(); FRAMEVdsDtctList1->MyItsVdsManager->LoadFromDtctCndtDb(); UpdateList(); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::UpdateList() { FRAMEVdsDtctList1->UpdateList(); } //--------------------------------------------------------------------------- /* * Close ¹öư Ŭ¸¯ À̺¥Æ® Çڵ鷯 * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVDSM020M::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); VDSM020M = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::FormCloseQuery(TObject *Sender, bool &CanClose) { #if 0 //xxxxxxxx if (FUpdate) { POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } #endif FRAMEVdsList1->OnCloseQuery(CanClose); FRAMEVdsDtctList1->OnCloseQuery(CanClose); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::DisplayInfo(TItsVdsDtct* AObj) { FormInit(); if (!AObj) return; EdVdsCtrl->Text = AObj->CTLR_MNGM_NMBR; EdDTCT_NMBR->Text = AObj->DTCT_NMBR; CMM_SetComboBoxItem(CbDTCT_TYPE_CD, AObj->DTCT_TYPE_CD); CMM_SetComboBoxItem(CbCTLR_MNGM_NMBR, AObj->CTLR_MNGM_NMBR); SeSTLN_DSTC->Value = AObj->STLN_DSTC.ToIntDef(0); SeSNST->Value = AObj->SNST.ToIntDef(0); CbUSE_YN->Text = AObj->USE_YN; SeISTL_LANE->Value = AObj->ISTL_LANE.ToIntDef(0); EdDET_NMBR->Text = AObj->DET_NMBR; EdCHNL_NMBR->Text = AObj->CHNL_NMBR; SeDTCT_VALD_DSTC->Value = AObj->DTCT_VALD_DSTC.ToIntDef(0); SeMDVH_UPLM_LNGT->Value = AObj->MDVH_UPLM_LNGT.ToIntDef(0); SeMDVH_LWLM_LNGT->Value = AObj->MDVH_LWLM_LNGT.ToIntDef(0); DisplayParam(AObj); DisplayCndt(AObj); DisplayLink(AObj); ChangeEditMode(3); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::DisplayParam(TItsVdsDtct* AObj) { if (!AObj) return; CMM_ClearGridTableView(TvParam); try { int nRow; TcxDataController *pGDC = TvParam->DataController; TvParam->BeginUpdate(); #if 0 String SYST_KIND_DVSN; //VARCHAR2(1) N ½Ã½ºÅÛ Á¾·ù ±¸ºÐ String TFVL_FCTR; //NUMBER(6,2) Y ±³Åë·® °è¼ö String OCPY_RATE_FCTR; //NUMBER(6,2) Y Á¡À¯ À² °è¼ö String SPED_FCTR; //NUMBER(6,2) Y ¼Óµµ °è¼ö String HDWY_FCTR; //NUMBER(6,2) Y Â÷µÎ½Ã°£ °è¼ö String FRST_REGR_NMBR; //VARCHAR2(20) Y ÃÖÃÊ µî·ÏÀÚ ¹øÈ£ String FRST_RGST_DT; //VARCHAR2(14) Y ÃÖÃÊ µî·Ï ÀϽà String LAST_CRPR_NMBR; //VARCHAR2(20) Y ÃÖÁ¾ ¼öÁ¤ÀÚ ¹øÈ£ String LAST_CRCT_DT; //VARCHAR2(14) Y ÃÖÁ¾ ¼öÁ¤ ÀϽà String DEL_YN; //CHAR(1) Y 'N' »èÁ¦ ¿©ºÎ #endif FOR_STL(TItsVdsDtctParam *, pObj, AObj->FParamLists) { if (pObj->DEL_YN == "Y") continue; nRow = pGDC->AppendRecord(); pGDC->Values[nRow][Param01->Index] = pObj->SYST_KIND_DVSN; pGDC->Values[nRow][Param02->Index] = pObj->TFVL_FCTR; pGDC->Values[nRow][Param03->Index] = pObj->OCPY_RATE_FCTR; pGDC->Values[nRow][Param04->Index] = pObj->SPED_FCTR; pGDC->Values[nRow][Param05->Index] = pObj->HDWY_FCTR; } } __finally { TvParam->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::DisplayCndt(TItsVdsDtct* AObj) { if (!AObj) return; CMM_ClearGridTableView(TvCndt); try { int nRow; TcxDataController *pGDC = TvCndt->DataController; TvCndt->BeginUpdate(); #if 0 String CTLR_MNGM_NMBR; //VARCHAR2(20) Y Á¦¾î±â °ü¸® ¹øÈ£ String DTCT_NMBR; //VARCHAR2(8) N °ËÁö±â ¹øÈ£ String SYST_KIND_DVSN; //VARCHAR2(1) N ½Ã½ºÅÛ Á¾·ù ±¸ºÐ String MAX_TFVL; //NUMBER(6) Y 0 ÃÖ´ë ±³Åë·® String MIN_TFVL; //NUMBER(6) Y 0 ÃÖ¼Ò ±³Åë·® String MAX_OCPY_RATE; //NUMBER(6,2) Y ÃÖ´ë Á¡À¯ À² String MIN_OCPY_RATE; //NUMBER(6,2) Y ÃÖ¼Ò Á¡À¯ À² String MAX_SPED; //NUMBER(3) Y 0 ÃÖ´ë ¼Óµµ String MIN_SPED; //NUMBER(3) Y 0 ÃÖ¼Ò ¼Óµµ String DEL_YN; //CHAR(1) Y 'N' »èÁ¦ ¿©ºÎ String FRST_REGR_NMBR; //VARCHAR2(20) Y ÃÖÃÊ µî·ÏÀÚ ¹øÈ£ String FRST_RGST_DT; //VARCHAR2(14) Y ÃÖÃÊ µî·Ï ÀϽà String LAST_CRPR_NMBR; //VARCHAR2(20) Y ÃÖÁ¾ ¼öÁ¤ÀÚ ¹øÈ£ String LAST_CRCT_DT; //VARCHAR2(14) Y ÃÖÁ¾ ¼öÁ¤ ÀϽà #endif FOR_STL(TItsVdsDtctCndt *, pObj, AObj->FCndtLists) { if (pObj->DEL_YN == "Y") continue; nRow = pGDC->AppendRecord(); pGDC->Values[nRow][Cndt01->Index] = pObj->SYST_KIND_DVSN; pGDC->Values[nRow][Cndt02->Index] = pObj->MAX_TFVL; pGDC->Values[nRow][Cndt03->Index] = pObj->MIN_TFVL; pGDC->Values[nRow][Cndt04->Index] = pObj->MAX_OCPY_RATE; pGDC->Values[nRow][Cndt05->Index] = pObj->MIN_OCPY_RATE; pGDC->Values[nRow][Cndt06->Index] = pObj->MAX_SPED; pGDC->Values[nRow][Cndt07->Index] = pObj->MIN_SPED; } } __finally { TvCndt->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::DisplayLink(TItsVdsDtct* AObj) { if (!AObj) return; CMM_ClearGridTableView(TvLink); try { int nRow; TcxDataController *pGDC = TvLink->DataController; TvLink->BeginUpdate(); FOR_STL(TItsVdsDtctLink *, pObj, AObj->FLinkLists) { String sLinkId = pObj->LINK_ID; nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColLink2->Index] = sLinkId; TItsLink *pLink = ItsLinkManager->FLists.Find(sLinkId); if (pLink) { TItsNode *pNode; pGDC->Values[nRow][ColLink3->Index] = pLink->F_NODEID; pGDC->Values[nRow][ColLink5->Index] = pLink->T_NODEID; pNode = ItsNodeManager->FLists.Find(pLink->F_NODEID); if (pNode) { pGDC->Values[nRow][ColLink4->Index] = pNode->NODE_NAME; } pNode = ItsNodeManager->FLists.Find(pLink->T_NODEID); if (pNode) { pGDC->Values[nRow][ColLink6->Index] = pNode->NODE_NAME; } } } } __finally { TvLink->EndUpdate(); } RefreshLink(); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::UpdateVdsIcon() { FRAMEGisMap1->xclntMap->ClearCCTVEvent(true); TItsFacility *pFacility; try { //if (ChkViewIcon->Checked) { try { FRAMEVdsList1->MyItsVdsManager->FLists.Lock(); FOR_STL(TItsVds*, pObj, FRAMEVdsList1->MyItsVdsManager->FLists) { if (pObj->DEL_YN == "Y") continue; //pFacility = ItsFacilityManager->FLists.Find(pObj->CTLR_MNGM_NMBR); //if (!pFacility) continue; try { String sTitle = "¢º¢ºVDS-Á¦¾î±â Á¤º¸¢¸¢¸|VDS ID : " + pObj->CTLR_MNGM_NMBR + "|¸íĪ : " + pObj->LCTN; FRAMEGisMap1->xclntMap->ADDCCTVEvent(DDPoint(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0)), pObj->CTLR_MNGM_NMBR, "VDS", sTitle, 9, 1, 7); } catch(...) { } } } __finally { FRAMEVdsList1->MyItsVdsManager->FLists.UnLock(); } } } catch(...) { } FRAMEGisMap1->xclntMap->ReDraw(); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::BtnEditClick(TObject *Sender) { if (BtnEdit->Caption == "ÆíÁý") { ChangeEditMode(0); FNewDb = false; } else { String sVdsCtrlId = EdVdsCtrl->Text; String sDtctId = EdDTCT_NMBR->Text; ChangeEditMode(1); TItsVds *pVds = FRAMEVdsDtctList1->MyItsVdsManager->FLists.Find(sVdsCtrlId); if (pVds) { TItsVdsDtct *pObj = pVds->FSubLists.Find(sDtctId); if (pObj) { CMM_SetGridRow(FRAMEVdsDtctList1->CxList, FRAMEVdsDtctList1->TvList, sDtctId, FRAMEVdsDtctList1->Column02->Index); DisplayInfo(pObj); } } } } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::ChangeEditMode(int AEdit) { bool bEnabled = false; switch(AEdit) { case 0: //ÆíÁý¹öưŬ¸¯ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = "Ãë¼Ò"; BtnEdit->Hint = "µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; } break; case 1: //ÆíÁý[Ãë¼Ò]¹öưŬ¸¯ { FormInit(); //È­¸éÀ» ¸ðµÎ Áö¿î´Ù. BtnEdit->Enabled = false; BtnInsert->Enabled = true; BtnDelete->Enabled = false; BtnSave->Enabled = false; BtnEdit->Caption = "ÆíÁý"; BtnEdit->Hint = "µ¥ÀÌÅÍ ÆíÁý"; bEnabled = true; } break; case 2: //Ãß°¡ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = "Ãë¼Ò"; BtnEdit->Hint = "µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; } break; case 3: //¼öÁ¤¸ðµå { BtnEdit->Enabled = true; BtnInsert->Enabled = true; BtnDelete->Enabled = true; BtnSave->Enabled = false; BtnEdit->Caption = "ÆíÁý"; BtnEdit->Hint = "µ¥ÀÌÅÍ ÆíÁý"; bEnabled = true; } break; } if (AEdit == 0 || AEdit == 2) { FRAMEVdsDtctList1->CxList->Enabled = false; } else { FRAMEVdsDtctList1->CxList->Enabled = true; } EdVdsCtrl->Properties->ReadOnly = bEnabled; EdDTCT_NMBR->Properties->ReadOnly = bEnabled; CbDTCT_TYPE_CD->Properties->ReadOnly = bEnabled; CbCTLR_MNGM_NMBR->Properties->ReadOnly = bEnabled; SeSTLN_DSTC->Properties->ReadOnly = bEnabled; SeSNST->Properties->ReadOnly = bEnabled; CbUSE_YN->Properties->ReadOnly = bEnabled; SeISTL_LANE->Properties->ReadOnly = bEnabled; EdDET_NMBR->Properties->ReadOnly = bEnabled; EdCHNL_NMBR->Properties->ReadOnly = bEnabled; SeDTCT_VALD_DSTC->Properties->ReadOnly = bEnabled; SeMDVH_UPLM_LNGT->Properties->ReadOnly = bEnabled; SeMDVH_LWLM_LNGT->Properties->ReadOnly = bEnabled; BtnParamAdd->Enabled = !bEnabled; BtnParamDel->Enabled = !bEnabled; BtnCndtAdd->Enabled = !bEnabled; BtnCndtDel->Enabled = !bEnabled; BtnLinkAdd->Enabled = !bEnabled; BtnLinkDel->Enabled = !bEnabled; } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::BtnInsertClick(TObject *Sender) { FormInit(); //½Å±Ô¾ÆÀ̵𸦠¾ò¾î¿Í¼­ È­¸éÀ» ÃʱâÈ­ÇÑ´Ù. String sId; #if 0 if (!FRAMEVdsDtctList1->MyItsVdsManager->GetNextVdsDtctId(sId)) { Application->MessageBox(L"»õ·Î¿î °ËÁö±â ¹øÈ£¸¦ »ý¼ºÇÏÁö ¸øÇÏ¿´½À´Ï´Ù.\r\nÇÁ·Î±×·¥ Á¾·áÈÄ¿¡ ´Ù½Ã ½ÃµµÇØ º¸¼¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } #else sId = InputBox("°ËÁö±â ¹øÈ£", "½Å±Ô °ËÁö±â ¹øÈ£¸¦ ÀÔ·ÂÇϼ¼¿ä(20Byte).", "°ËÁö±â ¹øÈ£" ); sId = sId.Trim(); if (sId == "°ËÁö±â ¹øÈ£" || sId == "") { return; } if (AnsiString(sId).Length() > 8) { Application->MessageBox(L"°ËÁö±â ¹øÈ£´Â 20Byte¸¦ ÃʰúÇÒ ¼ö ¾ø½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } try { FRAMEVdsDtctList1->MyItsVdsManager->FLists.Lock(); FOR_STL(TItsVds*, pObj, FRAMEVdsDtctList1->MyItsVdsManager->FLists) { TItsVdsDtct *pDb = pObj->FSubLists.Find(sId); if (pDb) { Application->MessageBox(("[" + sId + "]´Â »ç¿ëÇÒ ¼ö ¾ø´Â °ËÁö±â ¹øÈ£ ÀÔ´Ï´Ù.").c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } } } __finally { FRAMEVdsDtctList1->MyItsVdsManager->FLists.UnLock(); } #endif EdVdsCtrl->Text = ""; EdDTCT_NMBR->Text = sId; ChangeEditMode(2); FNewDb = true; } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::BtnDeleteClick(TObject *Sender) { int nIdx = m_pGDC->FocusedRecordIndex; if (nIdx < 0) return; String sId = EdDTCT_NMBR->Text; if (sId.IsEmpty()) { Application->MessageBox(L"»èÁ¦ÇÒ VDS-°ËÁö±â Á¤º¸¸¦ ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.\r\n¸ñ·Ï¿¡¼­ ´õºíŬ¸¯ÇÏ¿© ¼±ÅÃÇÕ´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sMsg; sMsg = "VDS-°ËÁö±â ¹øÈ£: " + sId; sMsg+= "\r\n¼±ÅÃÇϽŠVDS-°ËÁö±â Á¤º¸¸¦ »èÁ¦ÇϽðڽÀ´Ï±î?\r\n°ü·ÃÁ¤º¸µµ ÇÔ²² »èÁ¦ µË´Ï´Ù."; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; TItsVdsDtct *pObj = NULL; try { FRAMEVdsDtctList1->MyItsVdsManager->FLists.Lock(); FOR_STL(TItsVds*, pVds, FRAMEVdsDtctList1->MyItsVdsManager->FLists) { pObj = pVds->FSubLists.Find(sId); if (pObj) { break; } } } __finally { FRAMEVdsDtctList1->MyItsVdsManager->FLists.UnLock(); } if (pObj) { if (FRAMEVdsDtctList1->MyItsVdsManager->DeleteVdsDtct(pObj)) { pObj->DEL_YN = "Y"; UpdateList(); } Application->MessageBox(L"VDS-°ËÁö±â Á¤º¸ »èÁ¦\r\nVDS-°ËÁö±â Á¤º¸¸¦ »èÁ¦ ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FUpdate = true; FormInit(); ChangeEditMode(1); } } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::BtnSaveClick(TObject *Sender) { TItsVds *pVds; TItsVdsDtct *pObj; String sId = EdDTCT_NMBR->Text; String sCtrlId = ITSUtil_GetCode(CbCTLR_MNGM_NMBR->Text); // Á¦¾î±â °ü¸® ¹øÈ£ pVds = FRAMEVdsDtctList1->MyItsVdsManager->FLists.Find(sCtrlId); if (!pVds || EdVdsCtrl->Text.IsEmpty() || EdDTCT_NMBR->Text.Trim().IsEmpty() || CbCTLR_MNGM_NMBR->ItemIndex < 0 ) { Application->MessageBox(L"¡ÚÇ׸ñÀº Çʼö ÀÔ·Â Ç׸ñÀÔ´Ï´Ù.\r\n¸ðµÎ ÀÔ·ÂÈÄ ÁøÇàÇØ ÁÖ¼¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } if (!FNewDb) { //¼öÁ¤¸ðµåÀ϶§ ÄÁÆ®·Ñ·¯°¡ ´Ù¸£´Ù¸é ½Å±Ô·Î ó¸®ÇÑ´Ù. if (EdVdsCtrl->Text != sCtrlId) { TItsVds *pTmpVds = FRAMEVdsDtctList1->MyItsVdsManager->FLists.Find(EdVdsCtrl->Text); if (pTmpVds) { pTmpVds->FSubLists.Remove(sId); } FNewDb = true; } } if (FNewDb) pObj = new TItsVdsDtct(); else pObj = pVds->FSubLists.Find(sId); if (pObj) { pObj->CTLR_MNGM_NMBR = sCtrlId; //Á¦¾î±â °ü¸® ¹øÈ£ pObj->DTCT_NMBR = sId; //°ËÁö±â ¹øÈ£ pObj->DTCT_TYPE_CD = ITSUtil_GetCode(CbDTCT_TYPE_CD->Text); //°ËÁö±â À¯Çü ÄÚµå pObj->STLN_DSTC = VarToStr(SeSTLN_DSTC->Value); //NUMBER(7) Y 0 Á¤Áö¼± °Å¸® pObj->ISTL_LANE = VarToStr(SeISTL_LANE->Value); //NUMBER(2) Y ¼³Ä¡ Â÷·Î pObj->DET_NMBR = EdDET_NMBR->Text.Trim(); //VARCHAR2(1) Y DET ¹øÈ£ pObj->SNST = VarToStr(SeSNST->Value); //NUMBER(3) Y 0 °¨µµ pObj->DTCT_VALD_DSTC = VarToStr(SeDTCT_VALD_DSTC->Value); //NUMBER(7) Y 0 °ËÁö±â À¯È¿ °Å¸® pObj->MDVH_UPLM_LNGT = VarToStr(SeMDVH_UPLM_LNGT->Value); //NUMBER(7) Y 0 ÁßÇüÂ÷ »óÇÑ ±æÀÌ pObj->MDVH_LWLM_LNGT = VarToStr(SeMDVH_LWLM_LNGT->Value); //NUMBER(7) Y 0 ÁßÇüÂ÷ ÇÏÇÑ ±æÀÌ pObj->USE_YN = CbUSE_YN->Text; //»ç¿ë ¿©ºÎ pObj->CHNL_NMBR = EdCHNL_NMBR->Text.Trim(); //VARCHAR2(4) Y ä³Î ¹øÈ£ pObj->DEL_YN = "N"; //CHAR(1) Y 'N' »èÁ¦ ¿©ºÎ pObj->DLTR_NMBR = ""; //VARCHAR2(20) Y »èÁ¦ÀÚ ¹øÈ£ pObj->DEL_DT = ""; //VARCHAR2(14) Y »èÁ¦ ÀϽà pObj->FRST_REGR_NMBR = ""; //VARCHAR2(20) Y ÃÖÃÊ µî·ÏÀÚ ¹øÈ£ pObj->FRST_RGST_DT = ""; //VARCHAR2(14) Y ÃÖÃÊ µî·Ï ÀϽà pObj->LAST_CRPR_NMBR = ""; //VARCHAR2(20) Y ÃÖÁ¾ ¼öÁ¤ÀÚ ¹øÈ£ pObj->LAST_CRCT_DT = ""; //VARCHAR2(14) Y ÃÖÁ¾ ¼öÁ¤ ÀϽà pObj->MEM_DEL = "N"; pObj->FCndtLists.RemoveAll(); pObj->FParamLists.RemoveAll(); pObj->FLinkLists.RemoveAll(); try { TvLink->BeginUpdate(); for (int ii = 0; ii < TvLink->DataController->RecordCount; ii++) { String sLinkId = TvLink->DataController->Values[ii][ColLink2->Index]; TItsVdsDtctLink *pObjLnk = new TItsVdsDtctLink(); pObjLnk->CTLR_MNGM_NMBR = pObj->CTLR_MNGM_NMBR; pObjLnk->DTCT_NMBR = pObj->DTCT_NMBR; pObjLnk->LINK_ID = sLinkId; pObj->FLinkLists.Push(pObjLnk->LINK_ID, pObjLnk); pObjLnk->Completed = true; pObjLnk->MEM_DEL = "N"; } } __finally { TvLink->EndUpdate(); } try { TvParam->BeginUpdate(); for (int ii = 0; ii < TvParam->DataController->RecordCount; ii++) { String sSysId = TvParam->DataController->Values[ii][Param01->Index]; TItsVdsDtctParam *pObjParam = new TItsVdsDtctParam(); pObjParam->CTLR_MNGM_NMBR = pObj->CTLR_MNGM_NMBR; pObjParam->DTCT_NMBR = pObj->DTCT_NMBR; pObjParam->SYST_KIND_DVSN = sSysId; pObjParam->TFVL_FCTR = VarToStr(TvParam->DataController->Values[ii][Param02->Index]); pObjParam->OCPY_RATE_FCTR = VarToStr(TvParam->DataController->Values[ii][Param03->Index]); pObjParam->SPED_FCTR = VarToStr(TvParam->DataController->Values[ii][Param04->Index]); pObjParam->HDWY_FCTR = VarToStr(TvParam->DataController->Values[ii][Param05->Index]); pObjParam->DEL_YN = "N"; pObjParam->FRST_REGR_NMBR = ""; pObjParam->FRST_RGST_DT = ""; pObjParam->LAST_CRPR_NMBR = ""; pObjParam->LAST_CRCT_DT = ""; pObj->FParamLists.Push(pObjParam->SYST_KIND_DVSN, pObjParam); pObjParam->Completed = true; pObjParam->MEM_DEL = "N"; } } __finally { TvParam->EndUpdate(); } try { TvCndt->BeginUpdate(); for (int ii = 0; ii < TvCndt->DataController->RecordCount; ii++) { String sSysId = TvCndt->DataController->Values[ii][Cndt01->Index]; TItsVdsDtctCndt *pObjCndt = new TItsVdsDtctCndt(); pObjCndt->CTLR_MNGM_NMBR = pObj->CTLR_MNGM_NMBR; pObjCndt->DTCT_NMBR = pObj->DTCT_NMBR; pObjCndt->SYST_KIND_DVSN = sSysId; pObjCndt->MAX_TFVL = VarToStr(TvCndt->DataController->Values[ii][Cndt02->Index]); pObjCndt->MIN_TFVL = VarToStr(TvCndt->DataController->Values[ii][Cndt03->Index]); pObjCndt->MAX_OCPY_RATE = VarToStr(TvCndt->DataController->Values[ii][Cndt04->Index]); pObjCndt->MIN_OCPY_RATE = VarToStr(TvCndt->DataController->Values[ii][Cndt05->Index]); pObjCndt->MAX_SPED = VarToStr(TvCndt->DataController->Values[ii][Cndt06->Index]); pObjCndt->MIN_SPED = VarToStr(TvCndt->DataController->Values[ii][Cndt07->Index]); pObjCndt->DEL_YN = "N"; pObjCndt->FRST_REGR_NMBR = ""; pObjCndt->FRST_RGST_DT = ""; pObjCndt->LAST_CRPR_NMBR = ""; pObjCndt->LAST_CRCT_DT = ""; pObj->FCndtLists.Push(pObjCndt->SYST_KIND_DVSN, pObjCndt); pObjCndt->Completed = true; pObjCndt->MEM_DEL = "N"; } } __finally { TvCndt->EndUpdate(); } bool bResult; bResult = FRAMEVdsDtctList1->MyItsVdsManager->SaveVdsDtct(pObj); if (bResult) { Application->MessageBox(L"VDS-°ËÁö±â Á¤º¸ÀúÀå\r\nVDS-°ËÁö±â Á¤º¸¸¦ ÀúÀå ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); if (FNewDb) { pVds->FSubLists.Push(pObj->DTCT_NMBR, pObj); } FUpdate = true; UpdateList(); CMM_SetGridRow(FRAMEVdsDtctList1->CxList, FRAMEVdsDtctList1->TvList, sId, FRAMEVdsDtctList1->Column02->Index); #if 0 DisplayInfo(pObj); #else int nRow = FRAMEVdsDtctList1->TvList->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; int nMemPtr = FRAMEVdsDtctList1->TvList->DataController->Values[nRow][FRAMEVdsDtctList1->Column99->Index]; TItsVdsDtct* pObj = (TItsVdsDtct*)nMemPtr; DisplayInfo(pObj); #endif } } } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::FRAMEGisMap1xclntMapMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { FRAMEGisMap1->xclntMap->ClearUserDrawPolyGon(); FRAMEGisMap1->xclntMap->ReDraw(); if (FRAMEGisMap1->xclntMap->MapOperation != OnSelect) return; if (Button != mbLeft) return; String sLinkId; int nLayerIdx = FRAMEGisMap1->GetLayerIndex(); if (nLayerIdx >= 0) { TXiMapUtil::SelectLinkByPos(FRAMEGisMap1->xsrvrMap, FRAMEGisMap1->xclntMap, nLayerIdx, X, Y, sLinkId); if (!sLinkId.IsEmpty()) { EdLinkId->Text = sLinkId; } } return; if (FRAMEGisMap1->SelectLinkByPos(X, Y, sLinkId)) { EdLinkId->Text = sLinkId; int nLayerIdx = FRAMEGisMap1->GetLayerIndex(); if (nLayerIdx >= 0) { TXiMapUtil::SelectLinkByPos2(FRAMEGisMap1->xsrvrMap, FRAMEGisMap1->xclntMap, nLayerIdx, X, Y); } } } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::RefreshLink() { FRAMEGisMap1->xclntMap->ClearPathInfo(); FRAMEGisMap1->xclntMap->ReDraw(); int nLayerIdx = FRAMEGisMap1->GetLayerIndex(); if (nLayerIdx < 0) return; try { int nRow; TcxDataController *pGDC = TvLink->DataController; TvLink->BeginUpdate(); try { for (int ii = 0; ii < pGDC->RecordCount; ii++) { String sLinkId = pGDC->Values[ii][ColLink2->Index]; TXiMapUtil::SelectLinkById(FRAMEGisMap1->xsrvrMap, FRAMEGisMap1->xclntMap, nLayerIdx, sLinkId); } } catch(...) { } } __finally { TvLink->EndUpdate(); } FRAMEGisMap1->xclntMap->ReDraw(); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::BtnLinkDelClick(TObject *Sender) { int nSelRows = TvLink->Controller->SelectedRowCount; if (nSelRows <= 0) { Application->MessageBox(L"»èÁ¦¸¦ ¿øÇÏ´Â ¸µÅ©±¸°£À» ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } TvLink->Controller->DeleteSelection(); RefreshLink(); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::BtnLinkAddClick(TObject *Sender) { if (EdLinkId->Text.IsEmpty()) return; String sNewId = EdLinkId->Text; bool bFound = false; try { int nRow; TcxDataController *pGDC = TvLink->DataController; TvLink->BeginUpdate(); for (int ii = 0; ii < pGDC->RecordCount; ii++) { String sLinkId = pGDC->Values[ii][ColLink2->Index]; if (sNewId == sLinkId) { bFound = true; break; } } if (bFound) { Application->MessageBox(L"ÀÌ¹Ì µî·ÏµÇ¾î ÀÖ´Â ¸µÅ©±¸°£ ÀÔ´Ï´Ù.\r\n¸µÅ© ±¸°£Àº Áߺ¹Çؼ­ µî·Ï ÇÒ ¼ö ¾ø½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColLink2->Index] = sNewId; TItsLink *pLink = ItsLinkManager->FLists.Find(sNewId); if (pLink) { TItsNode *pNode; pGDC->Values[nRow][ColLink3->Index] = pLink->F_NODEID; pGDC->Values[nRow][ColLink5->Index] = pLink->T_NODEID; pNode = ItsNodeManager->FLists.Find(pLink->F_NODEID); if (pNode) { pGDC->Values[nRow][ColLink4->Index] = pNode->NODE_NAME; } pNode = ItsNodeManager->FLists.Find(pLink->T_NODEID); if (pNode) { pGDC->Values[nRow][ColLink6->Index] = pNode->NODE_NAME; } } } __finally { TvLink->EndUpdate(); } RefreshLink(); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::TvLinkCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; int nRow = TvLink->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; String sLinkId = TvLink->DataController->Values[nRow][ColLink2->Index]; TXiMapUtil::MoveLink(FRAMEGisMap1->xclntMap, sLinkId); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::BtnParamDelClick(TObject *Sender) { int nSelRows = TvParam->Controller->SelectedRowCount; if (nSelRows <= 0) { Application->MessageBox(L"»èÁ¦¸¦ ¿øÇÏ´Â ÆòȰȭ ÆÄ¶ó¹ÌÅÍÁ¤º¸¸¦ ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } TvParam->Controller->DeleteSelection(); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::BtnCndtDelClick(TObject *Sender) { int nSelRows = TvCndt->Controller->SelectedRowCount; if (nSelRows <= 0) { Application->MessageBox(L"»èÁ¦¸¦ ¿øÇÏ´Â ½Å·Úµµ Á¶°ÇÀ» ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } TvCndt->Controller->DeleteSelection(); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::FRAMEVdsDtctList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; int nRow = FRAMEVdsDtctList1->TvList->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; int nMemPtr = FRAMEVdsDtctList1->TvList->DataController->Values[nRow][FRAMEVdsDtctList1->Column99->Index]; TItsVdsDtct* pObj = (TItsVdsDtct*)nMemPtr; DisplayInfo(pObj); } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::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; try { FRAMEGisMap1->SelectObjectByPos(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0), true); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::BtnParamAddClick(TObject *Sender) { String sId; sId = InputBox("°ËÁö±â ¹øÈ£", "½Ã½ºÅÛ Á¾·ù¸¦ ÀÔ·ÂÇϼ¼¿ä(1Byte).", "½Ã½ºÅÛ Á¾·ù" ); sId = sId.Trim(); if (sId == "°ËÁö±â ¹øÈ£" || sId == "") { return; } if (AnsiString(sId).Length() != 1) { Application->MessageBox(L"½Ã½ºÅÛ Á¾·ù´Â 1Byte¸¦ ÃʰúÇÒ ¼ö ¾ø½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } bool bFound = false; try { int nRow; TcxDataController *pGDC = TvParam->DataController; TvParam->BeginUpdate(); for (int ii = 0; ii < pGDC->RecordCount; ii++) { String sTmpId = pGDC->Values[ii][Param01->Index]; if (sTmpId == sId) { bFound = true; break; } } if (bFound) { Application->MessageBox(L"ÀÌ¹Ì µî·ÏµÇ¾î ÀÖ´Â ½Ã½ºÅÛ Á¾·ù ÀÔ´Ï´Ù.\r\n»õ·Î¿î ½Ã½ºÅÛ Á¾·ù¸¦ ÀÔ·ÂÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } nRow = pGDC->AppendRecord(); pGDC->Values[nRow][Param01->Index] = sId; pGDC->Values[nRow][Param02->Index] = 0; pGDC->Values[nRow][Param03->Index] = 0; pGDC->Values[nRow][Param04->Index] = 0; pGDC->Values[nRow][Param05->Index] = 0; } __finally { TvParam->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::BtnCndtAddClick(TObject *Sender) { String sId; sId = InputBox("°ËÁö±â ¹øÈ£", "½Ã½ºÅÛ Á¾·ù¸¦ ÀÔ·ÂÇϼ¼¿ä(1Byte).", "½Ã½ºÅÛ Á¾·ù" ); sId = sId.Trim(); if (sId == "°ËÁö±â ¹øÈ£" || sId == "") { return; } if (AnsiString(sId).Length() != 1) { Application->MessageBox(L"½Ã½ºÅÛ Á¾·ù´Â 1Byte¸¦ ÃʰúÇÒ ¼ö ¾ø½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } bool bFound = false; try { int nRow; TcxDataController *pGDC = TvCndt->DataController; TvCndt->BeginUpdate(); for (int ii = 0; ii < pGDC->RecordCount; ii++) { String sTmpId = pGDC->Values[ii][Param01->Index]; if (sTmpId == sId) { bFound = true; break; } } if (bFound) { Application->MessageBox(L"ÀÌ¹Ì µî·ÏµÇ¾î ÀÖ´Â ½Ã½ºÅÛ Á¾·ù ÀÔ´Ï´Ù.\r\n»õ·Î¿î ½Ã½ºÅÛ Á¾·ù¸¦ ÀÔ·ÂÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } nRow = pGDC->AppendRecord(); pGDC->Values[nRow][Cndt01->Index] = sId; pGDC->Values[nRow][Cndt02->Index] = 0; pGDC->Values[nRow][Cndt03->Index] = 0; pGDC->Values[nRow][Cndt04->Index] = 0; pGDC->Values[nRow][Cndt05->Index] = 0; pGDC->Values[nRow][Cndt06->Index] = 0; pGDC->Values[nRow][Cndt07->Index] = 0; } __finally { TvCndt->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TVDSM020M::ChkGisZoomClick(TObject *Sender) { PnlInfo->Visible = !ChkGisZoom->Checked; } //---------------------------------------------------------------------------