//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "CDSCodeF.h" #include "CDSFacilityF.h" #pragma hdrstop #include "IFM0060MF.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 "cxCheckBox" #pragma link "FRAME_FlashMapF" #pragma link "FRAME_ParkingListF" #pragma resource "*.dfm" TIFM0060M *IFM0060M = NULL; //--------------------------------------------------------------------------- void TIFM0060M_FlashCall(TObject *ASender, const WideString request) { try { if (!IFM0060M) return; IFM0060M->ShockwaveFlash1FlashCall1(ASender, request); } catch(Exception &exception) { } } //--------------------------------------------------------------------------- __fastcall TIFM0060M::TIFM0060M(TComponent* Owner) : TForm(Owner) { ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); FUpdate= false; FTitle = "ÁÖÂ÷Àå °ü¸®"; MapStart = false; FRAMEGisMap1->FlashCallbackFunc = TIFM0060M_FlashCall; FRAMEGisMap1->DrawMode = 1; //±¸°£Á¤º¸Ç¥Ãâ FRAMEGisMap1->ImgPan->Visible = true; FRAMEGisMap1->ImgZoomIn->Visible = true; FRAMEGisMap1->ImgZoomOut->Visible = true; FRAMEGisMap1->ImgSel->Visible = true; FRAMEGisMap1->ImgStnd->Visible = true; FRAMEGisMap1->ImgRefresh->Visible = true; FRAMEGisMap1->LbDef->Caption = "(¼±Åø޴º¸¦ Ŭ¸¯ÇÏ¿© À§Ä¡¸¦ ¼±ÅÃÇÕ´Ï´Ù.)"; FRAMEGisMap1->LbDef->Hint = FRAMEGisMap1->LbDef->Caption; FRAMEGisMap1->LbDef->Visible = true; FRAMEParkingList1->PnlTop->Visible = false; FRAMEParkingList1->PnlBottom->Visible = false; FRAMEParkingList1->ColumnSel->Visible = false; FRAMEParkingList1->Column02->Visible = false; m_pGDC = FRAMEParkingList1->TvList->DataController; } //--------------------------------------------------------------------------- /* * ´Ý±â¹öư À̳ª x¹öư Ŭ¸¯½Ã °øÅëÀ¸·Î ó¸®ÇÏ´Â ·ÎÁ÷À̵é¾î°£´Ù.. * Form°ú DataModule class¸¦ delete½ÃŲ´Ù. * arguments * * return * void */ void __fastcall TIFM0060M::CommClose() { try { CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- /* * FormÀ» º¸¿©ÁÙ¶§ È£ÃâµÇ´Â event ¸Þ¼­µåÀÌ´Ù. * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TIFM0060M::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; FormInit(); ChangeEditMode(1); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- /* * form ÃʱâÈ­ * * arguments * * return * void */ void __fastcall TIFM0060M::FormInit() { EdId->Text = ""; EdMngmNmbr->Text = ""; EdName->Text = ""; SeParkingCnt->Value = 0; EdPhone->Text = ""; SePosX->Value = 0; SePosY->Value = 0; EdLoc->Text = ""; EdAddr->Text = ""; EdEName->Text = ""; EdELoc->Text = ""; EdEAddr->Text = ""; FNewDb = false; } //--------------------------------------------------------------------------- /* * FormÀÌ ShowµÇ°í ³­ ÈÄ ÃÖÃÊ 1ȸ ¼öÇàµÇ´Â ŸÀÌ¸Ó À̺¥Æ® * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TIFM0060M::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; FRAMEGisMap1->LinkLevel = 1; FRAMEGisMap1->LoadGisMap(); FRAMEParkingList1->UpdateList(); } //--------------------------------------------------------------------------- /* * Close ¹öư Ŭ¸¯ À̺¥Æ® Çڵ鷯 * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TIFM0060M::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); IFM0060M = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::FormCloseQuery(TObject *Sender, bool &CanClose) { if (FUpdate) { POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } FRAMEParkingList1->OnCloseQuery(CanClose); } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::DisplayInfo(TItsParking* AObj) { FormInit(); if (!AObj) return; EdId->Text = AObj->PARKINGID; EdMngmNmbr->Text = AObj->PARKINGID; EdName->Text = AObj->PARKINGNAME; SeParkingCnt->Value = AObj->PARKINGCNT.ToIntDef(0); EdPhone->Text = AObj->PHONE; SePosX->Value = StrToFloatDef(AObj->COORDX, 0); SePosY->Value = StrToFloatDef(AObj->COORDY, 0); EdLoc->Text = AObj->LOCATION; EdAddr->Text = AObj->ADDRESS; EdEName->Text = AObj->PARKINGENAME; EdELoc->Text = AObj->ELOCATION; EdEAddr->Text = AObj->EADDRESS; //CMM_SetComboBoxItem(CbTypeCd, AObj->CTLR_TYPE_CD); //CbValidYn->Text = AObj->VALD_YN; FRAMEGisMap1->SelectObjectByPos(SePosX->Value, SePosY->Value, true); ChangeEditMode(3); } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::UpdateParkingIcon() { if (!MapStart) return; TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "RemoveFacility", FAC_PARK); TItsFacility *pFacility; try { //if (ChkViewIcon->Checked) { String sObjList = ""; try { ItsParkingManager->FLists.Lock(); FOR_STL(TItsParking*, pObj, ItsParkingManager->FLists) { if (pObj->DEL_YN != "N") continue; String sLoc = TCommFlash::ReplaceName(pObj->PARKINGNAME); sObjList += (pObj->PARKINGID + "," + "0," + sLoc + "," + pObj->COORDX + "," + pObj->COORDY + "," + pObj->PARKINGID + "|"); } } __finally { ItsParkingManager->FLists.UnLock(); if (sObjList != "") { sObjList = sObjList.SubString(1, sObjList.Length()-1); TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "AddFacility", FAC_PARK + "|" + sObjList); } } } } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::FRAMEParkingList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; int nRow = FRAMEParkingList1->TvList->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; int nMemPtr = FRAMEParkingList1->TvList->DataController->Values[nRow][FRAMEParkingList1->Column99->Index]; TItsParking* pObj = (TItsParking*)nMemPtr; DisplayInfo(pObj); } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::ChkViewIconClick(TObject *Sender) { if (!MapStart) return; String sShowIcon = ChkViewIcon->Checked ? "1" : "0"; String sShowName = ChkViewName->Checked ? "1" : "0"; TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "ShowFacility", "PARK|" + sShowIcon + "|" + sShowName); } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::BtnEditClick(TObject *Sender) { if (BtnEdit->Caption == "ÆíÁý") { ChangeEditMode(0); FNewDb = false; } else { String sId = EdId->Text; ChangeEditMode(1); TItsParking *pObj = ItsParkingManager->FLists.Find(sId); if (pObj) { CMM_SetGridRow(FRAMEParkingList1->CxList, FRAMEParkingList1->TvList, sId, FRAMEParkingList1->Column01->Index); DisplayInfo(pObj); } } } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::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) { FRAMEParkingList1->CxList->Enabled = false; } else { FRAMEParkingList1->CxList->Enabled = true; } EdId->Properties->ReadOnly = bEnabled; EdMngmNmbr->Properties->ReadOnly = bEnabled; EdName->Properties->ReadOnly = bEnabled; SeParkingCnt->Properties->ReadOnly = bEnabled; EdPhone->Properties->ReadOnly = bEnabled; SePosX->Properties->ReadOnly = bEnabled; SePosY->Properties->ReadOnly = bEnabled; EdLoc->Properties->ReadOnly = bEnabled; EdAddr->Properties->ReadOnly = bEnabled; EdEName->Properties->ReadOnly = bEnabled; EdELoc->Properties->ReadOnly = bEnabled; EdEAddr->Properties->ReadOnly = bEnabled; } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::BtnInsertClick(TObject *Sender) { FormInit(); //½Å±Ô¾ÆÀ̵𸦠¾ò¾î¿Í¼­ È­¸éÀ» ÃʱâÈ­ÇÑ´Ù. String sId; #if 0 if (!ItsParkingManager->GetNextParkingId(sId)) { Application->MessageBox(L"»õ·Î¿î ÁÖÂ÷ÀåID¸¦ »ý¼ºÇÏÁö ¸øÇÏ¿´½À´Ï´Ù.\r\nÇÁ·Î±×·¥ Á¾·áÈÄ¿¡ ´Ù½Ã ½ÃµµÇØ º¸¼¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } #else sId = InputBox("ÁÖÂ÷ÀåID", "½Å±Ô ÁÖÂ÷ÀåID¸¦ ÀÔ·ÂÇϼ¼¿ä(10Byte).", "ÁÖÂ÷ÀåID" ); sId = sId.Trim(); if (sId == "ÁÖÂ÷ÀåID" || sId == "") { return; } if (AnsiString(sId).Length() > 10) { Application->MessageBox(L"ÁÖÂ÷ÀåID´Â 10Byte¸¦ ÃʰúÇÒ ¼ö ¾ø½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } TItsParking *pDb = (TItsParking *)ItsParkingManager->FLists.Find(sId); if (pDb) { Application->MessageBox(("[" + sId + "]´Â »ç¿ëÇÒ ¼ö ¾ø´Â ÁÖÂ÷ÀåID ÀÔ´Ï´Ù.").c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } #endif EdId->Text = sId; EdMngmNmbr->Text = sId; ChangeEditMode(2); FNewDb = true; } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::BtnDeleteClick(TObject *Sender) { if (!MapStart) return; int nIdx = m_pGDC->FocusedRecordIndex; if (nIdx < 0) return; String sId = EdId->Text; if (sId.IsEmpty()) { Application->MessageBox(L"»èÁ¦ÇÒ ÁÖÂ÷ÀåÁ¤º¸¸¦ ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.\r\n¸ñ·Ï¿¡¼­ ´õºíŬ¸¯ÇÏ¿© ¼±ÅÃÇÕ´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sMsg; sMsg = "ID: " + sId; sMsg+= "\r\n¼±ÅÃÇϽŠÁÖÂ÷Àå Á¤º¸¸¦ »èÁ¦ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; TItsParking *pObj = ItsParkingManager->FLists.Find(sId); if (pObj) { if (ItsParkingManager->DeleteParking(pObj)) { pObj->DEL_YN = "Y"; FRAMEParkingList1->UpdateList(); } #if 0 TItsFacility *pFacility = ItsFacilityManager->FLists.Find(sId); if (pFacility) { FUpdate = true; } #else FUpdate = true; #endif Application->MessageBox(L"ÁÖÂ÷Àå Á¤º¸»èÁ¦\r\nÁÖÂ÷Àå Á¤º¸¸¦ »èÁ¦ ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FormInit(); ChangeEditMode(1); TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "DeleteFacility", FAC_PARK + "|" + sId); } } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::BtnSaveClick(TObject *Sender) { if (EdId->Text.IsEmpty() || EdName->Text.Trim().IsEmpty()|| SePosX->Value == 0 || SePosY->Value == 0 ) //CbTypeCd->Text.IsEmpty() ) { Application->MessageBox(L"¡ÚÇ׸ñÀº Çʼö ÀÔ·Â Ç׸ñÀÔ´Ï´Ù.\r\n¸ðµÎ ÀÔ·ÂÈÄ ÁøÇàÇØ ÁÖ¼¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sId = EdId->Text; TItsParking *pObj; if (FNewDb) pObj = new TItsParking(); else pObj = ItsParkingManager->FLists.Find(sId); if (pObj) { pObj->PARKINGID = sId; pObj->PARKINGNAME = EdName->Text.Trim(); pObj->PARKINGCNT = VarToStr(SeParkingCnt->Value); pObj->COORDX = VarToStr(SePosX->Value); pObj->COORDY = VarToStr(SePosY->Value); pObj->PHONE = EdPhone->Text.Trim(); pObj->LOCATION = EdLoc->Text.Trim(); pObj->ADDRESS = EdAddr->Text.Trim(); pObj->PARKINGENAME = EdEName->Text.Trim(); pObj->ELOCATION = EdELoc->Text.Trim(); pObj->EADDRESS = EdEAddr->Text.Trim(); pObj->PISFLAG = ""; pObj->DISTRICTID = ""; pObj->DEL_YN = "N"; bool bResult; if (FNewDb) { bResult = ItsParkingManager->InsertParking(pObj); if (bResult) { ItsParkingManager->FLists.Push(sId, pObj); } } else { bResult = ItsParkingManager->UpdateParking(pObj); } if (bResult) { Application->MessageBox(L"ÁÖÂ÷Àå Á¤º¸ÀúÀå\r\nÁÖÂ÷Àå Á¤º¸¸¦ ÀúÀå ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FUpdate = true; FRAMEParkingList1->UpdateList(); UpdateParkingIcon(); CMM_SetGridRow(FRAMEParkingList1->CxList, FRAMEParkingList1->TvList, sId, FRAMEParkingList1->Column01->Index); DisplayInfo(pObj); } } } //--------------------------------------------------------------------------- void __fastcall TIFM0060M::ShockwaveFlash1FlashCall1(TObject *ASender, const WideString request) { try { String sTemp; String sFunc; String sArgs; sTemp = request; int nFuncStrIdx = sTemp.Pos("\""); int nFuncEndIdx = sTemp.Pos("\" returntype"); int nArgsStrIdx = sTemp.Pos("string>"); int nArgsEndIdx = sTemp.Pos("Checked ? "1" : "0"; String sShowName = ChkViewName->Checked ? "1" : "0"; MapStart = true; TCommFlash::CallFunc(FRAMEGisMap1->ShockwaveFlash1, "ShowFacility", "PARK|" + sShowIcon + "|" + sShowName); } else if (sFunc == "OnDrawTrafLink") { static bool bFirst = true; if (bFirst) { UpdateParkingIcon(); bFirst = true; } } else if (sFunc == "OnMousePos") { if (FRAMEGisMap1->ModeSelect) { TStringList *pStringList = new TStringList; pStringList->CommaText = sArgs; String sMapX = pStringList->Strings[0]; //lat String sMapY = pStringList->Strings[1]; //lng delete pStringList; try { SePosX->Value = sMapX.ToDouble(); SePosY->Value = sMapY.ToDouble(); } catch(...) {} } } else if (sFunc == "OnSelLink") { if (FRAMEGisMap1->ModeSelect) { TStringList *pStringList = new TStringList; pStringList->CommaText = sArgs; String sLevl = pStringList->Strings[0]; //¸µÅ©·¹º§ String sId = pStringList->Strings[1]; //¸µÅ©¾ÆÀ̵ð String sZoom = pStringList->Strings[2]; //ÁÜ·¹º§ String sPosX = pStringList->Strings[3]; //x String sPosY = pStringList->Strings[4]; //y String sMapX = pStringList->Strings[5]; //lat String sMapY = pStringList->Strings[6]; //lng delete pStringList; try { SePosX->Value = sMapX.ToDouble(); SePosY->Value = sMapY.ToDouble(); } catch(...) {} } } else if (sFunc == "OnClickFacility") { TStringList *pStringList = new TStringList; pStringList->CommaText = sArgs; String sType = pStringList->Strings[0]; //À¯Çü String sId = pStringList->Strings[1]; //¾ÆÀ̵ð String sName = pStringList->Strings[2]; //¾ÆÀ̵ð delete pStringList; } } catch(Exception &exception) { } } //---------------------------------------------------------------------------