//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "ITSDbF.h" #include "AppGlobalF.h" #include "WindowMsgF.h" #include "CDSNodeF.h" #include "CDSLinkF.h" #include "CDSIfscF.h" #include "CDSRoadF.h" #include "CDSTrafficGradeF.h" #include "ITSLangTransF.h" #pragma hdrstop #include "FrmLinkGradeSetF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxButtons" #pragma link "cxClasses" #pragma link "cxContainer" #pragma link "cxControls" #pragma link "cxCustomData" #pragma link "cxData" #pragma link "cxDataStorage" #pragma link "cxDropDownEdit" #pragma link "cxEdit" #pragma link "cxFilter" #pragma link "cxGraphics" #pragma link "cxGrid" #pragma link "cxGridCustomTableView" #pragma link "cxGridCustomView" #pragma link "cxGridLevel" #pragma link "cxGridTableView" #pragma link "cxGroupBox" #pragma link "cxLabel" #pragma link "cxLookAndFeelPainters" #pragma link "cxLookAndFeels" #pragma link "cxMaskEdit" #pragma link "cxStyles" #pragma link "cxTextEdit" #pragma link "dxSkinBlack" #pragma link "dxSkinBlue" #pragma link "dxSkinsCore" #pragma link "dxSkinscxPCPainter" #pragma resource "*.dfm" TFrmLinkGradeSet *FrmLinkGradeSet = NULL; //--------------------------------------------------------------------------- __fastcall TFrmLinkGradeSet::TFrmLinkGradeSet(TComponent* Owner) : TForm(Owner) { LangTrans->Translate(this, ITSDb_GetConnection()); ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); FTitle = Caption;//"±¸°£ ¼ÒÅëµî±Þ º¯°æ"; Caption = " " + FTitle;//" ±¸°£ ¼ÒÅëµî±Þ º¯°æ"; m_sLinkId = ""; m_nLinkLevel = 0; CbTrfGrade->Properties->OnChange = NULL; FCodeLTC = ItsCodeManager->FLists.Find("LTC"); //¼ÒÅëµî±Þ try { FOR_STL(TItsTrafficGrade *, pTrfGrade, ItsTrafficGradeManager->FLists) { CbTrfGrade->Properties->Items->Add("[" + pTrfGrade->SECT_GRAD_CD + "] " + pTrfGrade->SECT_GRAD_NM); } } __finally { } CbTrfGrade->ItemIndex = 0; CbTrfGrade->Properties->OnChange = CbTrfGradePropertiesChange; DisplayTrafficGrade(); } //--------------------------------------------------------------------------- void __fastcall TFrmLinkGradeSet::FormClose(TObject *Sender, TCloseAction &Action) { CMM_SaveForm(g_sFormsDir, this); FrmLinkGradeSet = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TFrmLinkGradeSet::FormDestroy(TObject *Sender) { FrmLinkGradeSet = NULL; } //--------------------------------------------------------------------------- void __fastcall TFrmLinkGradeSet::SetInfo(String sLinkId, int nLinkLevel) { m_sLinkId = sLinkId; m_nLinkLevel = nLinkLevel; EdId->Text = sLinkId; EdLevel->Text = String(m_nLinkLevel); EdLength->Text = FormatFloat("##,##0", 0); EdStId->Text = ""; EdEdId->Text = ""; EdStName->Text = FrmLang->lblNoName->Caption;//"¸íξøÀ½"; EdEdName->Text = FrmLang->lblNoName->Caption;//"¸íξøÀ½"; switch(m_nLinkLevel) { case 1: //·¹º§1 ¸µÅ©(Ç¥ÁظµÅ©) { TItsNode *pNode; TItsLink *pLink; pLink = ItsLinkManager->FLists.Find(m_sLinkId); if (!pLink) return; EdStId->Text = pLink->F_NODE_ID; EdEdId->Text = pLink->T_NODE_ID; EdLength->Text = FormatFloat("##,##0", StrToFloat(pLink->LINK_LENG)); pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID); if (pNode) EdStName->Text = pNode->NODE_NAME; pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID); if (pNode) EdEdName->Text = pNode->NODE_NAME; TItsTrafficGrade *pGrade = ItsTrafficGradeManager->FLists.Find(pLink->SECT_GRAD_CD); if (pGrade) CbTrfGrade->Text = "[" + pLink->SECT_GRAD_CD + "] " + pGrade->SECT_GRAD_NM; else CbTrfGrade->Text = ""; } break; case 2: //·¹º§2 ¸µÅ©(¼­ºñ½º¸µÅ©) { TItsNode *pNode; TItsIfsc *pLink; pLink = ItsIfscManager->FLists.Find(m_sLinkId); if (!pLink) return; EdStId->Text = pLink->F_NODE_ID; EdEdId->Text = pLink->T_NODE_ID; EdLength->Text = FormatFloat("##,##0", StrToFloat(pLink->SECT_LNGT)); pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID); if (pNode) EdStName->Text = pNode->NODE_NAME; pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID); if (pNode) EdEdName->Text = pNode->NODE_NAME; TItsTrafficGrade *pGrade = ItsTrafficGradeManager->FLists.Find(pLink->SECT_GRAD_CD); if (pGrade) CbTrfGrade->Text = "[" + pLink->SECT_GRAD_CD + "] " + pGrade->SECT_GRAD_NM; else CbTrfGrade->Text = ""; } break; case 3: //µµ·Î { TItsNode *pNode; TItsRoad *pLink; pLink = ItsRoadManager->FLists.Find(m_sLinkId); if (!pLink) return; EdStId->Text = pLink->F_NODE_ID; EdEdId->Text = pLink->T_NODE_ID; EdLength->Text = FormatFloat("##,##0", StrToFloat(pLink->SECT_LNGT)); pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID); if (pNode) EdStName->Text = pNode->NODE_NAME; pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID); if (pNode) EdEdName->Text = pNode->NODE_NAME; TItsTrafficGrade *pGrade = ItsTrafficGradeManager->FLists.Find(pLink->SECT_GRAD_CD); if (pGrade) CbTrfGrade->Text = "[" + pLink->SECT_GRAD_CD + "] " + pGrade->SECT_GRAD_NM; else CbTrfGrade->Text = ""; } break; } } //--------------------------------------------------------------------------- void __fastcall TFrmLinkGradeSet::CbTrfGradePropertiesChange(TObject *Sender) { DisplayTrafficGrade(); } //--------------------------------------------------------------------------- void __fastcall TFrmLinkGradeSet::DisplayTrafficGrade() { CMM_ClearGridTableView(TvList); try { TvList->BeginUpdate(); TcxDataController *pGDC = TvList->DataController; String sGradeCode = ITSUtil_GetCode(CbTrfGrade->Text); TItsTrafficGrade *pGrade = ItsTrafficGradeManager->FLists.Find(sGradeCode); if (!pGrade) return; int nRow; try { FOR_STL(TItsTrafficSubGrade *, pTrfSubGrade, pGrade->FSubLists) { nRow = pGDC->AppendRecord(); String sLTC = pTrfSubGrade->CMTR_GRAD_CD; TItsSubCode *pSubCode = FCodeLTC->FSubLists.Find(pTrfSubGrade->CMTR_GRAD_CD); if (pSubCode) sLTC = pSubCode->CMMN_CD_KOR_NM; pGDC->Values[nRow][Column01->Index] = pTrfSubGrade->CMTR_GRAD_CD; //ÄÚµå pGDC->Values[nRow][Column02->Index] = sLTC; //¸íĪ pGDC->Values[nRow][Column03->Index] = pTrfSubGrade->LWST_TRVL_SPED; //¼Óµµ(Low) pGDC->Values[nRow][Column04->Index] = pTrfSubGrade->HGHS_TRVL_SPED; //¼Óµµ(High) } } __finally { } } __finally { TvList->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmLinkGradeSet::BtnApplyClick(TObject *Sender) { if (Application->MessageBox(lblCnfm->Caption.c_str(),//L"¼ÒÅëµî±ÞÀÇ º¯°æÀº ¼ÒÅëÁ¤º¸¿¡ Å« ¿µÇâÀ» ¹ÌĨ´Ï´Ù.\r\n°è¼ÓÇϽðڽÀ´Ï±î?\r\n\r\n[ÁÖÀÇ - ¹Ýµå½Ã Á¤º¸¸¦ È®ÀÎÈÄ ÁøÇàÇϼ¼¿ä!!!]", FTitle.c_str(), MB_YESNO|MB_ICONWARNING|MB_ICONQUESTION) != IDYES) { return; } String sQry; TADOQuery *pADO = NULL; String sGradeCode = ITSUtil_GetCode(CbTrfGrade->Text); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); try { switch(m_nLinkLevel) { case 1: //·¹º§1 ¸µÅ©(Ç¥ÁظµÅ©) sQry = "UPDATE TB_LINK SET SECT_GRAD_CD = :p01 WHERE LINK_ID = :p02"; break; case 2: //·¹º§2 ¸µÅ©(¼­ºñ½º¸µÅ©) sQry = "UPDATE TB_IFSC SET SECT_GRAD_CD = :p01 WHERE IFSC_ID = :p02"; break; case 3: //µµ·Î sQry = "UPDATE TB_ROAD SET SECT_GRAD_CD = :p01 WHERE ROAD_ID = :p02"; break; default: return; } ITSDb_GetConnection()->BeginTrans(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", sGradeCode); ITSDb_SQLBind(pADO, "p02", m_sLinkId); ITSDb_SQLExec(pADO); ITSDb_GetConnection()->CommitTrans(); switch(m_nLinkLevel) { case 1: //·¹º§1 ¸µÅ©(Ç¥ÁظµÅ©) { TItsLink *pLink = ItsLinkManager->FLists.Find(m_sLinkId); if (!pLink) return; pLink->SECT_GRAD_CD = sGradeCode; } break; case 2: //·¹º§2 ¸µÅ©(¼­ºñ½º¸µÅ©) { TItsIfsc *pIfsc = ItsIfscManager->FLists.Find(m_sLinkId); if (!pIfsc) return; pIfsc->SECT_GRAD_CD = sGradeCode; } break; case 3: //µµ·Î { TItsRoad *pRoad = ItsRoadManager->FLists.Find(m_sLinkId); if (!pRoad) return; pRoad->SECT_GRAD_CD = sGradeCode; } break; } Application->MessageBox(lblOk->Caption.c_str(),//L"¼ÒÅëÁ¤º¸ µî±Þ±¸ºÐÀ» Àû¿ë ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_05, 0); } catch(EDatabaseError &E) { ITSDb_GetConnection()->RollbackTrans(); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &exception) { ITSDb_GetConnection()->RollbackTrans(); throw Exception(String(exception.ClassName()) + exception.Message); } catch(...) { ITSDb_GetConnection()->RollbackTrans(); throw Exception(FrmLang->lblDbErr->Caption);//"[±¸°£ ¼ÒÅëµî±Þ º¯°æ] ¾Ë¼ö¾ø´Â DB ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù."); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } } //---------------------------------------------------------------------------