//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "FrmResourceF.h" #include "ITSLangTransF.h" #pragma hdrstop #include "FRAME_LinkListF.h" #include "CDSNodeF.h" #include "CDSLinkF.h" #include "CDSIfscF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxButtons" #pragma link "cxCalc" #pragma link "cxCheckBox" #pragma link "cxClasses" #pragma link "cxContainer" #pragma link "cxControls" #pragma link "cxCustomData" #pragma link "cxData" #pragma link "cxDataStorage" #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 "cxLookAndFeelPainters" #pragma link "cxLookAndFeels" #pragma link "cxStyles" #pragma link "cxTextEdit" #pragma link "dxSkinBlack" #pragma link "dxSkinBlue" #pragma link "dxSkinsCore" #pragma link "dxSkinscxPCPainter" #pragma link "cxLabel" #pragma resource "*.dfm" //TFRAMELinkList *FRAMELinkList; //--------------------------------------------------------------------------- __fastcall TFRAMELinkList::TFRAMELinkList(TComponent* Owner) : TFrame(Owner) { LangTrans->Translate(this, ITSDb_GetConnection()); ColumnSel->Options->Filtering = false; m_pGDC = TvList->DataController; TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<¸µÅ© Á¤º¸°¡ ¾ø½À´Ï´Ù>"; } //--------------------------------------------------------------------------- int __fastcall TFRAMELinkList::AddLink(String ALinkId) { TItsNode *pNode; int nRow = 0; TItsLink *pLink = ItsLinkManager->FLists.Find(ALinkId); if (!pLink) return nRow; try { TItsIfsc *pIfsc; TvList->BeginUpdate(); //if (pLink->REGN_YN == "Y" || ChkDispExt->Checked == true) { nRow = m_pGDC->AppendRecord(); m_pGDC->Values[nRow][ColumnSel->Index] = false; //¼±Åà m_pGDC->Values[nRow][Column00->Index] = pLink->LINK_ID; m_pGDC->Values[nRow][Column01->Index] = pLink->LINK_ID; m_pGDC->Values[nRow][Column20->Index] = pLink->IFSC_ID; pIfsc = ItsIfscManager->FLists.Find(pLink->IFSC_ID); if (pIfsc) m_pGDC->Values[nRow][Column21->Index] = pIfsc->IFSC_NM; m_pGDC->Values[nRow][ColumnSeq->Index] = nRow+1; String sFNodeName = "[" + pLink->F_NODE_ID + "] "; pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID); if (pNode) sFNodeName = pNode->NODE_NAME; //sFNodeName = sFNodeName + pNode->NODE_NAME; m_pGDC->Values[nRow][Column02->Index] = sFNodeName; //'½ÃÀÛ³ëµåID'; String sTNodeName = "[" + pLink->T_NODE_ID + "] "; pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID); if (pNode) sTNodeName = pNode->NODE_NAME; //sTNodeName = sTNodeName + pNode->NODE_NAME; m_pGDC->Values[nRow][Column03->Index] = sTNodeName; //'Á¾·á³ëµåID'; m_pGDC->Values[nRow][Column04->Index] = pLink->ROAD_USE; //'µµ·Î»ç¿ë¿©ºÎ'; m_pGDC->Values[nRow][Column05->Index] = pLink->LANES; //'Â÷·Î¼ö'; m_pGDC->Values[nRow][Column06->Index] = pLink->ROAD_RANK; //'µµ·Îµî±Þ'; m_pGDC->Values[nRow][Column07->Index] = pLink->ROAD_TYPE; //'µµ·ÎÀ¯Çü'; m_pGDC->Values[nRow][Column08->Index] = pLink->ROAD_NO; //'µµ·Î¹øÈ£'; m_pGDC->Values[nRow][Column09->Index] = pLink->ROAD_NAME; //'µµ·Î¸í'; m_pGDC->Values[nRow][Column10->Index] = pLink->MULTI_LINK; //'Á߿뱸°£¿©ºÎ'; m_pGDC->Values[nRow][Column11->Index] = pLink->LINK_CONNECT; //'¿¬°á·ÎÄÚµå'; m_pGDC->Values[nRow][Column12->Index] = pLink->MAX_SPD; //'ÃÖ°íÁ¦ÇѼӵµ'; m_pGDC->Values[nRow][Column13->Index] = pLink->REST_VEH; //'ÅëÇàÁ¦ÇÑÂ÷·®'; m_pGDC->Values[nRow][Column14->Index] = pLink->REST_W; //'Åë°úÁ¦ÇÑÇÏÁß'; m_pGDC->Values[nRow][Column15->Index] = pLink->REST_H; //'Åë°úÁ¦ÇѳôÀÌ'; m_pGDC->Values[nRow][Column16->Index] = pLink->LINK_LENG; //'¿¬Àå'; m_pGDC->Values[nRow][Column17->Index] = pLink->RMRK; //'ºñ°í'; m_pGDC->Values[nRow][Column18->Index] = 0; } } __finally { LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")"; TvList->EndUpdate(); } return nRow; } //--------------------------------------------------------------------------- void __fastcall TFRAMELinkList::UpdateList() { CMM_ClearGridTableView(TvList); TItsNode *pNode; int nRow = 0; try { TItsIfsc *pIfsc; TvList->BeginUpdate(); try { ItsLinkManager->FLists.Lock(); FOR_STL(TItsLink*, pLink, ItsLinkManager->FLists) { if (pLink->REGN_YN == "Y" || ChkDispExt->Checked == true) { nRow = m_pGDC->AppendRecord(); m_pGDC->Values[nRow][ColumnSel->Index] = false; //¼±Åà m_pGDC->Values[nRow][Column00->Index] = pLink->LINK_ID; m_pGDC->Values[nRow][Column01->Index] = pLink->LINK_ID; m_pGDC->Values[nRow][Column20->Index] = pLink->IFSC_ID; pIfsc = ItsIfscManager->FLists.Find(pLink->IFSC_ID); if (pIfsc) m_pGDC->Values[nRow][Column21->Index] = pIfsc->IFSC_NM; String sFNodeName = "[" + pLink->F_NODE_ID + "] "; pNode = ItsNodeManager->FLists.Find(pLink->F_NODE_ID); if (pNode) sFNodeName = sFNodeName + pNode->NODE_NAME; m_pGDC->Values[nRow][Column02->Index] = sFNodeName; //'½ÃÀÛ³ëµåID'; String sTNodeName = "[" + pLink->T_NODE_ID + "] "; pNode = ItsNodeManager->FLists.Find(pLink->T_NODE_ID); if (pNode) sTNodeName = sTNodeName + pNode->NODE_NAME; m_pGDC->Values[nRow][Column03->Index] = sTNodeName; //'Á¾·á³ëµåID'; m_pGDC->Values[nRow][Column04->Index] = pLink->ROAD_USE; //'µµ·Î»ç¿ë¿©ºÎ'; m_pGDC->Values[nRow][Column05->Index] = pLink->LANES; //'Â÷·Î¼ö'; m_pGDC->Values[nRow][Column06->Index] = pLink->ROAD_RANK; //'µµ·Îµî±Þ'; m_pGDC->Values[nRow][Column07->Index] = pLink->ROAD_TYPE; //'µµ·ÎÀ¯Çü'; m_pGDC->Values[nRow][Column08->Index] = pLink->ROAD_NO; //'µµ·Î¹øÈ£'; m_pGDC->Values[nRow][Column09->Index] = pLink->ROAD_NAME; //'µµ·Î¸í'; m_pGDC->Values[nRow][Column10->Index] = pLink->MULTI_LINK; //'Á߿뱸°£¿©ºÎ'; m_pGDC->Values[nRow][Column11->Index] = pLink->LINK_CONNECT; //'¿¬°á·ÎÄÚµå'; m_pGDC->Values[nRow][Column12->Index] = pLink->MAX_SPD; //'ÃÖ°íÁ¦ÇѼӵµ'; m_pGDC->Values[nRow][Column13->Index] = pLink->REST_VEH; //'ÅëÇàÁ¦ÇÑÂ÷·®'; m_pGDC->Values[nRow][Column14->Index] = pLink->REST_W; //'Åë°úÁ¦ÇÑÇÏÁß'; m_pGDC->Values[nRow][Column15->Index] = pLink->REST_H; //'Åë°úÁ¦ÇѳôÀÌ'; m_pGDC->Values[nRow][Column16->Index] = pLink->LINK_LENG; //'¿¬Àå'; m_pGDC->Values[nRow][Column17->Index] = pLink->RMRK; //'ºñ°í'; m_pGDC->Values[nRow][Column22->Index] = pLink->PARA_ID; m_pGDC->Values[nRow][Column99->Index] = (int)pLink; m_pGDC->Values[nRow][Column18->Index] = 0; } } } __finally { ItsLinkManager->FLists.UnLock(); } } __finally { LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")"; TvList->EndUpdate(); TvList->DataController->GotoFirst(); TvList->DataController->FocusedRecordIndex = 0; //CxList->SetFocus(); } } //--------------------------------------------------------------------------- void __fastcall TFRAMELinkList::UpdateParam() { try { TcxDataController* pGDC = TvList->DataController; TvList->BeginUpdate(); int nMemPtr; try { ItsLinkManager->FLists.Lock(); for (int ii = 0; ii < pGDC->RecordCount; ii++) { nMemPtr = pGDC->Values[ii][Column99->Index]; TItsLink* pLink = (TItsLink*)nMemPtr; if (!pLink) continue; pGDC->Values[ii][Column22->Index] = pLink->PARA_ID; } } __finally { ItsLinkManager->FLists.UnLock(); } } __finally { TvList->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFRAMELinkList::ChkDispExtPropertiesChange(TObject *Sender) { UpdateList(); } //--------------------------------------------------------------------------- void __fastcall TFRAMELinkList::BtnAllSelectClick(TObject *Sender) { TcxButton *pBtn = (TcxButton*)Sender; CMM_CheckAllListItem(TvList, ColumnSel->Index, pBtn->Tag); } //--------------------------------------------------------------------------- int __fastcall TFRAMELinkList::GetSelLinkIds(String &ALinkIds) { ALinkIds = ""; if (TvList->ViewData->RecordCount <= 0) return 0; int nIndex = m_pGDC->FocusedRecordIndex; if( nIndex < 0 ) return 0; String sLinkId = VarToStr(m_pGDC->Values[nIndex][Column01->Index]); ALinkIds = sLinkId; return 1; } //--------------------------------------------------------------------------- int __fastcall TFRAMELinkList::GetSelLinkIds(TStringList *AStringList) { int nSelCnt = 0; try { TvList->BeginUpdate(); #if 0 int nRowCnt = m_pGDC->RecordCount; for (int ii = 0; ii < nRowCnt; ii++) { if (((bool)m_pGDC->Values[ii][ColumnSel->Index])) { AStringList->Add(m_pGDC->Values[ii][Column00->Index]); nSelIdx++; } } #else int nRowCnt = TvList->ViewData->RecordCount; for (int ii = 0; ii < nRowCnt; ii++) { TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii]; if (((bool)ARow->Values[ColumnSel->Index])) { AStringList->Add(ARow->Values[Column01->Index]); nSelCnt++; } } #endif } __finally { TvList->EndUpdate(); } return nSelCnt; } //--------------------------------------------------------------------------- void __fastcall TFRAMELinkList::TvListDataControllerFilterChanged(TObject *Sender) { CMM_SetFilterLike(TvList); LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")"; } //--------------------------------------------------------------------------- void __fastcall TFRAMELinkList::BtnExlSaveClick(TObject *Sender) { TcxGrid *pGrid = CxList; TcxGridTableView *pView = TvList; String sTitle= lblFileName->Caption;//"¸µÅ©Á¤º¸"; CMM_ExportToExcelFile(sTitle, pGrid, pView, (TForm*)this); } //---------------------------------------------------------------------------