//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "CDSNodeF.h" #include "CDSLinkF.h" #include "CDSServiceLinkF.h" #pragma hdrstop #include "ITSSELAMF.h" #include "CommFlashF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "FRAME_LinkListF" #pragma link "FRAME_NodeListF" #pragma link "FRAME_RoadListF" #pragma link "FRAME_ServiceLinkListF" #pragma link "ImageBtn" #pragma link "ShockwaveEx" #pragma link "ShockwaveFlashObjects_TLB" #pragma link "cxButtons" #pragma link "cxCalc" #pragma link "cxCalendar" #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 "cxGroupBox" #pragma link "cxLabel" #pragma link "cxLookAndFeelPainters" #pragma link "cxLookAndFeels" #pragma link "cxPC" #pragma link "cxPCdxBarPopupMenu" #pragma link "cxSplitter" #pragma link "cxStyles" #pragma link "cxTextEdit" #pragma link "dxSkinBlack" #pragma link "dxSkinBlue" #pragma link "dxSkinsCore" #pragma link "dxSkinscxPCPainter" #pragma resource "*.dfm" TITSSELAM *ITSSELAM = NULL; //--------------------------------------------------------------------------- __fastcall TITSSELAM::TITSSELAM(TComponent* Owner, int ALinkLevel/*=1*/) : TForm(Owner) { ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); LoadLocalSkin(); FTitle = "±¸°£ ¼±ÅÃ"; MapStart = false; FRefreshId = ""; FSelPosX = "0"; FSelPosY = "0"; FSelected = false; FMultiSelect = false; ShockwaveFlash1->Align = alClient; FLinkId = ""; FPosX = FPosY = 0; FMouseDownPosX = FMouseDownPosY = 0; PgList->Properties->ActivePage = TabNode; TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<¼±Åñ¸°£¸ñ·Ï>"; FRAMENodeList1->PnlTop->Visible = false; //FRAMENodeList1->PnlBottom->Visible = false; FRAMELinkList1->PnlTop->Visible = false; //FRAMELinkList1->PnlBottom->Visible = false; FRAMEServiceLinkList1->PnlTop->Visible = false; //FRAMEServiceLinkList1->PnlBottom->Visible = false; FRAMERoadList1->PnlTop->Visible = false; //FRAMERoadList1->PnlBottom->Visible = false; FLinkLevel = ALinkLevel; GrpTool->Enabled = false; OpenMap(); } //--------------------------------------------------------------------------- /* * ´Ý±â¹öư À̳ª x¹öư Ŭ¸¯½Ã °øÅëÀ¸·Î ó¸®ÇÏ´Â ·ÎÁ÷À̵é¾î°£´Ù.. * Form°ú DataModule class¸¦ delete½ÃŲ´Ù. * arguments * * return * void */ void __fastcall TITSSELAM::CommClose() { try { CMM_SaveForm(g_sFormsDir, this); CloseMap(); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::LoadLocalSkin() { /* * GIS Command button skin */ try { ImgPan->NormalPicture->Assign(ImgPan_c->Picture); ImgPan->Picture->Assign(ImgPan_c->Picture); ImgPan->TogglePicture->Assign(ImgPan_n->Picture); ImgPan->ClickedPicture->Assign(ImgPan_c->Picture); ImgZoomIn->NormalPicture->Assign(ImgZoomIn_n->Picture); ImgZoomIn->Picture->Assign(ImgZoomIn_n->Picture); ImgZoomIn->TogglePicture->Assign(ImgZoomIn_c->Picture); ImgZoomIn->ClickedPicture->Assign(ImgZoomIn_n->Picture); ImgZoomOut->NormalPicture->Assign(ImgZoomOut_n->Picture); ImgZoomOut->Picture->Assign(ImgZoomOut_n->Picture); ImgZoomOut->TogglePicture->Assign(ImgZoomOut_c->Picture); ImgZoomOut->ClickedPicture->Assign(ImgZoomOut_n->Picture); ImgSel->NormalPicture->Assign(ImgSel_n->Picture); ImgSel->Picture->Assign(ImgSel_n->Picture); ImgSel->TogglePicture->Assign(ImgSel_c->Picture); ImgSel->ClickedPicture->Assign(ImgSel_n->Picture); ImgStnd->NormalPicture->Assign(ImgStnd_n->Picture); ImgStnd->Picture->Assign(ImgStnd_n->Picture); ImgStnd->TogglePicture->Assign(ImgStnd_c->Picture); ImgStnd->ClickedPicture->Assign(ImgStnd_n->Picture); ImgRefresh->NormalPicture->Assign(ImgRefresh_n->Picture); ImgRefresh->Picture->Assign(ImgRefresh_n->Picture); ImgRefresh->TogglePicture->Assign(ImgRefresh_c->Picture); ImgRefresh->ClickedPicture->Assign(ImgRefresh_n->Picture); } catch(...) { } } //--------------------------------------------------------------------------- /* * FormÀ» º¸¿©ÁÙ¶§ È£ÃâµÇ´Â event ¸Þ¼­µåÀÌ´Ù. * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TITSSELAM::FormShow(TObject *Sender) { Refresh(); FormInit(); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::SetLinkLevel(int ALinkLevel) { TabLink->Visible = false; TabLink->TabVisible = false; TabServiceLink->Visible = false; TabServiceLink->TabVisible = false; TabRoad->Visible = false; TabRoad->TabVisible = false; switch(ALinkLevel) { case 1: FRAMELinkList1->UpdateList(); TabLink->Visible = true; TabLink->TabVisible = true; TabServiceLink->Visible = false; TabServiceLink->TabVisible = false; TabRoad->Visible = false; TabRoad->TabVisible = false; break; case 2: FRAMEServiceLinkList1->UpdateList(); TabLink->Visible = false; TabLink->TabVisible = false; TabServiceLink->Visible = true; TabServiceLink->TabVisible = true; TabRoad->Visible = false; TabRoad->TabVisible = false; break; case 3: FRAMERoadList1->UpdateList(); TabLink->Visible = false; TabLink->TabVisible = false; TabServiceLink->Visible = false; TabServiceLink->TabVisible = false; TabRoad->Visible = true; TabRoad->TabVisible = true; break; default: return; } FLinkLevel = ALinkLevel; } //--------------------------------------------------------------------------- /* * form ÃʱâÈ­ * * arguments * * return * void */ void __fastcall TITSSELAM::FormInit() { FRAMENodeList1->UpdateList(); } //--------------------------------------------------------------------------- /* * FormÀÌ ShowµÇ°í ³­ ÈÄ ÃÖÃÊ 1ȸ ¼öÇàµÇ´Â ŸÀÌ¸Ó À̺¥Æ® * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TITSSELAM::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; BtnSearchClick((TObject*)BtnSearch); Application->ProcessMessages(); //RefreshId(); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::RefreshId() { if (FRefreshId.IsEmpty()) return; if (FSelPosX != "0" && FSelPosY != "0") { //TCommFlash::CallFunc(ShockwaveFlash1, "SelectPoint", FSelPosX + "," + FSelPosY + "|3"); } Application->ProcessMessages(); SelGisItem(FLinkLevel, FRefreshId); Application->ProcessMessages(); } //--------------------------------------------------------------------------- /* * Search ¹öư Ŭ¸¯ À̺¥Æ® Çڵ鷯 * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TITSSELAM::BtnSearchClick(TObject *Sender) { Application->ProcessMessages(); TSqlCursor sqlCrs((TControl*)BtnSearch); RefreshData(); } //--------------------------------------------------------------------------- /* * Refresh Data Event Function * arguments * * return * void */ void __fastcall TITSSELAM::RefreshData() { } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::SelListData() { } //--------------------------------------------------------------------------- /* * Close ¹öư Ŭ¸¯ À̺¥Æ® Çڵ鷯 * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TITSSELAM::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); ITSSELAM = NULL; //Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::FRAMENodeList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!MapStart) return; int nIndex = Sender->DataController->FocusedRecordIndex; if (nIndex < 0) return; //SelGisItem(0, Sender->DataController->Values[nIndex][FRAMENodeList1->Column01->Index]); String sX = Sender->DataController->Values[nIndex][FRAMENodeList1->Column06->Index]; String sY = Sender->DataController->Values[nIndex][FRAMENodeList1->Column07->Index]; //TCommFlash::CallFunc(ShockwaveFlash1, "MovePoint", sX + "," + sY); //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "SelectPoint", sX + "," + sY + "|3"); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::FRAMELinkList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { int nIndex = Sender->DataController->FocusedRecordIndex; if (nIndex < 0) return; SelGisItem(1, Sender->DataController->Values[nIndex][FRAMELinkList1->Column01->Index]); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::FRAMEServiceLinkList1TvListCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { int nIndex = Sender->DataController->FocusedRecordIndex; if (nIndex < 0) return; SelGisItem(2, Sender->DataController->Values[nIndex][FRAMEServiceLinkList1->Column01->Index]); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::FRAMERoadList1TvListCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { int nIndex = Sender->DataController->FocusedRecordIndex; if (nIndex < 0) return; SelGisItem(3, Sender->DataController->Values[nIndex][FRAMERoadList1->Column01->Index]); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::BtnSelectClick(TObject *Sender) { if (TvList->DataController->RecordCount <= 0) { Application->MessageBox(L"±¸°£ÀÌ ¼±ÅõÇÁö ¾Ê¾Ò½À´Ï´Ù.\r\nÁöµµ¿¡¼­ ±¸°£À» ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } FLinkId = EdLinkId->Text.Trim(); FSelected = true; Close(); Application->ProcessMessages(); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::SelGisItem(int AType, String AId) { if (!MapStart) return; try { #if 0 switch(AType) { case 0: TCommFlash::CallFunc(ShockwaveFlash1, "MoveNode", AId); break; case 1: TCommFlash::CallFunc(ShockwaveFlash1, "FindLink", AId); break; case 2: TCommFlash::CallFunc(ShockwaveFlash1, "FindLink", AId); break; case 3: TCommFlash::CallFunc(ShockwaveFlash1, "FindLink", AId); break; default: return; } #endif } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::BtnDeleteClick(TObject *Sender) { try { TvList->BeginUpdate(); try { TvList->Controller->DeleteSelection(); } catch(...) { } } __finally { TvList->EndUpdate(); } RefreshSelect(); } //--------------------------------------------------------------------------- bool __fastcall TITSSELAM::GetLinkId(int X, int Y, String &ALinkId) { return true; #if 0 ALinkId = ""; int nLayerIdx = GetLayerIndex(); if (nLayerIdx < 0) return false; TStringList *slFldName = NULL; TStringList *slFldValue = NULL; try { slFldName = new TStringList(); slFldValue = new TStringList(); try { //TDDPoint dptCurr = MapClient->ScreenToReal(Point(X, Y)); // ¸µÅ©¿¡ ´ëÇÑ °ø°£Á¤º¸¸¦ °Ë»ö if (FRAMEGisMap1->xsrvrMap->ShpObjInfo(X, Y, nLayerIdx, slFldName, slFldValue, clWhite, true, false)) { if (slFldName->Count != slFldValue->Count) { return false; } ALinkId = slFldValue->Strings[1]; return true; } } catch(...) { } } __finally { if (slFldName) delete slFldName; if (slFldValue) delete slFldValue; } #endif return false; } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::UpdateSelect(String ALinkId, double X, double Y) { try { int nRow; TcxDataController *pGDC = TvList->DataController; TvList->BeginUpdate(); try { bool bAdd = true; if (!FMultiSelect) { CMM_ClearGridTableView(TvList); } else { for (int ii = 0; ii < pGDC->RecordCount; ii++) { String sTmpLinkId = pGDC->Values[ii][Column01->Index]; if (sTmpLinkId == ALinkId) { pGDC->Values[ii][Column02->Index] = X; pGDC->Values[ii][Column03->Index] = Y; bAdd = false; break; } } } if (bAdd) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][Column01->Index] = ALinkId; pGDC->Values[nRow][Column02->Index] = X; pGDC->Values[nRow][Column03->Index] = Y; } } catch(...) { } } __finally { TvList->EndUpdate(); } RefreshSelect(); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::RefreshSelect() { if (!MapStart) return; //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "ClearSelLink", "xxx"); try { int nRow; TcxDataController *pGDC = TvList->DataController; TvList->BeginUpdate(); try { for (int ii = 0; ii < pGDC->RecordCount; ii++) { String sLinkId = pGDC->Values[ii][Column01->Index]; //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "AddSelLink", sLinkId); } } catch(...) { } } __finally { TvList->EndUpdate(); } ImgRefreshClick((TObject*)ImgRefresh); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::OpenMap() { try { ShockwaveFlash1->Stop(); String sFileName = g_AppCfg.flashmap.sLinkMap + "&link="+LinkLevel; ShockwaveFlash1->Movie = sFileName; ShockwaveFlash1->Play(); } catch(...) {} } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::CloseMap() { ShockwaveFlash1->StopPlay(); ShockwaveFlash1->Stop(); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::OnGisOperationClick(TObject *Sender) { if (!MapStart) return; TImageBtn *pMenu = (TImageBtn*)Sender; switch(pMenu->Tag) { case 3: //pan //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "SelectMode", "0"); break; case 1: //zoomin //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "ZoomIn", ""); break; case 2: //zoomout //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "ZoomOut", ""); break; case 5: //select //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "SelectMode", "1"); break; } } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::ImgStndClick(TObject *Sender) { //stand resion if (!MapStart) return; //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "StdExtent", ""); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::ImgRefreshClick(TObject *Sender) { //refresh if (!MapStart) return; //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "RefreshMap", ""); } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::ShockwaveFlash1FlashCall(TObject *ASender, const WideString request) { try { String sTemp; String sFunc; String sArgs; //KKK|LinkMap 1 sTemp = request; int nFuncStrIdx = sTemp.Pos("\""); int nFuncEndIdx = sTemp.Pos("\" returntype"); int nArgsStrIdx = sTemp.Pos("string>"); int nArgsEndIdx = sTemp.Pos("Visible) Memo1->Lines->Add("[" + sFunc + "] [" + sArgs + "]"); if (sFunc == "OnMapStart") { MapStart = true; //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "SetLinkLevel", String(FLinkLevel)); //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "MultiSelect", FMultiSelect ? "1" : "0"); StatusBar->Panels->Items[0]->Text = "·¹º§: " + sArgs; //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "LoadNode", "1"); //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "LoadLink", String(FLinkLevel)); GrpTool->Enabled = true; } else if (sFunc == "OnZoomChanged") { StatusBar->Panels->Items[0]->Text = "ÁÜ·¹º§: " + sArgs; } else if (sFunc == "OnMousePos") { StatusBar->Panels->Items[1]->Text = "Ŭ¸¯ÁÂÇ¥: " + sArgs; } else if (sFunc == "OnNodeLoad") { } else if (sFunc == "OnLinkLoad") { TStringList *pStringList = new TStringList; pStringList->CommaText = sArgs; String sResult = pStringList->Strings[0]; String sLevel = pStringList->Strings[1]; delete pStringList; //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "LoadLinkVertex", sLevel); } else if (sFunc == "OnLinkVertexLoad") { RefreshSelect(); RefreshId(); } else if (sFunc == "OnFindLink") { TStringList *pStringList = new TStringList; pStringList->CommaText = sArgs; String sResult = pStringList->Strings[0]; //Find resule String sLinkId = pStringList->Strings[1]; //Link Id delete pStringList; } else if (sFunc == "OnSelLink") { 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; StatusBar->Panels->Items[1]->Text = "Ŭ¸¯ÁÂÇ¥: " + sMapX + "," + sMapY; FPosX = sMapX.ToDouble(); FPosY = sMapY.ToDouble(); if (true) { //¸Þ¸ð¸®ÀÇ ¸µÅ©Á¤º¸¿¡¼­ ¸µÅ©°¡ Á¸ÀçÇÏ´ÂÁö¸¦ ¸ÕÀú üũÇϴµ¥ //¿©±â¼­´Â ÇÏÁö¸»ÀÚ. UpdateSelect(sId, FPosX, FPosY); } } } catch(Exception &exception) { } } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::StatusBarDblClick(TObject *Sender) { Memo1->Visible = !Memo1->Visible; } //--------------------------------------------------------------------------- void __fastcall TITSSELAM::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!MapStart) return; int nIndex = Sender->DataController->FocusedRecordIndex; if (nIndex < 0) return; //SelGisItem(0, Sender->DataController->Values[nIndex][FRAMENodeList1->Column01->Index]); String sX = Sender->DataController->Values[nIndex][Column02->Index]; String sY = Sender->DataController->Values[nIndex][Column03->Index]; //TCommFlash::CallFunc(ShockwaveFlash1, "MovePoint", sX + "," + sY); //TODO//TCommFlash::CallFunc(ShockwaveFlash1, "SelectPoint", sX + "," + sY + "|3"); } //---------------------------------------------------------------------------