//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "ITSLangTransF.h" #include "CDSCrossF.h" #pragma hdrstop #include "FrmCrsTrafVolLogF.h" //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxClasses" #pragma link "cxContainer" #pragma link "cxControls" #pragma link "cxEdit" #pragma link "cxGraphics" #pragma link "cxHint" #pragma link "cxLabel" #pragma link "cxLookAndFeelPainters" #pragma link "cxLookAndFeels" #pragma link "cxMaskEdit" #pragma link "cxPC" #pragma link "cxPCdxBarPopupMenu" #pragma link "cxSpinEdit" #pragma link "cxTextEdit" #pragma link "dxBar" #pragma link "dxCustomHint" #pragma link "dxRibbon" #pragma link "dxRibbonGallery" #pragma link "dxRibbonSkins" #pragma link "dxRibbonStatusBar" #pragma link "dxScreenTip" #pragma link "dxSkinBlack" #pragma link "dxSkinBlue" #pragma link "dxSkinCaramel" #pragma link "dxSkinChooserGallery" #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 "dxSkinsdxBarPainter" #pragma link "dxSkinsdxRibbonPainter" #pragma link "dxSkinSeven" #pragma link "dxSkinsForm" #pragma link "dxSkinSharp" #pragma link "dxSkinSilver" #pragma link "dxSkinStardust" #pragma link "dxStatusBar" #pragma link "dxTabbedMDI" #pragma link "cxButtons" #pragma link "cxCalendar" #pragma link "cxDropDownEdit" #pragma link "cxGroupBox" #pragma link "cxSplitter" #pragma link "cxTimeEdit" #pragma link "cxCalc" #pragma link "cxCheckBox" #pragma link "cxCustomData" #pragma link "cxData" #pragma link "cxDataStorage" #pragma link "cxFilter" #pragma link "cxGrid" #pragma link "cxGridCustomTableView" #pragma link "cxGridCustomView" #pragma link "cxGridLevel" #pragma link "cxGridTableView" #pragma link "cxStyles" #pragma resource "*.dfm" TFrmCrsTrafVolLog *FrmCrsTrafVolLog = NULL; //--------------------------------------------------------------------------- __fastcall TFrmCrsTrafVolLog::TFrmCrsTrafVolLog(TComponent* Owner) : TForm(Owner)//TdxCustomRibbonForm(Owner)//TForm(Owner) { DoubleBuffered = true; g_AppCfg.lMainWinHandle = (long)Handle; LangTrans->Translate(this, ITSDb_GetConnection()); CMM_SetFormPosition(g_AppCfg.bSaveForm); ITSSkin_Initialize(Application); ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); #if 0 String sCaption = ""; ReadConfigInfo(g_AppCfg.sConfigFile, "APPLICATION", "CAPTION", sCaption); ITSSkin_Caption(sCaption == "1" ? true : false); #endif SetColorScheme(g_AppCfg.sSkinName); FFormList = new TList(); TsList01->TabVisible = false; CrossManager = new TCrossManager(); } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::FormCreate(TObject *Sender) { Application->ShowMainForm = false; try { Application->Icon->LoadFromResourceName(((unsigned int)HInstance), "MAINICON"); } catch(...) { ShowMessage("LoadFromResourceName failed"); } Application->ShowMainForm = true; } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::FormShow(TObject *Sender) { Application->ProcessMessages(); FormInit(); } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::CommClose() { try { for (int idx = FFormList->Count-1; idx >= 0; idx--) { TFrmCrsTrafVolLogSub *pLogForm = (TFrmCrsTrafVolLogSub*)FFormList->Items[idx]; delete pLogForm; FFormList->Delete(idx); } delete FFormList; ITSSkin_Term(); CMM_SaveForm(g_sFormsDir, this); } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::SetColorScheme(String ASkinName) { dxSkinController1->SkinName = ASkinName; dxSkinController1->Refresh(); } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::FormInit() { CbStatType->ItemIndex = 0; TDateTime dtStart = Now()-1; TDateTime dtEnd = Now(); DtStDate->Date = dtStart; DtEdDate->Date = dtEnd; DtStTime->Date = dtStart; DtEdTime->Date = dtEnd; CrossManager->LoadFromDb(); FillList(); } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::FillList() { CbCamera->Properties->Items->Clear(); TNotifyEvent evt = CbCross->Properties->OnChange; CbCross->Properties->OnChange = NULL; CbCross->Properties->Items->Clear(); CrossManager->FLists.Lock(); try { FOR_STL(TCross*, pObj, CrossManager->FLists) { CbCross->Properties->Items->AddObject("[" + pObj->CROSS_ID + "] " + pObj->CROSS_NM, (TObject*)pObj); } } __finally { CrossManager->FLists.UnLock(); } CbCross->Properties->OnChange = evt; CbCross->ItemIndex = -1; CbCross->ItemIndex = 0; } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::OnSubFormClose(TMessage Msg) { int nActiveIdx = PgTab->ActivePageIndex; if (nActiveIdx <= 0) return; LockWindowUpdate(Handle); TcxTabSheet *pSheet = PgTab->ActivePage; if (pSheet) { delete pSheet; } nActiveIdx--; // ù¹øÂ° ÅÇÀº È­¸é¿¡ ¼û°ÜÁ® ÀÖ´Ù. FFormList->Delete(nActiveIdx); LockWindowUpdate(0); } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::PgTabDblClick(TObject *Sender) { TPoint APoint; APoint = PgTab->MouseDownPos; if (PgTab->IndexOfTabAt(APoint.x, APoint.y) != -1) POST_MSG(Handle, WM_SUBFORM_CLOSE, 0, 0); } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::BtnSearchClick(TObject *Sender) { TCross *pObj = (TCross*)CbCross->Properties->Items->Objects[CbCross->ItemIndex]; if (!pObj) return; String sCamNm = ""; String sCamIds = ""; TCrossCam *pCam = (TCrossCam*)CbCamera->Properties->Items->Objects[CbCamera->ItemIndex]; if (!pCam) { for (int ii = 1; ii < CbCamera->Properties->Items->Count; ii++) { TCrossCam *pTmp = (TCrossCam*)CbCamera->Properties->Items->Objects[ii]; if (pTmp) { if (sCamIds == "") { sCamIds = "'" + pTmp->CAM_ID + "'"; } else { String sTmp = ", '" + pTmp->CAM_ID + "'"; sCamIds += sTmp; } } } sCamNm = "*ALL*"; } else { sCamNm = pCam->CAM_NM; sCamIds = "'" + pCam->CAM_ID + "'"; } if (sCamIds == "") return; String sStTime, sEdTime, sTemp; switch(CbStatType->ItemIndex) { case 0: //5ºÐ case 1: //15ºÐ case 2: //30ºÐ case 3: //1½Ã°£ sStTime = DtStDate->Date.FormatString("yyyyMMdd") + DtStTime->Time.FormatString("hh"); sEdTime = DtEdDate->Date.FormatString("yyyyMMdd") + DtEdTime->Time.FormatString("hh"); FStrTime = sStTime + "0000"; FEndTime = sEdTime + "5959"; break; case 4: //ÀÏ sStTime = DtStDate->Date.FormatString("yyyyMMdd"); sEdTime = DtEdDate->Date.FormatString("yyyyMMdd"); FStrTime = sStTime + "000000"; FEndTime = sEdTime + "235959"; break; } if (sStTime > sEdTime) { Application->MessageBox(L"°Ë»ö ½ÃÀ۽ð¢ÀÌ °Ë»ö Á¾·á½Ã°¢ º¸´Ù Å®´Ï´Ù.", Caption.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL); ActiveControl = DtStDate; return; } //FCrossId = "'" + pObj->CROSS_ID + "'"; FCrossId = pObj->CROSS_ID; FCamId = sCamIds; bool isLane = ChkLane->Checked; String sTitle; sTitle.printf(L"%s~%s ", sStTime.c_str(), sEdTime.c_str()); try { Application->ProcessMessages(); LockWindowUpdate(Handle); TcxTabSheet *pSheet = CMM_AddTabSheet(PgTab, sTitle); if (!pSheet) return; TFrmCrsTrafVolLogSub *pLogForm = new TFrmCrsTrafVolLogSub(this, Handle, FStrTime, FEndTime, FCrossId, FCamId, CbStatType->ItemIndex, isLane, pObj->CROSS_NM, sCamNm); pLogForm->Caption= Caption; pLogForm->Parent = pSheet; pLogForm->Show(); PgTab->ActivePage = pSheet; pSheet = PgTab->ActivePage; FFormList->Add(pLogForm); } __finally { LockWindowUpdate(0); } } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::PgTabCanCloseEx(TObject *Sender, int ATabIndex, bool &ACanClose) { int nActiveIdx = ATabIndex; if (nActiveIdx <= 0) return; nActiveIdx--; // ù¹øÂ° ÅÇÀº È­¸é¿¡ ¼û°ÜÁ® ÀÖ´Ù. FFormList->Delete(nActiveIdx); } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::CbCrossPropertiesChange(TObject *Sender) { TCross *pObj = (TCross*)CbCross->Properties->Items->Objects[CbCross->ItemIndex]; if (!pObj) return; CbCamera->Properties->Items->Clear(); CbCamera->Properties->Items->AddObject(" [ALL] Àüü", (TObject*)NULL); FOR_STL(TCrossCam*, pCam, pObj->FLists) { CbCamera->Properties->Items->AddObject(" [" + pCam->CAM_ID + "] " + pCam->CAM_NM, (TObject*)pCam); } CbCamera->ItemIndex = 1; } //--------------------------------------------------------------------------- void __fastcall TFrmCrsTrafVolLog::CbStatTypePropertiesChange(TObject *Sender) { switch(CbStatType->ItemIndex) { case 0: //5ºÐ case 1: //15ºÐ case 2: //30ºÐ case 3: //1½Ã°£ DtStDate->Format = " yyyy³â MM¿ù ddÀÏ"; DtEdDate->Format = " yyyy³â MM¿ù ddÀÏ"; DtStTime->Enabled = true; DtEdTime->Enabled = true; break; case 4: //ÀÏ DtStDate->Format = " yyyy³â MM¿ù ddÀÏ"; DtEdDate->Format = " yyyy³â MM¿ù ddÀÏ"; DtStTime->Enabled = false; DtEdTime->Enabled = false; break; } DtStDate->SetFocus(); } //---------------------------------------------------------------------------