/**************************************************************************** * @source : * @description : **************************************************************************** * DATE AUTHOR DESCRIPTION * -------------------------------------------------------------------------- * 2016/07/10 shjung ÃÖÃÊÀÛ¼º * ****************************************************************************/ //--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "CDSVmsIfscF.h" #include "ITSLangTransF.h" #pragma hdrstop #include "VMSM630MF.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 "cxImage" #pragma link "cxButtonEdit" #pragma link "cxBlobEdit" #pragma link "VmsDesignerF" #pragma link "cxColorComboBox" #pragma link "cxCalc" #pragma link "FFBaseComponent" #pragma link "FFBasePlay" #pragma link "FFPlay" #pragma resource "*.dfm" #define LICENSE_KEY "FSXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX" TVMSM630M *VMSM630M = NULL; //--------------------------------------------------------------------------- __fastcall TVMSM630M::TVMSM630M(TComponent* Owner) : TForm(Owner) { LangTrans->Translate(this, ITSDb_GetConnection()); ITSSkin_Load(this); //CMM_LoadForm(g_sFormsDir, this); FSelected = false; FUpdate= false; FTitle = Caption;//"VMS ±³Åë»óȲ Æû °ü¸®"; APP_InitDisplayColor(); FTrackBar = TrackBar1; FLblDuration = lblDuration1; FLblCurrPTS = lblCurrentPTS1; FFPlayer = FFPlayer1; FDispArea = PnlEdtBack; FDispArea->Tag = 0; FDispArea->ParentColor = false; FDispArea->Color = clBlack; FDispArea->Caption = ""; FDispArea->Refresh(); String sAVILibDir = g_sAppDir + "LibAV"; FFPlayer1->SetLicenseKey(LICENSE_KEY); FFPlayer1->DisableFPUExceptions(); if (!FFPlayer1->LoadAVLib(sAVILibDir)) { if (g_AppCfg.sLang != "kr") Application->MessageBox(L"Stream display library load failed.", L"Stream display fail", MB_OK|MB_ICONERROR|MB_APPLMODAL); else Application->MessageBox(L"¿µ»óÇ¥Ãâ ¶óÀ̺귯¸®¸¦ ·ÎµåÇÏÁö ¸øÇÏ¿´½À´Ï´Ù.", L"¿µ»óÇ¥Ãâ ¿À·ù", MB_OK|MB_ICONERROR|MB_APPLMODAL); } } //--------------------------------------------------------------------------- /* * ´Ý±â¹öư À̳ª x¹öư Ŭ¸¯½Ã °øÅëÀ¸·Î ó¸®ÇÏ´Â ·ÎÁ÷À̵é¾î°£´Ù.. * Form°ú DataModule class¸¦ delete½ÃŲ´Ù. * arguments * * return * void */ void __fastcall TVMSM630M::CommClose() { try { BtnStopClick(NULL); if (m_pEdtDesigner) { delete m_pEdtDesigner; m_pEdtDesigner = NULL; } //CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::FormCreate(TObject *Sender) { m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm); } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::FormShow(TObject *Sender) { Refresh(); FormInit(); PnlEdtBack->Width = FVmsWidth+4; PnlEdtBack->Height= FVmsHeight+4; LoadVmsIfsc(FVmsNmbr); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::FormInit() { //TvObjList->OptionsView->NoDataToDisplayInfoText = "<µî·ÏµÇ¾î ÀÖ´Â °´Ã¼ Á¤º¸°¡ ¾ø½À´Ï´Ù>"; m_pEdtDesigner->ApplicationHandle = (long)Handle; FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::LoadVmsIfsc(String AVmsNmbr) { CMM_ClearGridTableView(TvAxis); String sQry; TADOQuery *pADO = NULL; sQry = "SELECT C.VMS_CTLR_NMBR, C.VMS_CTLR_ID, C.VMS_NM, \r\n" " A.VMS_IFSC_ID, A.VMS_IFSC_NM, \r\n" " A.DSPL_STRT_NODE_NM, A.DSPL_END_NODE_NM, \r\n" " A.AXIS_YN \r\n" " FROM TB_VMS_IFSC A, \r\n" " TB_VMS_RLTN_IFSC B, \r\n" " (SELECT VMS_CTLR_NMBR, \r\n" " VMS_CTLR_ID, \r\n" " VMS_NM \r\n" " FROM TB_VMS_CTLR \r\n" " WHERE VMS_CTLR_NMBR = :p01) C \r\n" " WHERE A.USE_YN = 'Y' \r\n" " AND A.VMS_IFSC_ID = B.VMS_IFSC_ID \r\n" " AND B.VMS_CTLR_NMBR = C.VMS_CTLR_NMBR \r\n"; try { int nRow; TcxDataController *pGDC = TvAxis->DataController; TvAxis->BeginUpdate(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", AVmsNmbr); ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][Col00->Index] = pADO->FieldByName("VMS_CTLR_ID")->AsString; pGDC->Values[nRow][Col01->Index] = pADO->FieldByName("VMS_IFSC_ID")->AsString; pGDC->Values[nRow][Col02->Index] = pADO->FieldByName("VMS_IFSC_NM")->AsString; pGDC->Values[nRow][Col03->Index] = pADO->FieldByName("DSPL_STRT_NODE_NM")->AsString; pGDC->Values[nRow][Col04->Index] = pADO->FieldByName("DSPL_END_NODE_NM")->AsString; pGDC->Values[nRow][Col05->Index] = pADO->FieldByName("AXIS_YN")->AsString; } } catch(EDatabaseError &E) { DBERRORMSG("VMS Sect Query", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("VMS Sect Query", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } TvAxis->EndUpdate(); CMM_ExpandCollapseChk(TvAxis, true); } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; BtnSearchClick(NULL); } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::BtnSearchClick(TObject *Sender) { RefreshData(); EdFocus->SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::RefreshData() { // °Ë»öÁ¶°Ç¿¡ ÀÇÇÑ ¸µÅ© µ¥ÀÌÅÍ Á¶È¸ FormClear(); m_pEdtDesigner->Clear(); m_pEdtDesigner->SizeType = FVmsTypeCd; m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight); m_pEdtDesigner->SetPos(0, 0); m_pEdtDesigner->BkColorCode = FFormColor; m_pEdtDesigner->EditMode = true; m_pEdtDesigner->Show(); InitObjectList(); LoadFormObjectInfo(FFormId, m_pEdtDesigner); DispObjectListData(); } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::AddTrafficTypeObject(int ARow, String AIfscId) { TVmsIfsc *pObj; TcxGridDataController *pGDC = TvObjList->DataController; pGDC->Values[ARow][ColIfscId->Index] = AIfscId; //pObj = VmsIfscManager->FLists.Find(FIfscId[0].ToIntDef(0)); pObj = VmsIfscManager->FLists.Find(AIfscId.ToIntDef(0)); if (!pObj) return; pGDC->Values[ARow][ColIfscNm->Index] = pObj->VMS_IFSC_NM; pGDC->Values[ARow][ColIfscStr->Index] = pObj->DSPL_STRT_NODE_NM; pGDC->Values[ARow][ColIfscEnd->Index] = pObj->DSPL_END_NODE_NM; } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::InitObjectList() { CMM_ClearGridTableView(TvObjList); TcxGridDataController *pGDC = TvObjList->DataController; ColObj03->Visible = false; ColObj04->Visible = false; try { TvObjList->BeginUpdate(); pGDC->BeginUpdate(); int nRow; switch(FFormType) { case 11:// ' ¼ÒÅë»óȲ(1´Ü) nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "11"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm11->Caption;//"1Row Traffic";//"1´Ü ¼ÒÅëÁ¤º¸"; pGDC->Values[nRow][ColObjType->Index] = "Form"; AddTrafficTypeObject(nRow, FIfscId[0]); break; case 12:// ' ¼ÒÅë»óȲ(2´Ü) nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "11"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm11->Caption;//"1Row Traffic";//"1´Ü ¼ÒÅëÁ¤º¸"; pGDC->Values[nRow][ColObjType->Index] = "Form"; AddTrafficTypeObject(nRow, FIfscId[0]); nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "12"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm12->Caption;//"2Row Traffic";//"2´Ü ¼ÒÅëÁ¤º¸"; pGDC->Values[nRow][ColObjType->Index] = "Form"; AddTrafficTypeObject(nRow, FIfscId[1]); break; case 13:// ' ¼ÒÅë»óȲ(3´Ü) nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "11"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm11->Caption;//"1Row Traffic";//"1´Ü ¼ÒÅëÁ¤º¸"; pGDC->Values[nRow][ColObjType->Index] = "Form"; AddTrafficTypeObject(nRow, FIfscId[0]); nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "12"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm12->Caption;//"2Row Traffic";//"2´Ü ¼ÒÅëÁ¤º¸"; pGDC->Values[nRow][ColObjType->Index] = "Form"; AddTrafficTypeObject(nRow, FIfscId[1]); nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "13"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm13->Caption;//"3Row Traffic";//"3´Ü ¼ÒÅëÁ¤º¸"; pGDC->Values[nRow][ColObjType->Index] = "Form"; AddTrafficTypeObject(nRow, FIfscId[2]); break; case 14:// ' ¼ÒÅë»óȲ(4´Ü) nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "11"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm11->Caption;//"1Row Traffic";//"1´Ü ¼ÒÅëÁ¤º¸"; pGDC->Values[nRow][ColObjType->Index] = "Form"; AddTrafficTypeObject(nRow, FIfscId[0]); nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "12"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm12->Caption;//"2Row Traffic";//"2´Ü ¼ÒÅëÁ¤º¸"; pGDC->Values[nRow][ColObjType->Index] = "Form"; AddTrafficTypeObject(nRow, FIfscId[1]); nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "13"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm13->Caption;//""3Row Traffic";//"3´Ü ¼ÒÅëÁ¤º¸"; pGDC->Values[nRow][ColObjType->Index] = "Form"; AddTrafficTypeObject(nRow, FIfscId[2]); nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "14"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblForm14->Caption;//""4Row Traffic";//"4´Ü ¼ÒÅëÁ¤º¸"; pGDC->Values[nRow][ColObjType->Index] = "Form"; AddTrafficTypeObject(nRow, FIfscId[2]); break; case 15:// ' ¼ÒÅë»óȲ(µµÇü½Ä) ColObj03->Visible = true; break; default: break; } } __finally { pGDC->EndUpdate(); TvObjList->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::DispObjectListData() { TcxGridDataController *pGDC = TvObjList->DataController; int nRow; TVmsFormObject *pObj; int nObjCnt = m_pEdtDesigner->GetObjectCount(); for(int ii = 0; ii < nObjCnt; ii++) { pObj = m_pEdtDesigner->GetObject(ii); if (pObj) { switch(pObj->ObjType.ToIntDef(0)) { case 91: //@ÃàÅëÇà½Ã°£(°íÁ¤) nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "15"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill91->Caption;//"AxisTravelTime";//"ÃàÅëÇà½Ã°£(°íÁ¤)"; pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq); pGDC->Values[nRow][ColObjType->Index] = "x"; AddTrafficTypeObject(nRow, pObj->Tag); break; case 92: //@Ãà¼ÒÅë»óȲ(°íÁ¤) nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = "15"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill92->Caption;//"Traffic(Fix)";//"¼ÒÅë»óȲ(°íÁ¤)"; pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq); pGDC->Values[nRow][ColObjType->Index] = "x"; AddTrafficTypeObject(nRow, pObj->Tag); break; case 17: //@¼ÒÅëÁ¤º¸À̹ÌÁö1 nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = String(FFormType);//"17"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill17->Caption;//"TrafficImage";//"¼ÒÅëÁ¤º¸À̹ÌÁö"; pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq); pGDC->Values[nRow][ColObjType->Index] = "17"; AddTrafficTypeObject(nRow, FIfscId[4]); break; case 27: //@¼ÒÅëÁ¤º¸À̹ÌÁö2 nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = String(FFormType);//"27"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill27->Caption;//"TrafficImage2";//"¼ÒÅëÁ¤º¸À̹ÌÁö2"; pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq); pGDC->Values[nRow][ColObjType->Index] = "27"; AddTrafficTypeObject(nRow, FIfscId[5]); break; case 37: //@¼ÒÅëÁ¤º¸À̹ÌÁö3 nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = String(FFormType);//"37"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill37->Caption;//"TrafficImage3";//"¼ÒÅëÁ¤º¸À̹ÌÁö3"; pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq); pGDC->Values[nRow][ColObjType->Index] = "37"; AddTrafficTypeObject(nRow, FIfscId[6]); break; case 47: //@¼ÒÅëÁ¤º¸À̹ÌÁö4 nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColObj01->Index] = String(FFormType);//"47"; pGDC->Values[nRow][ColObj02->Index] = FrmLang->lblFill47->Caption;//"TrafficImage4";//"¼ÒÅëÁ¤º¸À̹ÌÁö4"; pGDC->Values[nRow][ColObj03->Index] = String(pObj->ObjSeq); pGDC->Values[nRow][ColObjType->Index] = "47"; AddTrafficTypeObject(nRow, FIfscId[7]); break; } } } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::BtnClosexClick(TObject *Sender) { FSelected = false; Close(); } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); VMSM630M = NULL; //Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::LoadFormObjectInfo(String AFormId, TVmsFormDesigner *ADesigner) { ADesigner->Clear(); String sQry; TADOQuery *pADO = NULL; sQry = "SELECT A.*, \r\n" " C.VMS_FONT_NAME_NM, \r\n" " B.IMAG_DATA AS SYMB_IMG, \r\n" " B.SYMB_EXPL AS SYMB_IMG_NM \r\n" " FROM TB_VMS_FORM_OBJECT A, \r\n" " TB_VMS_SYMB_LIB B, \r\n" " TB_VMS_FONT_NAME C, \r\n" " TB_VMS_FORM D \r\n" " WHERE D.VMS_FORM_ID = :p01 \r\n" " AND D.VMS_FORM_ID = A.VMS_FORM_ID \r\n" " AND A.SYMB_LIB_NMBR = B.SYMB_LIB_NMBR(+) \r\n" " AND A.VMS_FONT_NAME_CD = C.VMS_FONT_NAME_CD(+) \r\n" " ORDER BY A.VMS_FORM_OBJECT_ID ASC \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", AFormId); ITSDb_SQLOpen(pADO); int nDrawType; String sObjKind; for( ; !pADO->Eof; pADO->Next()) { int nFormId = pADO->FieldByName("VMS_FORM_ID")->AsInteger; int nObjId = pADO->FieldByName("VMS_FORM_OBJECT_ID")->AsInteger; int nObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsInteger; if (nObjType == 1 || //½Éº¼ nObjType == 2 || //À̹ÌÁö nObjType == 3 || //¹è°æÀ̹ÌÁö nObjType == 17 || //@¼ÒÅëÁ¤º¸À̹ÌÁö (1¿­) nObjType == 27 || //@¼ÒÅëÁ¤º¸À̹ÌÁö2(2¿­) nObjType == 37 || //@¼ÒÅëÁ¤º¸À̹ÌÁö3(3¿­) nObjType == 47 || //¼ÒÅëÀ̹ÌÁö4 nObjType == 200 || //µ¿¿µ»ó nObjType == 300 //½ºÆ®¸®¹Ö¿µ»ó ) { if (nObjType == 1) sObjKind = OBJKIND_IMAGEID; //Image Id else sObjKind = OBJKIND_IMAGE; //Image nDrawType = 1; //À̹ÌÁö±×¸®±â } else { sObjKind = OBJKIND_TEXT; //¹®ÀÚ¿­ nDrawType = 0; //¹®ÀÚ¿­±×¸®±â } //½ÇÀç ¸ÊÇÎµÈ ±¸°£ÀÇ Á¤º¸¸¦ Ç¥ÃâÇϵµ·Ï ÇÑ´Ù. int nBlinking = pADO->FieldByName("VMS_DSPL_BLINKING")->AsInteger; int nPosX = pADO->FieldByName("VMS_DSPL_XCRDN")->AsInteger; int nPosY = pADO->FieldByName("VMS_DSPL_YCRDN")->AsInteger; TVmsFormObject *pObj = ADesigner->AddObject((VmsObjectDrawType)nDrawType); if (!pObj) continue; //11 , ' @±¸°£¸í //12 , ' @½ÃÁ¡¸í //13 , ' @Á¾Á¡¸í //14 , ' @¼ÒÅë»óȲ //15 , ' @ÅëÇà½Ã°£ //16 , ' @ÅëÇà¼Óµµ //17 , ' @¹æÇâ pObj->Text = pADO->FieldByName("VMS_DSPL_TXT")->AsString.Trim(); pObj->RunText = pObj->Text; String sIfscId = ""; if (nObjType >= 11 && nObjType < 17) sIfscId = FIfscId[0]; else if (nObjType >= 21 && nObjType < 27) sIfscId = FIfscId[1]; else if (nObjType >= 31 && nObjType < 37) sIfscId = FIfscId[2]; else if (nObjType >= 41 && nObjType < 47) sIfscId = FIfscId[3]; switch(nObjType) { case 17: sIfscId = FIfscId[4]; break; case 27: sIfscId = FIfscId[5]; break; case 37: sIfscId = FIfscId[6]; break; case 47: sIfscId = FIfscId[7]; break; } if (sIfscId != "") { TVmsIfsc *pIfscObj; pIfscObj = VmsIfscManager->FLists.Find(sIfscId.ToIntDef(0)); if (pIfscObj) { switch(nObjType) { case 11: case 21: case 31: case 41: pObj->RunText = pIfscObj->VMS_IFSC_NM; break; case 12: case 22: case 32: case 42: pObj->RunText = pIfscObj->DSPL_STRT_NODE_NM; break; case 13: case 23: case 33: case 43: pObj->RunText = pIfscObj->DSPL_END_NODE_NM; break; } } } if (nObjType == 200 || nObjType == 300) { pObj->EditMode = false; } pObj->ObjSeq = nObjId; pObj->ObjId = nObjId; pObj->ObjKind = sObjKind; pObj->Tag = pADO->FieldByName("VMS_IFSC_ID")->AsString; pObj->ObjType = pADO->FieldByName("VMS_FORM_OBJECT_TYPE_CD")->AsString; pObj->ObjSize = pADO->FieldByName("VMS_DSPL_SIZE")->AsInteger; pObj->BkColorCode = pADO->FieldByName("VMS_DSPL_BKCOLOR")->AsString; pObj->Blink = nBlinking == 1 ? true : false; pObj->ImageId = pADO->FieldByName("SYMB_LIB_NMBR")->AsString; if (pObj->ObjKind == OBJKIND_TEXT) // ¹®ÀÚ¿­ { int nFontBold = pADO->FieldByName("VMS_FONT_BOLD")->AsInteger; pObj->FontName = pADO->FieldByName("VMS_FONT_NAME_NM")->AsString; pObj->FontNameCode = pADO->FieldByName("VMS_FONT_NAME_CD")->AsString; pObj->FontColorCode = pADO->FieldByName("VMS_FONT_COLR_CD")->AsString; pObj->FontSize = pADO->FieldByName("VMS_FONT_SIZE")->AsInteger; pObj->FontBold = nFontBold == 1 ? true : false; pObj->TextAlign = pADO->FieldByName("VMS_FONT_ALIGN")->AsInteger; pObj->SetSize(pADO->FieldByName("VMS_DSPL_WIDTH")->AsInteger, pADO->FieldByName("VMS_DSPL_HEIGHT")->AsInteger); pObj->SetRuntimeText(pObj->RunText); } else //if (sObjKind == "1" || sObjKind == "2") // À̹ÌÁö(1), À̹ÌÁö ID(2) { if (pObj->ObjKind == OBJKIND_IMAGEID) { pObj->Text = pADO->FieldByName("SYMB_LIB_NMBR")->AsString; } TStream *pStream = NULL; pStream = pADO->CreateBlobStream(pADO->FieldByName("VMS_DSPL_FIGR"), bmRead); try { if (pStream && pStream->Size > 0) { Graphics::TBitmap *Bitmap = pObj->GetBitmap(); pStream->Position = 0; Bitmap->LoadFromStream(pStream); pObj->SetSize(Bitmap->Width, Bitmap->Height); } } __finally { SAFE_DELETE(pStream); } } pObj->SetPos(nPosX, nPosY); pObj->Show(); pObj->BringToFront(); } } catch(EDatabaseError &E) { DBERRORMSG("TVMSM630M::LoadFormObjectInfo", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &exception) { DBERRORMSG("TVMSM630M::LoadFormObjectInfo", String(exception.ClassName()), exception.Message, sQry); throw Exception(String(exception.ClassName()) + exception.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::FormClear() { FSelIdx = -1; EdFormId->Clear(); EdObjId->Clear(); FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::TvObjListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (TvObjList->ViewData->RecordCount <= 0) return; if (TvObjList->DataController->FocusedRowIndex < 0) return; m_pEdtDesigner->SelectedObjectAll(false); TcxDataController *pGDC = TvObjList->DataController; int nIndex = pGDC->FocusedRecordIndex; String sObjType = pGDC->Values[nIndex][ColObjType->Index]; String sFormType = pGDC->Values[nIndex][ColObj01->Index]; int nFormType = sFormType.ToIntDef(0); if (nFormType == 11 || nFormType == 12 || nFormType == 13 || nFormType == 14) { BtnListAdd->Enabled = true; BtnListDelete->Enabled = true; } else { BtnListAdd->Enabled = true; BtnListDelete->Enabled = true; } if (nFormType == 15) { int nObjSeq = VarToStr(pGDC->Values[nIndex][ColObj03->Index]).ToIntDef(0); m_pEdtDesigner->SelectObject(nObjSeq); return; } TVmsFormObject *pObj; int nObjCnt = m_pEdtDesigner->GetObjectCount(); for(int ii = 0; ii < nObjCnt; ii++) { pObj = m_pEdtDesigner->GetObject(ii); if (!pObj) continue; int nObjType = pObj->ObjType.ToIntDef(0); switch(sObjType.ToIntDef(-1)) { case 17: case 27: case 37: case 47: if (sObjType.ToIntDef(-1) == nObjType) { m_pEdtDesigner->SelectObject(pObj->ObjSeq, true); } break; default: switch(nFormType) { case 11:// ' ¼ÒÅë»óȲ(1´Ü) //@±¸°£¸í, @½ÃÁ¡¸í, @Á¾Á¡¸í if (nObjType >= 11 && nObjType < 17) { m_pEdtDesigner->SelectObject(pObj->ObjSeq, true); } break; case 12:// ' ¼ÒÅë»óȲ(2´Ü) if (nObjType >= 21 && nObjType < 27) { m_pEdtDesigner->SelectObject(pObj->ObjSeq, true); } break; case 13:// ' ¼ÒÅë»óȲ(3´Ü) if (nObjType >= 31 && nObjType < 37) { m_pEdtDesigner->SelectObject(pObj->ObjSeq, true); } break; case 14:// ' ¼ÒÅë»óȲ(4´Ü) if (nObjType >= 41 && nObjType < 47) { m_pEdtDesigner->SelectObject(pObj->ObjSeq, true); } break; default: break; } } } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::BtnListAddClick(TObject *Sender) { int nCellIdx = CMM_GetRecordIndex(TvObjList); if (nCellIdx < 0) return; int nIfscIdx = CMM_GetRecordIndex(TvAxis); if (nIfscIdx < 0) return; TcxGridDataController *pDcCell = TvObjList->DataController; TcxGridDataController *pDcIfsc = TvAxis->DataController; pDcCell->Values[nCellIdx][ColIfscId->Index] = pDcIfsc->Values[nIfscIdx][Col01->Index]; pDcCell->Values[nCellIdx][ColIfscNm->Index] = pDcIfsc->Values[nIfscIdx][Col02->Index]; pDcCell->Values[nCellIdx][ColIfscStr->Index] = pDcIfsc->Values[nIfscIdx][Col03->Index]; pDcCell->Values[nCellIdx][ColIfscEnd->Index] = pDcIfsc->Values[nIfscIdx][Col04->Index]; TVmsFormObject *pObj; int nObjCnt = m_pEdtDesigner->GetObjectCount(); for(int ii = 0; ii < nObjCnt; ii++) { pObj = m_pEdtDesigner->GetObject(ii); if (!pObj) continue; if (!pObj->Selected) continue; int nObjType = pObj->ObjType.ToIntDef(0); switch(nObjType) { case 11: case 21: case 31: case 41: pObj->RunText = VarToStr(pDcCell->Values[nCellIdx][ColIfscNm->Index]); pObj->SetRuntimeText(pObj->RunText); break; case 12: case 22: case 32: case 42: pObj->RunText = VarToStr(pDcCell->Values[nCellIdx][ColIfscStr->Index]); pObj->SetRuntimeText(pObj->RunText); break; case 13: case 23: case 33: case 43: pObj->RunText = VarToStr(pDcCell->Values[nCellIdx][ColIfscEnd->Index]); pObj->SetRuntimeText(pObj->RunText); break; } } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::BtnListDeleteClick(TObject *Sender) { int nCellIdx = CMM_GetRecordIndex(TvObjList); if (nCellIdx < 0) return; TcxGridDataController *pDcCell = TvObjList->DataController; pDcCell->Values[nCellIdx][ColIfscId->Index] = ""; pDcCell->Values[nCellIdx][ColIfscNm->Index] = ""; pDcCell->Values[nCellIdx][ColIfscStr->Index] = ""; pDcCell->Values[nCellIdx][ColIfscEnd->Index] = ""; TVmsFormObject *pObj; int nObjCnt = m_pEdtDesigner->GetObjectCount(); for(int ii = 0; ii < nObjCnt; ii++) { pObj = m_pEdtDesigner->GetObject(ii); if (!pObj) continue; if (!pObj->Selected) continue; int nObjType = pObj->ObjType.ToIntDef(0); switch(nObjType) { case 11: case 21: case 31: case 41: pObj->SetRuntimeText(pObj->Text); break; case 12: case 22: case 32: case 42: pObj->SetRuntimeText(pObj->Text); break; case 13: case 23: case 33: case 43: pObj->SetRuntimeText(pObj->Text); break; } } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::BtnSaveClick(TObject *Sender) { TcxDataController *pGDC = TvObjList->DataController; try { TvObjList->BeginUpdate(); pGDC->BeginUpdate(); int nRows = pGDC->RecordCount; try { for (int ii = 0; ii < nRows; ii++) { int nObjType = VarToStr(pGDC->Values[ii][ColObjType->Index]).ToIntDef(-1); int nFormType = VarToStr(pGDC->Values[ii][ColObj01->Index]).ToIntDef(0); String sIfscId = VarToStr(pGDC->Values[ii][ColIfscId->Index]); switch(nObjType) { case 17: FIfscId[4] = sIfscId; break; case 27: FIfscId[5] = sIfscId; break; case 37: FIfscId[6] = sIfscId; break; case 47: FIfscId[7] = sIfscId; break; default: switch(nFormType) { case 11: FIfscId[0] = sIfscId; break; // ' ¼ÒÅë»óȲ(1´Ü) case 12: FIfscId[1] = sIfscId; break; // ' ¼ÒÅë»óȲ(2´Ü) case 13: FIfscId[2] = sIfscId; break; // ' ¼ÒÅë»óȲ(3´Ü) case 14: FIfscId[3] = sIfscId; break; // ' ¼ÒÅë»óȲ(4´Ü) } break; } } } catch(Exception &e) { } } __finally { pGDC->EndUpdate(); TvObjList->EndUpdate(); } m_pEdtDesigner->GetVmsFormImage(ImgForm); FSelected = true; Close(); } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::TrackBar1Change(TObject *Sender) { if (!FTrackChanging && !IsMouseDown()) { FFPlayer->Seek(FDuration * FTrackBar->Position / FTrackBar->Max); } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::FFPlayer1FileOpen(TObject *Sender, const __int64 ADuration, int AFrameWidth, int AFrameHeight, int &AScreenWidth, int &AScreenHeight) { if (PnlEditForm->Visible) PnlEditForm->Visible = false; FDuration = ADuration; FLblDuration->Caption = DurationToStr(ADuration); FLblCurrPTS->Caption = "N/A"; // setup track bar FTrackBar->Frequency = 5; FTrackBar->TickStyle = tsAuto; FTrackBar->Max = FTrackBar->Width; FTrackBar->SelStart = 0; FTrackBar->SelEnd = 0; FTrackBar->SliderVisible = ADuration > 0; FTrackChanging = true; try { FTrackBar->Position = 0; } __finally { FTrackChanging= false; } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::FFPlayer1OpenFailed(TObject *Sender) { String sLastErrMsg = FFPlayer->LastErrMsg; FDispArea->Caption = sLastErrMsg; } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::FFPlayer1Position(TObject *Sender, const __int64 APTS) { FLblCurrPTS->Caption = DurationToStr(APTS); if ((APTS >= 0) && (FDuration > 0)) { FTrackBar->SelEnd = FTrackBar->Max * APTS / FDuration; if (FTrackChanging == false && (IsMouseDown() == false || FTrackBar->Focused() == false)) { FTrackChanging = true; try { FTrackBar->Position = FTrackBar->Max * APTS / FDuration; } __finally { FTrackChanging = false; } } } } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::FFPlayer1State(TObject *Sender, TPlayState APlayState) { switch(APlayState) { case Ffbasecomponent::psPlay: case Ffbasecomponent::psResume: break; case Ffbasecomponent::psPause: case Ffbasecomponent::psStep: break; case Ffbasecomponent::psStop: if (FFPlayer->ScreenHandle != NULL) { PostMessage(FFPlayer->ScreenHandle, CM_INVALIDATE, 0, 0); UpdateWindow(FFPlayer->ScreenHandle); } break; case Ffbasecomponent::psEnd: { FFPlayer->Stop(true); if (PnlEditForm->Visible == false) PnlEditForm->Visible = true; //FFPlayer[nTag]->Seek((__int64)0, TSeekFlags()<Enabled = false; Application->ProcessMessages(); try { if (FPlayerFile == "") { if (FFPlayer->ScreenHandle != NULL) { FFPlayer->Stop(true); PostMessage(FFPlayer->ScreenHandle, CM_INVALIDATE, 0, 0); UpdateWindow(FFPlayer->ScreenHandle); } } FFPlayer->AspectRatio = ChkFullScreen->Checked ? -1 : 0; FFPlayer->TryOpen(FPlayerFile, FDispArea->Handle); Application->ProcessMessages(); } catch(Exception &e) { } BtnStop->Enabled = true; BtnPause->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::BtnStopClick(TObject *Sender) { BtnStop->Enabled = false; BtnPause->Enabled = false; try { if (FFPlayer->ScreenHandle != NULL) { FFPlayer->Stop(true); } Application->ProcessMessages(); } catch(Exception &e) { } BtnPlay->Enabled = true; if (PnlEditForm->Visible == false) PnlEditForm->Visible = true; } //--------------------------------------------------------------------------- void __fastcall TVMSM630M::BtnPauseClick(TObject *Sender) { try { if (FFPlayer->ScreenHandle != NULL) { FFPlayer->TogglePause(); } Application->ProcessMessages(); } catch(Exception &e) { } } //---------------------------------------------------------------------------