//--------------------------------------------------------------------------- #include #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "CDSVmsIfscF.h" #include "CDSFontF.h" #include "CDSVmsFormF.h" #include "CDSVmsIfscF.h" #include "CDSVmsDsplCndtF.h" #pragma hdrstop #include "FrmVmsMsgScheMngrF.h" #include "VMSM610MF.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 "cxColorComboBox" #pragma link "cxCalc" #pragma link "VmsDesignerF" #pragma link "cxHint" #pragma link "dxCustomHint" #pragma link "dxGDIPlusClasses" #pragma link "dxScreenTip" #pragma link "dxSkinsForm" #pragma resource "*.dfm" TFrmVmsMsgScheMngr *FrmVmsMsgScheMngr = NULL; //--------------------------------------------------------------------------- __fastcall TFrmVmsMsgScheMngr::TFrmVmsMsgScheMngr(TComponent* Owner) : TForm(Owner) { //CMM_SetFormPosition(g_AppCfg.bSaveForm); ITSSkin_Initialize(Application, g_AppCfg.sLang); ITSSkin_Caption(false); ITSSkin_Load(this); //CMM_LoadForm(g_sFormsDir, this); SetColorScheme(g_AppCfg.sSkinName); FUpdate= false; FTitle = Caption;//"VMS ÀÚµ¿ ½ºÄÉÁÙ °ü¸®"; FListSymb = new TList; EditMode = false; FSelVmsModlType = ""; FSelVmsCtlrId = ""; PgSchedule->ActivePage = TsEdit; //GrpPreview->Height = 368; TvSche->OptionsData->Editing = false; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::SetColorScheme(String ASkinName) { dxSkinController1->SkinName = ASkinName; dxSkinController1->Refresh(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::InitTcxList(TcxGridTableView *AView) { AView->OptionsView->DataRowHeight = 0; AView->OptionsView->CellAutoHeight = true; AView->OptionsView->Indicator = false; AView->OptionsCustomize->ColumnMoving = false; AView->OptionsCustomize->ColumnSorting = false; AView->Columns[0]->Width = 40; AView->Columns[0]->Options->HorzSizing = false; AView->Columns[1]->Width = 330; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::CommClose() { try { if (m_pEdtDesigner) { delete m_pEdtDesigner; m_pEdtDesigner = NULL; } APP_DelVmsSizeCombo(CbSizeType); ClearSymbloList(); SAFE_DELETE(FListSymb); FVmsFormDsplCndtList.RemoveAll(); FFormLists.RemoveAll(); // ¸ðµâÅ©±âº° Æû À̹ÌÁö¸¦ ÀúÀå FFormBackLists.RemoveAll(); // ¸ðµâÅ©±âº° Æû À̹ÌÁö¸¦ ÀúÀå(ÇÊÀΰ´Ã¼¸¦ Á¦¿ÜÇÑ À̹ÌÁö ÀúÀå) FFormRealLists.RemoveAll(); // ÇÊÀÎ °´Ã¼¸¦ Æ÷ÇÔÇÑ Æû À̹ÌÁö ÀúÀå FVmsScnrLists.RemoveAll(); // ½Ã³ª¸®¿Àº° ÇÊÀΰ´Ã¼ Á¤º¸ ÀúÀå FVmsFormLists.RemoveAll(); // Æûº° °´Ã¼Á¤º¸¸¦ ÀúÀå CComm_Terminate(); ITSSkin_Term(); //CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::FormCreate(TObject *Sender) { InitDbLoading(); m_pEdtDesigner = new TVmsFormDesigner(PnlEditForm); FOR_STL(TCDSFontColor*, pObj, CDSFontManager->FFontColors) { m_pEdtDesigner->InitFontColor(pObj->VMS_FONT_COLR_CD, (TColor)pObj->VMS_FONT_COLR_VAL); } FOR_STL(TCDSBackColor*, pObj, CDSFontManager->FBackColors) { m_pEdtDesigner->InitBackColor(pObj->VMS_BACK_COLR_CD, (TColor)pObj->VMS_BACK_COLR_VAL); } FOR_STL(TCDSFontName*, pObj, CDSFontManager->FFontNames) { m_pEdtDesigner->InitFontName(pObj->VMS_FONT_NAME_CD, pObj->VMS_FONT_NAME_NM); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::InitDbLoading() { Application->ProcessMessages(); if (!VmsCtlrManager) { VmsCtlrManager = new TVmsCtlrManager(); } VmsCtlrManager->LoadVmsModlSize(); VmsCtlrManager->LoadFromDb(); if(!CDSFontManager) { CDSFontManager = new TCDSFontManager(); } CDSFontManager->LoadFontInfo(); if (!VmsIfscManager) { VmsIfscManager = new TVmsIfscManager(); } VmsIfscManager->LoadFromDb(); if (!VmsDsplCndtManager) { VmsDsplCndtManager = new TVmsDsplCndtManager(); } VmsDsplCndtManager->LoadFromDb(); if (!VmsTextItemManager) { VmsTextItemManager = new TVmsTextItemManager(); } VmsTextItemManager->LoadFromDb(); LoadVmsFormDsplCndt(); APP_InitDisplayColor(); if (!CenterCommManager) { CenterCommManager = new TCenterCommManager(); } CenterCommManager->LoadFromDb(g_AppCfg.PRCS_ID); FCommCtrlTarget = CenterCommManager->FLists.Find("22"); // VMSÇ¥Ãâ¹®¾È µî·Ï ¾Ë¸² } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::FormShow(TObject *Sender) { int nResult = CComm_Initialize((long)Handle, g_AppCfg.PRCS_ID, "P04010", 0); Refresh(); FormInit(); ChangeEditMode(1); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::FormInit() { TvVmsSche->OptionsView->NoDataToDisplayInfoText = "<µî·ÏµÇ¾î ÀÖ´Â VMS ½Ã³ª¸®¿À Á¤º¸°¡ ¾ø½À´Ï´Ù>"; TvSche->OptionsView->NoDataToDisplayInfoText = "<µî·ÏµÇ¾î ÀÖ´Â VMS ½Ã³ª¸®¿À ±¸¼º Á¤º¸°¡ ¾ø½À´Ï´Ù>"; TvForm->OptionsView->NoDataToDisplayInfoText = "<µî·ÏµÇ¾î ÀÖ´Â ¸Þ½ÃÁö Æû Á¤º¸°¡ ¾ø½À´Ï´Ù>"; //VMS»çÀÌÁî APP_FillVmsSizeType(CbSizeType, false); FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; RefreshData(); CbSizeType->ItemIndex = -1; CbSizeType->ItemIndex = 0; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); FrmVmsMsgScheMngr = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::FormCloseQuery(TObject *Sender, bool &CanClose) { if (FUpdate) { //POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::ChangeEditMode(int AEdit) { bool bEnabled = false; switch(AEdit) { case 0: //ÆíÁý¹öưŬ¸¯ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; //BtnCopyAdd->Enabled = false; //BtnCopyAdd212->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = "Ãë¼Ò";//"Ãë¼Ò"; BtnEdit->Hint = "µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò";//µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; EditMode = true; } break; case 1: //ÆíÁý[Ãë¼Ò]¹öưŬ¸¯ { FormClear(); //È­¸éÀ» ¸ðµÎ Áö¿î´Ù. BtnEdit->Enabled = false; BtnInsert->Enabled = true; BtnDelete->Enabled = false; //BtnCopyAdd->Enabled = false; //BtnCopyAdd212->Enabled = false; BtnSave->Enabled = false; BtnEdit->Caption = "ÆíÁý";//"ÆíÁý"; BtnEdit->Hint = "µ¥ÀÌÅÍ ÆíÁý";//µ¥ÀÌÅÍ ÆíÁý"; //bEnabled = true; EditMode = false; } break; case 2: //Ãß°¡ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; //BtnCopyAdd->Enabled = false; //BtnCopyAdd212->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = "Ãë¼Ò";//"Ãë¼Ò"; BtnEdit->Hint = "µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò";//µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; EditMode = true; //CbVms->Enabled = true; } break; case 3: //¼öÁ¤¸ðµå { BtnEdit->Enabled = true; BtnInsert->Enabled = true; BtnDelete->Enabled = true; //BtnCopyAdd->Enabled = true; //BtnCopyAdd212->Enabled = true; BtnSave->Enabled = false; BtnEdit->Caption = "ÆíÁý";//"ÆíÁý"; BtnEdit->Hint = "µ¥ÀÌÅÍ ÆíÁý";//µ¥ÀÌÅÍ ÆíÁý"; bEnabled = true; EditMode = false; } break; } if (AEdit == 0 || AEdit == 2) { } else { } BtnSaveScnr->Enabled = BtnDelete->Enabled; GrpList->Enabled = !EditMode; PnlScnrEdit->Enabled = EditMode; TvSche->OptionsData->Editing = EditMode; //PnlFormInfo->Enabled = EditMode; //PnlObjProperty->Enabled = EditMode; //PnlFormObjCmd->Enabled = EditMode; //BtnReApply->Enabled = EditMode; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::ClearSymbloList() { FFormLists.RemoveAll(); FFormBackLists.RemoveAll(); for(int ii = 0; ii < FListSymb->Count; ii++) { Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii]; delete bitmap; } FListSymb->Clear(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnSearchClick(TObject *Sender) { RefreshData(); EdFocus->SetFocus(); ChangeEditMode(1); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::ChangeEditFormPanel() { TVmsSizeType *pVmsSizeType = APP_GetVmsSizeTypeObject(CbSizeType); if (pVmsSizeType == NULL) return; FVmsTypeCd = pVmsSizeType->TypeCd; FVmsWidth = pVmsSizeType->Width; FVmsHeight = pVmsSizeType->Height; //LockWindowUpdate(PnlPreview->Handle); PnlPreview->Width = FVmsWidth+4; PnlPreview->Height= FVmsHeight+4; ImgPreview->Align = alNone; ImgPreview->Picture->Bitmap->Width = FVmsWidth; ImgPreview->Picture->Bitmap->Height= FVmsHeight; APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack); ImgPreview->Align = alClient; //LockWindowUpdate(0); PnlEdtBack->Width = FVmsWidth+4; PnlEdtBack->Height= FVmsHeight+4; m_pEdtDesigner->Clear(); m_pEdtDesigner->SizeType = FVmsTypeCd; m_pEdtDesigner->SetSize(FVmsWidth, FVmsHeight); m_pEdtDesigner->SetPos(0, 0); m_pEdtDesigner->BkColorCode = "00"; m_pEdtDesigner->EditMode = true; m_pEdtDesigner->Show(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::RefreshData() { FormClear(); FillVmsCombo(); ChangeEditFormPanel(); //LoadVmsFormList(FVmsTypeCd); //ChkAutoWidthPropertiesChange((TObject*)ChkAutoWidth); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::FillVmsCombo() { TNotifyEvent evt = CbVms->Properties->OnChange; CbVms->Properties->OnChange = NULL; CbVms->Properties->Items->Clear(); FOR_STL(TVmsCtlr*, pObj, VmsCtlrManager->FLists) { CbVms->Properties->Items->Add(" [" + pObj->VMS_CTLR_ID + "] " + pObj->VMS_NM); } CbVms->ItemIndex = -1; CbVms->Properties->OnChange = evt; CbVms->ItemIndex = 0; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::FormClear() { FSelIdx = -1; EdScnrId->Clear(); EdScnrNm->Clear(); CMM_ClearGridTableView(TvSche); CMM_ClearGridTableView(TvPreview); //LockWindowUpdate(GrpPreview->Handle); APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack); //LockWindowUpdate(0); GrpSchedule->Caption = "¢º VMS ½Ã³ª¸®¿À ¼³Á¤"; FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::DisplayInfo() { FormClear(); FSelIdx = CMM_GetRecordIndex(TvVmsSche); if (FSelIdx < 0) return; TcxDataController *pGDC = TvVmsSche->DataController; String sScnrId = VarToStr(pGDC->Values[FSelIdx][ColScnrId->Index]); String sScnrNm = VarToStr(pGDC->Values[FSelIdx][ColScnrNm->Index]); EdScnrId->Text = sScnrId; EdScnrNm->Text = sScnrNm; GrpSchedule->Caption = "¢º VMS ½Ã³ª¸®¿À ¼³Á¤ (" + sScnrId + ": " + sScnrNm + ")"; LoadVmsScenarionForm(FSelVmsCtlrId, sScnrId); ChangeEditMode(3); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnListAddClick(TObject *Sender) { String sScnrId = EdScnrId->Text; if (sScnrId.IsEmpty()) return; int nFormIdx = CMM_GetRecordIndex(TvForm); if (nFormIdx < 0) return; TcxGridDataController *pDcFrm = TvForm->DataController; TcxGridDataController *pDcSch = TvSche->DataController; int nRowS = pDcSch->AppendRecord(); String VMS_SCNR_ID = sScnrId; int FORM_SN = nRowS+1; String VMS_FORM_ID = VarToStr(pDcFrm->Values[nFormIdx][ColFrm00->Index]); String TXT_FORM_APLY_VMS_SECT_ID = ""; String VMS_FORM_DSPL_CNDT_ID = FORM_DSPL_CNDT_DEFAULT; int DSPL_HR = VarToStr(pDcFrm->Values[nFormIdx][ColFrm03->Index]).ToIntDef(5); String VMS_MODL_KIND = VarToStr(pDcFrm->Values[nFormIdx][ColFrm08->Index]); String VMS_FORM_TYPE = VarToStr(pDcFrm->Values[nFormIdx][ColFrm07->Index]); String VMS_FORM_NM = VarToStr(pDcFrm->Values[nFormIdx][ColFrm02->Index]); String VMS_FORM_DSPL_CNDT_NM = ""; FMaxFormSn++; pDcSch->Values[nRowS][Col00->Index] = VMS_FORM_ID; pDcSch->Values[nRowS][Col01->Index] = pDcFrm->Values[nFormIdx][ColFrm01->Index]; pDcSch->Values[nRowS][Col02->Index] = VMS_FORM_NM; pDcSch->Values[nRowS][Col03->Index] = DSPL_HR; pDcSch->Values[nRowS][Col04->Index] = TXT_FORM_APLY_VMS_SECT_ID; pDcSch->Values[nRowS][Col05->Index] = VMS_FORM_DSPL_CNDT_ID; pDcSch->Values[nRowS][Col06->Index] = VMS_MODL_KIND; pDcSch->Values[nRowS][Col07->Index] = VMS_FORM_TYPE; pDcSch->Values[nRowS][ColDsplCndtId->Index] = VMS_FORM_DSPL_CNDT_ID; pDcSch->Values[nRowS][ColDsplCndtNm->Index] = VMS_FORM_DSPL_CNDT_NM; pDcSch->Values[nRowS][ColFormSn->Index] = FMaxFormSn; DrawVmsScenarionForm(pDcSch, nRowS); TVmsFormScnr *pVmsScnr = new TVmsFormScnr(FMaxFormSn); FVmsScnrLists.Push(pVmsScnr->FORM_SN, pVmsScnr); InitVmsScnrFormObject(FSelVmsCtlrId, EdScnrId->Text, VMS_FORM_ID, pVmsScnr); CMM_SetGridRow(CxSche, TvSche, FMaxFormSn, ColFormSn->Index); EditScenarioInfo(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnListDeleteClick(TObject *Sender) { #if 0 int nSelIdx = CMM_GetRecordIndex(TvSche); if (nSelIdx < 0) return; TvSche->DataController->DeleteRecord(nSelIdx); #endif TcxGridTableView *pSrcList = TvSche; int nFocused = pSrcList->Controller->FocusedRecordIndex; int nSelRows = pSrcList->Controller->SelectedRowCount; if (nSelRows <= 0) { return; } try { TcxGridDataController *pGDC = pSrcList->DataController; pSrcList->BeginUpdate(); try { pSrcList->Controller->DeleteSelection(); int nDataCnt = pSrcList->DataController->RecordCount; if (nDataCnt <= nFocused) nFocused = nDataCnt - 1; pSrcList->Controller->ClearSelection(); } catch(...) { } } __finally { pSrcList->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::EditScenarioInfo() { int nSelIdx = CMM_GetRecordIndex(TvSche); if (nSelIdx < 0) return; TcxDataController *pGDC = TvSche->DataController; String sVmsScnrId = EdScnrId->Text; String sVmsFormId = VarToStr(pGDC->Values[nSelIdx][Col00->Index]); String sVmsFormNm = VarToStr(pGDC->Values[nSelIdx][Col02->Index]); int nDsplHh = VarToStr(pGDC->Values[nSelIdx][Col03->Index]).ToIntDef(0); int nFormSn = VarToStr(pGDC->Values[nSelIdx][ColFormSn->Index]).ToIntDef(0); String sDsplCndtId = VarToStr(pGDC->Values[nSelIdx][ColDsplCndtId->Index]); String sDsplCndtNm = VarToStr(pGDC->Values[nSelIdx][ColDsplCndtNm->Index]); TVMSM610M *pSetForm = new TVMSM610M(this); pSetForm->FEditMode = EditMode; pSetForm->FVmsCtlrId = FSelVmsCtlrId; pSetForm->FScnrId = sVmsScnrId; pSetForm->FFormId = sVmsFormId; pSetForm->FFormSn = nFormSn; pSetForm->FDsplHh = nDsplHh; pSetForm->FDsplCndtId = sDsplCndtId; pSetForm->FDsplCndtNm = sDsplCndtNm; pSetForm->FVmsTypeCd = FVmsTypeCd; pSetForm->FVmsWidth = FVmsWidth; pSetForm->FVmsHeight = FVmsHeight; pSetForm->ShowModal(); if (pSetForm->FSelected) { pGDC->Values[nSelIdx][Col03->Index] = pSetForm->FDsplHh; pGDC->Values[nSelIdx][ColDsplCndtId->Index] = pSetForm->FDsplCndtId; pGDC->Values[nSelIdx][ColDsplCndtNm->Index] = pSetForm->FDsplCndtNm; TStream *pImgStream = new TMemoryStream(); try { void *p; Variant v; pSetForm->ImgForm->Picture->Bitmap->SaveToStream(pImgStream); int aBound[]={0, pImgStream->Size - 1}; v = VarArrayCreate(aBound, 1, varByte); p = VarArrayLock(v); pImgStream->Position = 0; pImgStream->Read(p, pImgStream->Size); VarArrayUnlock(v); pGDC->Values[nSelIdx][Col01->Index] = v; TFormImage *pImage = FFormRealLists.Find(nFormSn); if (pImage != NULL) { try { pImage->bitmap->Assign(pSetForm->ImgForm->Picture->Bitmap); } catch(Exception &e) { } } } __finally { SAFE_DELETE(pImgStream); } LoadPreviewFormReal(sVmsFormId, nFormSn); } delete pSetForm; pSetForm = NULL; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::TvScheCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; EditScenarioInfo(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnSaveClick(TObject *Sender) { if (FSelVmsCtlrId.IsEmpty()) { Application->MessageBox(L"VMS ½ºÄÉÁÙ ÀúÀå\r\nVMS Á¤º¸¸¦ ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sMsg; String sScnrId = EdScnrId->Text.Trim(); if (sScnrId.IsEmpty()) { Application->MessageBox(L"VMS ½ºÄÉÁÙ ÀúÀå\r\nVMS ½Ã³ª¸®¿À ID¸¦ ÀÔ·ÂÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); ActiveControl = EdScnrId; return; } String sScnrNm = EdScnrNm->Text.Trim(); if (sScnrNm.IsEmpty()) { Application->MessageBox(L"VMS ½ºÄÉÁÙ ÀúÀå\r\nVMS ½Ã³ª¸®¿À À̸§À» ÀÔ·ÂÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); ActiveControl = EdScnrNm; return; } if (AnsiString(sScnrNm).Length() > 32) { Application->MessageBox(L"VMS ½ºÄÉÁÙ ÀúÀå\r\n½Ã³ª¸®¿À ¸íĪÀº 32Byte¸¦ ÃʰúÇÒ ¼ö ¾ø½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); ActiveControl = EdScnrNm; return; } TcxGridDataController *pGDC = TvSche->DataController; if (pGDC->DataRowCount <= 0) { sMsg = "*************************************************************\r\n" "VMS ½Ã³ª¸®¿À ±¸¼º Á¤º¸°¡ ¾ø½À´Ï´Ù.\r\n" "VMS ½Ã³ª¸®¿À Á¤º¸¸¦ ÀúÀå ÇϽðڽÀ´Ï±î?\r\n" "*************************************************************"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONERROR|MB_APPLMODAL) != IDYES) return; } bool bResult; /////////////////////////////////// ½Ã³ª¸®¿À Á¤º¸ ÀúÀå ITSDb_GetConnection()->BeginTrans(); bResult = SaveVmsScnr(FSelVmsCtlrId, sScnrId, sScnrNm); if (!bResult) { ITSDb_GetConnection()->RollbackTrans(); return; } bResult = DeleteVmsScenario(FSelVmsCtlrId, sScnrId, false); if (!bResult) { ITSDb_GetConnection()->RollbackTrans(); return; } bResult = SaveVmsScenarioForm(FSelVmsCtlrId, sScnrId); if (!bResult) { ITSDb_GetConnection()->RollbackTrans(); return; } bResult = SaveVmsScenarioFormObj(FSelVmsCtlrId, sScnrId); if (!bResult) { ITSDb_GetConnection()->RollbackTrans(); return; } if (bResult) { ITSDb_GetConnection()->CommitTrans(); #if 0 if (FCommCtrlTarget != NULL) { FOR_STL(TCommInfo*, pCommInfo, FCommCtrlTarget->FLists) { int sendResult = CComm_VmsNotiRegDsplMsg(pCommInfo->SRVR_IP, pCommInfo->CMNC_PORT); if (VERR_NONE == sendResult) { } Sleep(200); } } #endif Application->MessageBox(L"VMS ½ºÄÉÁÙ ÀúÀå\r\nVMS ½Ã³ª¸®¿À Á¤º¸¸¦ ÀúÀå ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FUpdate = true; LoadVmsScenario(FSelVmsCtlrId); CMM_SetGridRow(CxVmsSche, TvVmsSche, sScnrId, ColScnrId->Index); //DisplayInfo(); } else { ITSDb_GetConnection()->RollbackTrans(); } } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsMsgScheMngr::SaveVmsScnr(String AVmsCtlrId, String AScnrId, String AScnrNm) { bool bResult = false; String sQry; TADOQuery *pADO = NULL; sQry = "MERGE INTO TB_VMS_SCNR L \r\n" "USING (SELECT \r\n" " :p01 AS VMS_CTLR_ID, \r\n" " :p02 AS VMS_SCNR_ID, \r\n" " :p03 AS VMS_SCNR_NM, \r\n" " :p04 AS OPER_ID \r\n" " FROM DUAL) M \r\n" " ON (L.VMS_CTLR_ID = M.VMS_CTLR_ID \r\n" " AND L.VMS_SCNR_ID = M.VMS_SCNR_ID) \r\n" "WHEN MATCHED THEN \r\n" " UPDATE SET \r\n" " L.VMS_SCNR_NM = M.VMS_SCNR_NM, \r\n" " L.CHNGR_ID = M.OPER_ID, \r\n" " L.CHG_DT = SYSDATE \r\n" "WHEN NOT MATCHED THEN \r\n" " INSERT ( \r\n" " VMS_CTLR_ID, \r\n" " VMS_SCNR_ID, \r\n" " VMS_SCNR_NM, \r\n" " RGSTR_ID, \r\n" " REG_DT ) \r\n" " VALUES ( \r\n" " M.VMS_CTLR_ID, \r\n" " M.VMS_SCNR_ID, \r\n" " M.VMS_SCNR_NM, \r\n" " M.OPER_ID, \r\n" " SYSDATE ) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); pADO->Parameters->ParamByName("p01")->Value = AVmsCtlrId; pADO->Parameters->ParamByName("p02")->Value = AScnrId; pADO->Parameters->ParamByName("p03")->Value = AScnrNm; pADO->Parameters->ParamByName("p04")->Value = g_AppCfg.OPER_ID; pADO->ExecSQL(); } catch(EDatabaseError &E) { DBERRORMSG("TFrmVmsMsgScheMngr::SaveVmsScnr", String(E.ClassName()), E.Message, sQry); return false; } catch(Exception &e) { DBERRORMSG("TFrmVmsMsgScheMngr::SaveVmsScnr", String(e.ClassName()), e.Message, sQry); return false; } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsMsgScheMngr::SaveVmsScenario(String AVmsNmbr, TcxGridTableView *AListSch) { bool bResult = false; return bResult; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnUpClick(TObject *Sender) { try { TvSche->BeginUpdate(); int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex; if (nCurIdx <= 0) { return; } int nUpIdx = nCurIdx-1; try { int nCols = TvSche->ColumnCount; for (int ii = 0; ii < nCols; ii++) { Variant va = TvSche->DataController->Values[nCurIdx][ii]; TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nUpIdx][ii]; TvSche->DataController->Values[nUpIdx][ii] = va; } TvSche->Controller->ClearSelection(); TvSche->Controller->FocusedRowIndex = nUpIdx; TvSche->ViewData->Records[nUpIdx]->Focused = true; TvSche->ViewData->Records[nUpIdx]->Selected = true; CxSche->SetFocus(); } catch(...) { } } __finally { TvSche->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnDownClick(TObject *Sender) { try { TvSche->BeginUpdate(); int nCurIdx = TvSche->DataController->FocusedRowIndex;//FocusedRecordIndex; if (nCurIdx < 0) { return; } if (nCurIdx == TvSche->DataController->RecordCount-1) { return; } int nDnIdx = nCurIdx+1; try { int nCols = TvSche->ColumnCount; for (int ii = 0; ii < nCols; ii++) { Variant va = TvSche->DataController->Values[nCurIdx][ii]; TvSche->DataController->Values[nCurIdx][ii] = TvSche->DataController->Values[nDnIdx][ii]; TvSche->DataController->Values[nDnIdx][ii] = va; } TvSche->Controller->ClearSelection(); TvSche->Controller->FocusedRowIndex = nDnIdx; TvSche->ViewData->Records[nDnIdx]->Focused = true; TvSche->ViewData->Records[nDnIdx]->Selected = true; CxSche->SetFocus(); } catch(...) { } } __finally { TvSche->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnBestFitClick(TObject *Sender) { try { LockWindowUpdate(Handle); TvSche->BeginUpdate(); TvSche->ApplyBestFit(NULL, false, false); } __finally { TvSche->EndUpdate(); LockWindowUpdate(0); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::Col05CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { int nRecordIdx = AViewInfo->GridRecord->RecordIndex; if (nRecordIdx < 0) { return; } try { int nItemIdx = AViewInfo->Item->Index; if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return; String sEndDt = AViewInfo->GridRecord->DisplayTexts[nItemIdx]; if (sEndDt < Now().FormatString(STR_HHNN)) { ACanvas->Canvas->Brush->Color = clSilver; } } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::Col00CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { #if 0 int nRecordIdx = AViewInfo->GridRecord->RecordIndex; if (nRecordIdx < 0) { return; } try { if (VarToStr(AViewInfo->GridRecord->DisplayTexts[15]).ToIntDef(0) != eFormTp_congest) { return; } if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[9])) { ACanvas->Canvas->Brush->Color = clRed; } else { String IFSC_ID = AViewInfo->GridRecord->DisplayTexts[9].Trim(); if (IFSC_ID == "" || IFSC_ID == "0") { ACanvas->Canvas->Brush->Color = clRed; } } } catch(Exception &e) { } #endif } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::Col06CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone) { int nRecordIdx = AViewInfo->GridRecord->RecordIndex; if (nRecordIdx < 0) { return; } try { int nItemIdx = AViewInfo->Item->Index; if (VarIsNull(AViewInfo->GridRecord->DisplayTexts[nItemIdx])) return; String sUseYn = AViewInfo->GridRecord->DisplayTexts[nItemIdx]; if (sUseYn == "N") { ACanvas->Canvas->Brush->Color = clRed; } } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::CbVmsPropertiesChange(TObject *Sender) { if (CbVms->ItemIndex < 0) return; FSelVmsCtlrId = APP_GetCode(CbVms); FormClear(); TVmsCtlr *pVmsCtlr = VmsCtlrManager->FLists.Find(FSelVmsCtlrId); if (pVmsCtlr == NULL) { Application->MessageBox(L"VMS ½ºÄÉÁÙ ÀúÀå\r\n¾Ë¼ö ¾ø´Â VMS Á¤º¸ ÀÔ´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); ActiveControl = CbVms; return; } String sVmsModlType = pVmsCtlr->VMS_MODL_KIND; if (FSelVmsModlType != sVmsModlType) { FSelVmsModlType = sVmsModlType; APP_SetCode(CbSizeType, FSelVmsModlType); ChangeEditFormPanel(); LoadVmsFormList(sVmsModlType); TvPreview->OptionsView->DataRowHeight = FVmsHeight; if (TvPreview->OptionsView->DataRowHeight < 48) { TvPreview->OptionsView->DataRowHeight = 48; } if (TvPreview->OptionsView->DataRowHeight > 144) { TvPreview->OptionsView->DataRowHeight = 144; } } LoadVmsScenario(FSelVmsCtlrId); ChangeEditMode(1); CxVmsSche->SetFocus(); } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsMsgScheMngr::LoadVmsScenario(String AVMS_CTLR_ID) { FVmsScnrLists.RemoveAll(); FFormRealLists.RemoveAll(); CMM_ClearGridTableView(TvVmsSche); CMM_ClearGridTableView(TvPreview); String sQry; TADOQuery *pADO = NULL; sQry = "SELECT A.VMS_CTLR_ID, A.VMS_SCNR_ID, A.VMS_SCNR_NM \r\n" " FROM TB_VMS_SCNR A \r\n" " WHERE 1=1 \r\n" " AND VMS_CTLR_ID = :p01 \r\n" " ORDER BY A.VMS_CTLR_ID, A.VMS_SCNR_ID \r\n"; try { TvVmsSche->BeginUpdate(); TcxDataController *pGDC = TvVmsSche->DataController; int nRow; try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", AVMS_CTLR_ID); ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColScnrId->Index] = pADO->FieldByName("VMS_SCNR_ID")->AsString; pGDC->Values[nRow][ColScnrNm->Index] = pADO->FieldByName("VMS_SCNR_NM")->AsString; } } catch(EDatabaseError &E) { DBERRORMSG("TFrmVmsMsgScheMngr::LoadVmsScenario", String(E.ClassName()), E.Message, sQry); return false; } catch(Exception &e) { DBERRORMSG("TFrmVmsMsgScheMngr::LoadVmsScenario", String(e.ClassName()), e.Message, sQry); return false; } } __finally { if (pADO) { pADO->Close(); delete pADO; } TvVmsSche->EndUpdate(); } return true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnEditClick(TObject *Sender) { if (BtnEdit->Caption == "ÆíÁý") { ChangeEditMode(0); FNewDb = false; } else { String sScnrId = EdScnrId->Text; ChangeEditMode(1); if (CMM_FindGridData(TvVmsSche->DataController, sScnrId, ColScnrId->Index) >= 0) { CMM_SetGridRow(CxVmsSche, TvVmsSche, sScnrId, ColScnrId->Index); DisplayScenarioInfo(); } } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnInsertClick(TObject *Sender) { String newFormId = GetNextVmsScnrId(FSelVmsCtlrId); FormClear(); EdScnrId->Text = newFormId; ChangeEditMode(2); FNewDb = true; FVmsScnrLists.RemoveAll(); FFormRealLists.RemoveAll(); //ÆûÀ¯ÇüÀ» ¼³Á¤ //APP_SetCode(CbFormType, sFormType); //CbFormDsplEff->ItemIndex = CbFormDsplEff->Properties->Items->Count-1; EdScnrNm->SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnDeleteClick(TObject *Sender) { int nIdx = TvVmsSche->DataController->FocusedRecordIndex; if (nIdx < 0) return; String sScnrId = EdScnrId->Text; if (sScnrId.IsEmpty()) { Application->MessageBox(L"VMS ½ºÄÉÁÙ »èÁ¦\r\n»èÁ¦ÇÒ VMS ½ºÄÉÁÙÀ» ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); if (CxVmsSche->Enabled) CxVmsSche->SetFocus(); return; } if (CheckScenarioUse(sScnrId)) { return; } String sMsg; sMsg = "VMS ½Ã³ª¸®¿À ID: " + sScnrId; sMsg+= "\r\n¼±ÅÃÇϽŠVMS ½Ã³ª¸®¿À Á¤º¸¸¦ »èÁ¦ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; ITSDb_GetConnection()->BeginTrans(); if (DeleteVmsScenario(FSelVmsCtlrId, sScnrId, true)) { ITSDb_GetConnection()->CommitTrans(); FUpdate = true; Application->MessageBox(L"VMS ½Ã³ª¸®¿À »èÁ¦\r\nVMS ½Ã³ª¸®¿À Á¤º¸¸¦ »èÁ¦ ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FormClear(); ChangeEditMode(1); LoadVmsScenario(FSelVmsCtlrId); } else { ITSDb_GetConnection()->RollbackTrans(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::TvVmsScheFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (!AFocusedRecord) return; DisplayScenarioInfo(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::DisplayScenarioInfo() { LockWindowUpdate(Handle); FormClear(); FVmsScnrLists.RemoveAll(); FFormRealLists.RemoveAll(); FSelIdx = CMM_GetRecordIndex(TvVmsSche); if (FSelIdx < 0) return; TcxDataController *pGDC = TvVmsSche->DataController; String sScnrId = VarToStr(pGDC->Values[FSelIdx][ColScnrId->Index]); String sScnrNm = VarToStr(pGDC->Values[FSelIdx][ColScnrNm->Index]); EdScnrId->Text = sScnrId; EdScnrNm->Text = sScnrNm; GrpSchedule->Caption = "¢º VMS ½Ã³ª¸®¿À ¼³Á¤ (" + sScnrId + ": " + sScnrNm + ")"; LoadVmsScenarionForm(FSelVmsCtlrId, sScnrId); DrawVmsScenarionForm(); ChangeEditMode(3); LockWindowUpdate(0); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::DrawVmsScenarionForm() { TcxGridTableView *pGrid = TvSche; if (!pGrid) return; String imageFilePath; String saveDirPath = TPath::GetTempPath() + "VMS-FORM\\"; ForceDirectories(saveDirPath.c_str()); TcxDataController *pGDC = pGrid->DataController; try { pGrid->BeginUpdate(); pGDC->BeginUpdate(); int nRows = pGDC->RecordCount; try { for (int ii = 0; ii < nRows; ii++) { DrawVmsScenarionForm(pGDC, ii); } } catch(Exception &e) { } } __finally { pGDC->EndUpdate(); pGrid->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::DrawFormObject(TVmsFormDesigner *AEdtDesigner, TFormObj *AFormObj, TVmsFormScnr *AVmsScnr, int AObjSeq) { bool isDisplay = false; if (AFormObj->VMS_TXT_ITEM_ID == "C1001" || // µµ·Î¸í AFormObj->VMS_TXT_ITEM_ID == "C1002" || // ½ÃÁ¡¸í AFormObj->VMS_TXT_ITEM_ID == "C1003" || // Á¾Á¡¸í AFormObj->VMS_TXT_ITEM_ID == "C2001" || // ¼ÒÅë»óȲ AFormObj->VMS_TXT_ITEM_ID == "C2002" || // ½Ã°£ AFormObj->VMS_TXT_ITEM_ID == "C2003" || // ¼Óµµ AFormObj->VMS_TXT_ITEM_ID == "C3001" || // ¿ìȸ-µµ·Î¸í AFormObj->VMS_TXT_ITEM_ID == "C3002" || // ¿ìȸ-½ÃÁ¡¸í AFormObj->VMS_TXT_ITEM_ID == "C3003" || // ¿ìȸ-Á¾Á¡¸í AFormObj->VMS_TXT_ITEM_ID == "C4001" || // ¿ìȸ-¼ÒÅë»óȲ AFormObj->VMS_TXT_ITEM_ID == "C4002" || // ¿ìȸ-½Ã°£ AFormObj->VMS_TXT_ITEM_ID == "C4003" ) // ¿ìȸ-¼Óµµ { isDisplay = true; } else if (AFormObj->VMS_TXT_ITEM_ID == "C0001" && // ´Ü¼ø¹®ÀÚ¿­ AFormObj->FONT_CLR == "99" ) // ÀÚµ¿»ö»ó { isDisplay = true; } if (!isDisplay) { return; } String sDsplText = AFormObj->DSPL_TXT; if (AFormObj->VMS_TXT_ITEM_ID == "C1001" || // µµ·Î¸í AFormObj->VMS_TXT_ITEM_ID == "C1002" || // ½ÃÁ¡¸í AFormObj->VMS_TXT_ITEM_ID == "C1003" ) // Á¾Á¡¸í { if (AVmsScnr != NULL) { TVmsFormScnrObj *pScnrObj = AVmsScnr->FLists.Find(AFormObj->VMS_FORM_OBJ_ID); if (pScnrObj != NULL) { TVmsIfsc *pIfsc = VmsIfscManager->FLists.Find(pScnrObj->FIGR_FORM_APLY_VMS_SECT_ID); if (pIfsc != NULL) { if (AFormObj->VMS_TXT_ITEM_ID == "C1001") sDsplText = pIfsc->VMS_DSPL_SECT_NM; else if (AFormObj->VMS_TXT_ITEM_ID == "C1002") sDsplText = pIfsc->VMS_DSPL_STRT_NM; else if (AFormObj->VMS_TXT_ITEM_ID == "C1003") sDsplText = pIfsc->VMS_DSPL_END_NM; } } } } else if (AFormObj->VMS_TXT_ITEM_ID == "C3001" || // ¿ìȸ-µµ·Î¸í AFormObj->VMS_TXT_ITEM_ID == "C3002" || // ¿ìȸ-½ÃÁ¡¸í AFormObj->VMS_TXT_ITEM_ID == "C3003" ) // ¿ìȸ-Á¾Á¡¸í { } TVmsFormObject *pObj = AEdtDesigner->AddObject((VmsObjectDrawType)0); if (!pObj) { return; } pObj->ObjId = AFormObj->VMS_FORM_OBJ_ID; pObj->ObjSeq = AObjSeq; pObj->Text = sDsplText; pObj->RunText = pObj->Text; int nPosX = AFormObj->FORM_OBJ_PSTN_X; int nPosY = AFormObj->FORM_OBJ_PSTN_Y; int nDsplWdth = AFormObj->FORM_OBJ_DSPL_WDTH; int nTextAlign = 0; if (AFormObj->TXT_ALGN_MTHD == "R") nTextAlign = 1; if (AFormObj->TXT_ALGN_MTHD == "C") nTextAlign = 2; pObj->FillIn = AFormObj->VMS_TXT_ITEM_ID; pObj->FontNameCode = AFormObj->FONT_TYPE; TCDSFontName *pFontName = CDSFontManager->FFontNames.Find(pObj->FontNameCode); if (pFontName != NULL) { pObj->FontName = pFontName->VMS_FONT_NAME_NM; } else { pObj->FontName = "¸íÁ¶Ã¼"; pObj->FontNameCode = "00"; } pObj->FontColorCode = AFormObj->FONT_CLR; pObj->FontSize = AFormObj->FONT_SZ; pObj->FontBold = AFormObj->FONT_THCK; pObj->TextAlign = nTextAlign; LblTemp->AutoSize = false; LblTemp->Font->Name = pObj->FontName; LblTemp->Font->Size = pObj->FontSize; if (pObj->FontBold) LblTemp->Font->Style = TFontStyles() << fsBold; else LblTemp->Font->Style = TFontStyles(); LblTemp->Caption = sDsplText; LblTemp->AutoSize = true; if (pObj->TextAlign == 1) { // ¿ìÃøÁ¤·Ä: ÁÂÃø¿¡¼­ ±ÛÀÚ±æÀ̸¦ »«´ÙÀ½ ¸¸¾à À½¼öÀ̸é 0À¸·Î ¼³Á¤ nPosX = (nPosX+AFormObj->FORM_OBJ_DSPL_WDTH) - LblTemp->Width; } else if (pObj->TextAlign == 2) { // °¡¿îµ¥Á¤·Ä: ¿ø·¡ ±ÛÀÚÀÇ Áß¾Ó°ªÀ» ¾òÀº ´ÙÀ½¿¡ Á¶Á¤µÈ ±ÛÀÚÀÇ 1/2 Å©±â¸¦ »«´ÙÀ½ À½¼öÀ̸é 0À¸·Î ¼³Á¤ nPosX = (nPosX+(AFormObj->FORM_OBJ_DSPL_WDTH/2)) - (LblTemp->Width/2); } pObj->SetPos(nPosX, nPosY); pObj->Show(); pObj->BringToFront(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::DrawVmsScenarionForm(TcxDataController *AGDC, int AIdx) { TcxDataController *pGDC = AGDC; int ii = AIdx; String imageFilePath; String saveDirPath = TPath::GetTempPath() + "VMS-FORM\\"; ForceDirectories(saveDirPath.c_str()); try { String sVmsFormId = VarToStr(pGDC->Values[ii][Col00->Index]); int nFormSn = VarToStr(pGDC->Values[ii][ColFormSn->Index]).ToIntDef(0); TVmsFormScnr*pVmsScnr = FVmsScnrLists.Find(nFormSn); TVmsFormObj *pVmsForm = FVmsFormLists.Find(sVmsFormId); if (pVmsForm == NULL) { return; } m_pEdtDesigner->Clear(); m_pEdtDesigner->BkColorCode = pVmsForm->BACK_CLR; TFormImage *pBackImage = FFormBackLists.Find(sVmsFormId); if (pBackImage == NULL) { return; } TVmsFormObject *pObj = m_pEdtDesigner->AddObject((VmsObjectDrawType)1); if (!pObj) { return; } pObj->ObjId = "BASE"; pObj->ObjSeq = 0; pObj->SetBitmap(pBackImage->bitmap); pObj->SetPos(0, 0); pObj->Show(); pObj->BringToFront(); int nObjSeq = 1; FOR_STL(TFormObj*, pFormObj, pVmsForm->FLists) { if (pFormObj->VMS_FORM_OBJ_KIND == FORM_OBJ_KIND_FIGURE) { continue; } DrawFormObject(m_pEdtDesigner, pFormObj, pVmsScnr, nObjSeq++); #if 0 bool isDisplay = false; if (pFormObj->VMS_TXT_ITEM_ID == "C1001" || // µµ·Î¸í pFormObj->VMS_TXT_ITEM_ID == "C1002" || // ½ÃÁ¡¸í pFormObj->VMS_TXT_ITEM_ID == "C1003" || // Á¾Á¡¸í pFormObj->VMS_TXT_ITEM_ID == "C2001" || // ¼ÒÅë»óȲ pFormObj->VMS_TXT_ITEM_ID == "C2002" || // ½Ã°£ pFormObj->VMS_TXT_ITEM_ID == "C2003" || // ¼Óµµ pFormObj->VMS_TXT_ITEM_ID == "C3001" || // ¿ìȸ-µµ·Î¸í pFormObj->VMS_TXT_ITEM_ID == "C3002" || // ¿ìȸ-½ÃÁ¡¸í pFormObj->VMS_TXT_ITEM_ID == "C3003" || // ¿ìȸ-Á¾Á¡¸í pFormObj->VMS_TXT_ITEM_ID == "C4001" || // ¿ìȸ-¼ÒÅë»óȲ pFormObj->VMS_TXT_ITEM_ID == "C4002" || // ¿ìȸ-½Ã°£ pFormObj->VMS_TXT_ITEM_ID == "C4003" ) // ¿ìȸ-¼Óµµ { isDisplay = true; } else if (pFormObj->VMS_TXT_ITEM_ID == "C0001" && // ´Ü¼ø¹®ÀÚ¿­ pFormObj->FONT_CLR == "99" ) // ÀÚµ¿»ö»ó { isDisplay = true; } if (!isDisplay) { continue; } String sDsplText = pFormObj->DSPL_TXT; if (pFormObj->VMS_TXT_ITEM_ID == "C1001" || // µµ·Î¸í pFormObj->VMS_TXT_ITEM_ID == "C1002" || // ½ÃÁ¡¸í pFormObj->VMS_TXT_ITEM_ID == "C1003" ) // Á¾Á¡¸í { if (pVmsScnr != NULL) { TVmsFormScnrObj *pScnrObj = pVmsScnr->FLists.Find(pFormObj->VMS_FORM_OBJ_ID); if (pScnrObj != NULL) { TVmsIfsc *pIfsc = VmsIfscManager->FLists.Find(pScnrObj->FIGR_FORM_APLY_VMS_SECT_ID); if (pIfsc != NULL) { if (pFormObj->VMS_TXT_ITEM_ID == "C1001") sDsplText = pIfsc->VMS_DSPL_SECT_NM; else if (pFormObj->VMS_TXT_ITEM_ID == "C1002") sDsplText = pIfsc->VMS_DSPL_STRT_NM; else if (pFormObj->VMS_TXT_ITEM_ID == "C1003") sDsplText = pIfsc->VMS_DSPL_END_NM; } } } } else if (pFormObj->VMS_TXT_ITEM_ID == "C3001" || // ¿ìȸ-µµ·Î¸í pFormObj->VMS_TXT_ITEM_ID == "C3002" || // ¿ìȸ-½ÃÁ¡¸í pFormObj->VMS_TXT_ITEM_ID == "C3003" ) // ¿ìȸ-Á¾Á¡¸í { } TVmsFormObject *pObj = m_pEdtDesigner->AddObject((VmsObjectDrawType)0); if (!pObj) { continue; } pObj->ObjId = pFormObj->VMS_FORM_OBJ_ID; pObj->Text = sDsplText; pObj->RunText = pObj->Text; int nPosX = pFormObj->FORM_OBJ_PSTN_X; int nPosY = pFormObj->FORM_OBJ_PSTN_Y; int nDsplWdth = pFormObj->FORM_OBJ_DSPL_WDTH; int nTextAlign = 0; if (pFormObj->TXT_ALGN_MTHD == "R") nTextAlign = 1; if (pFormObj->TXT_ALGN_MTHD == "C") nTextAlign = 2; pObj->FillIn = pFormObj->VMS_TXT_ITEM_ID; pObj->FontNameCode = pFormObj->FONT_TYPE; TCDSFontName *pFontName = CDSFontManager->FFontNames.Find(pObj->FontNameCode); if (pFontName != NULL) { pObj->FontName = pFontName->VMS_FONT_NAME_NM; } else { pObj->FontName = "¸íÁ¶Ã¼"; pObj->FontNameCode = "00"; } pObj->FontColorCode = pFormObj->FONT_CLR; pObj->FontSize = pFormObj->FONT_SZ; pObj->FontBold = pFormObj->FONT_THCK; pObj->TextAlign = nTextAlign; LblTemp->AutoSize = false; LblTemp->Font->Name = pObj->FontName; LblTemp->Font->Size = pObj->FontSize; if (pObj->FontBold) LblTemp->Font->Style = TFontStyles() << fsBold; else LblTemp->Font->Style = TFontStyles(); LblTemp->Caption = sDsplText; LblTemp->AutoSize = true; if (pObj->TextAlign == 1) { // ¿ìÃøÁ¤·Ä: ÁÂÃø¿¡¼­ ±ÛÀÚ±æÀ̸¦ »«´ÙÀ½ ¸¸¾à À½¼öÀ̸é 0À¸·Î ¼³Á¤ nPosX = (nPosX+pFormObj->FORM_OBJ_DSPL_WDTH) - LblTemp->Width; } else if (pObj->TextAlign == 2) { // °¡¿îµ¥Á¤·Ä: ¿ø·¡ ±ÛÀÚÀÇ Áß¾Ó°ªÀ» ¾òÀº ´ÙÀ½¿¡ Á¶Á¤µÈ ±ÛÀÚÀÇ 1/2 Å©±â¸¦ »«´ÙÀ½ À½¼öÀ̸é 0À¸·Î ¼³Á¤ nPosX = (nPosX+(pFormObj->FORM_OBJ_DSPL_WDTH/2)) - (LblTemp->Width/2); } pObj->SetPos(nPosX, nPosY); pObj->Show(); pObj->BringToFront(); #endif } APP_ImageClear(ImgForm->Canvas, 0, 0, ImgForm->Width, ImgForm->Height, clBlack); m_pEdtDesigner->GetVmsFormImage(ImgForm); imageFilePath = saveDirPath + sVmsFormId + String(nFormSn) + ".bmp"; ImgForm->Picture->SaveToFile(imageFilePath); TStream *pImgStream = new TMemoryStream(); try { void *p; Variant v; m_pEdtDesigner->GetVmsFormImage(ImgForm); ImgForm->Picture->Bitmap->SaveToStream(pImgStream); TFormImage *pImage = new TFormImage(); pImage->formId = sVmsFormId; pImage->bitmap = new Graphics::TBitmap; try { pImage->bitmap->Assign(ImgForm->Picture->Bitmap); } catch(Exception &e) { } FFormRealLists.Push(nFormSn, pImage); int aBound[]={0, pImgStream->Size - 1}; v = VarArrayCreate(aBound, 1, varByte); p = VarArrayLock(v); pImgStream->Position = 0; pImgStream->Read(p, pImgStream->Size); VarArrayUnlock(v); pGDC->Values[ii][Col01->Index] = v; } __finally { SAFE_DELETE(pImgStream); } } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::LoadPreviewForm(String AVmsFormId) { TFormImage *pImage = FFormLists.Find(AVmsFormId); //LockWindowUpdate(GrpPreview->Handle); if (pImage != NULL && pImage->bitmap != NULL) { ImgPreview->Picture->Bitmap->Assign(pImage->bitmap); } else { APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack); } //LockWindowUpdate(0); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::LoadPreviewFormReal(String AVmsFormId, int AFormSn) { TFormImage *pImage = FFormRealLists.Find(AFormSn); //LockWindowUpdate(GrpPreview->Handle); if (pImage != NULL && pImage->bitmap != NULL) { ImgPreview->Picture->Bitmap->Assign(pImage->bitmap); } else { APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack); } //LockWindowUpdate(0); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::TvScheFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (!AFocusedRecord) return; int nSelIdx = CMM_GetRecordIndex(TvSche); if (nSelIdx < 0) return; String sVmsFormId = VarToStr(TvSche->DataController->Values[nSelIdx][Col00->Index]); int nFormSn = VarToStr(TvSche->DataController->Values[nSelIdx][ColFormSn->Index]).ToIntDef(0); LoadPreviewFormReal(sVmsFormId, nFormSn); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::TvScheCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; int nSelIdx = CMM_GetRecordIndex(TvSche); if (nSelIdx < 0) return; String sVmsFormId = VarToStr(TvSche->DataController->Values[nSelIdx][Col00->Index]); int nFormSn = VarToStr(TvSche->DataController->Values[nSelIdx][ColFormSn->Index]).ToIntDef(0); LoadPreviewFormReal(sVmsFormId, nFormSn); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::TvFormFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (!AFocusedRecord) return; int nSelIdx = CMM_GetRecordIndex(TvForm); if (nSelIdx < 0) return; String sVmsFormId = VarToStr(TvForm->DataController->Values[nSelIdx][ColFrm00->Index]); LoadPreviewForm(sVmsFormId); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::TvFormCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; int nSelIdx = CMM_GetRecordIndex(TvForm); if (nSelIdx < 0) return; String sVmsFormId = VarToStr(TvForm->DataController->Values[nSelIdx][ColFrm00->Index]); LoadPreviewForm(sVmsFormId); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::PreviewVmsScenarionForm() { CMM_ClearGridTableView(TvPreview); TcxDataController *pDcScnr = TvSche->DataController; TcxDataController *pDcView = TvPreview->DataController; try { TvSche->BeginUpdate(); TvPreview->BeginUpdate(); try { for(int nRowS = 0; nRowS < pDcScnr->RecordCount; nRowS++) { String VMS_FORM_ID = pDcScnr->Values[nRowS][Col00->Index]; int DSPL_HR = pDcScnr->Values[nRowS][Col03->Index]; String VMS_FORM_DSPL_CNDT_NM = pDcScnr->Values[nRowS][ColDsplCndtNm->Index]; int nRowV = pDcView->AppendRecord(); pDcView->Values[nRowV][ColView00->Index] = VMS_FORM_ID; pDcView->Values[nRowV][ColView01->Index] = pDcScnr->Values[nRowS][Col01->Index]; pDcView->Values[nRowV][ColView03->Index] = DSPL_HR; pDcView->Values[nRowV][ColViewDslplCndtNm->Index] = VMS_FORM_DSPL_CNDT_NM; } } catch(Exception &e) { } } __finally { TvSche->EndUpdate(); TvPreview->EndUpdate(); TvPreview->ApplyBestFit(NULL, false, false); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::PgSchedulePageChanging(TObject *Sender, TcxTabSheet *NewPage, bool &AllowChange) { if (TsPreview == NewPage) { PreviewVmsScenarionForm(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::Col03PropertiesEditValueChanged(TObject *Sender) { if (((TcxSpinEdit*)Sender)->Value < ((TcxSpinEdit*)Sender)->Properties->MinValue) ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MinValue; else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue && ((TcxSpinEdit*)Sender)->Properties->MaxValue) ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::ChkAutoWidthPropertiesChange(TObject *Sender) { try { LockWindowUpdate(Handle); TvSche->BeginUpdate(); if (ChkAutoWidth->Checked) { TvSche->OptionsView->DataRowHeight = 58; TvSche->OptionsView->CellAutoHeight = false; } else { TvSche->OptionsView->DataRowHeight = 0; TvSche->OptionsView->CellAutoHeight = true; } TvSche->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked; } __finally { TvSche->EndUpdate(); LockWindowUpdate(0); //BtnBestFit->Visible = !ChkAutoWidth->Checked; } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnBestFitViewClick(TObject *Sender) { try { LockWindowUpdate(Handle); TvPreview->BeginUpdate(); TvPreview->ApplyBestFit(NULL, false, false); } __finally { TvPreview->EndUpdate(); LockWindowUpdate(0); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnSaveScnrClick(TObject *Sender) { // VMS ±âº» ½Ã³ª¸®¿À ¼³Á¤ String sScnrId = EdScnrId->Text; if (sScnrId.IsEmpty()) { Application->MessageBox(L"VMS ±âº» ½Ã³ª¸®¿À ¼³Á¤\r\n¼³Á¤ÇÒ VMS ½ºÄÉÁÙÀ» ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); if (CxVmsSche->Enabled) CxVmsSche->SetFocus(); return; } if (FSelVmsCtlrId.IsEmpty()) { Application->MessageBox(L"VMS ±âº» ½Ã³ª¸®¿À ¼³Á¤\r\nVMS Á¤º¸¸¦ ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sMsg; sMsg = "VMS ±âº» ½Ã³ª¸®¿À ¼³Á¤\r\n\r\n"; sMsg+= "VMS ID: " + FSelVmsCtlrId; sMsg+= "\r\nVMS ½Ã³ª¸®¿À ID: " + sScnrId; sMsg+= "\r\n\r\n¼±ÅÃÇϽŠVMS¿¡ ´ëÇÏ¿© ±âº» ½Ã³ª¸®¿À·Î ÀúÀå ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; if (UpdateVmsDefScenario(FSelVmsCtlrId, sScnrId)) { FUpdate = true; Application->MessageBox(L"VMS ±âº» ½Ã³ª¸®¿À ¼³Á¤\r\nVMS ±âº» ½Ã³ª¸®¿À Á¤º¸¸¦ ÀúÀå ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgScheMngr::BtnMsgDispClick(TObject *Sender) { String sMsg = "VMS ¸Þ½ÃÁö Ç¥Ãâ\r\nVMS ¸Þ½ÃÁö Ç¥Ãâ ¸í·ÉÀ» Åë½Å¼­¹ö·Î Àü¼Û ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; if (FCommCtrlTarget != NULL) { FOR_STL(TCommInfo*, pCommInfo, FCommCtrlTarget->FLists) { int sendResult = CComm_VmsNotiRegDsplMsg(pCommInfo->SRVR_IP, pCommInfo->CMNC_PORT); if (VERR_NONE == sendResult) { } Sleep(200); } } Application->MessageBox(L"VMS ¸Þ½ÃÁö Ç¥Ãâ\r\nVMS ¸Þ½ÃÁö Ç¥Ãâ ¸í·ÉÀ» Åë½Å¼­¹ö·Î Àü¼Û ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); BtnMsgDisp->Enabled = false; } //---------------------------------------------------------------------------