//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "WindowMsgF.h" #include "CDSVmsIfscF.h" #include "CDSFontF.h" #include "CDSVmsFormF.h" #pragma hdrstop #include "FrmVmsMsgRespMngrF.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 "FRAME_VmsSchListF" #pragma link "cxHint" #pragma link "dxCustomHint" #pragma link "dxScreenTip" #pragma link "dxSkinsForm" #pragma link "dxGDIPlusClasses" #pragma resource "*.dfm" TFrmVmsMsgRespMngr *FrmVmsMsgRespMngr = NULL; //--------------------------------------------------------------------------- __fastcall TFrmVmsMsgRespMngr::TFrmVmsMsgRespMngr(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; //FRAMEVmsSchList1->PnlTop->Visible = false; //FRAMEVmsSchList1->PnlBottom->Visible = false; PgVmsSch->Properties->ActivePage = TsEdit; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::SetColorScheme(String ASkinName) { dxSkinController1->SkinName = ASkinName; dxSkinController1->Refresh(); PnlPreview->ParentColor = false; PnlPreview->Color = clBlack; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::CommClose() { try { #if 0 if (m_pEdtDesigner) { delete m_pEdtDesigner; m_pEdtDesigner = NULL; } #endif ClearSymbloList(); SAFE_DELETE(FListSymb); ITSSkin_Term(); //CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::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); //} } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::InitDbLoading() { Application->ProcessMessages(); if (!VmsCtlrManager) { VmsCtlrManager = new TVmsCtlrManager(); } VmsCtlrManager->LoadVmsModlSize(); VmsCtlrManager->LoadFromDb(); #if 0 if (SysCodeManager == NULL) { SysCodeManager = new TSysCodeManager(); } SysCodeManager->LoadFromDb(); if (!VmsTextItemManager) { VmsTextItemManager = new TVmsTextItemManager(); } VmsTextItemManager->LoadFromDb(); #endif if(!CDSFontManager) { CDSFontManager = new TCDSFontManager(); } CDSFontManager->LoadFontInfo(); LoadIncdType(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::FormShow(TObject *Sender) { Refresh(); FormInit(); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::FormInit() { FillIncdTypeList(); FillVmsSizeType(); FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::FillVmsSizeType() { if (!VmsTypeManager) { VmsTypeManager = new TVmsTypeManager(); VmsTypeManager->LoadFromDb(); } CMM_ClearGridTableView(TvModule); TcxDataController *pGDC = TvModule->DataController; TvModule->BeginUpdate(); try { FOR_STL(TVmsType*, pVmsType, VmsTypeManager->FSortLists) { int nRow = pGDC->AppendRecord(); String sTypeCd = pVmsType->VMS_MODL_KIND; String sTypeNm = pVmsType->VMS_MODL_KIND_NM; int nW = pVmsType->VMS_WDTH; int nH = pVmsType->VMS_HGHT; String sModuleInfo = ""; if (pVmsType->USE_LCS == "Y") { sModuleInfo = " [" + sTypeCd + "] " + sTypeNm + " (" + String(nW) + "*" + String(nH) + ") - LCS "; } else { sModuleInfo = " [" + sTypeCd + "] " + sTypeNm + " (" + String(nW) + "*" + String(nH) + ")"; } pGDC->Values[nRow][Column01->Index] = sModuleInfo; pGDC->Values[nRow][Column02->Index] = sTypeCd; pGDC->Values[nRow][Col99->Index] = (int)pVmsType; } } __finally { TvModule->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); FrmVmsMsgRespMngr = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::FormCloseQuery(TObject *Sender, bool &CanClose) { if (FUpdate) { //POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::ClearSymbloList() { FFormLists.RemoveAll(); for(int ii = 0; ii < FListSymb->Count; ii++) { Graphics::TBitmap *bitmap = (Graphics::TBitmap *)FListSymb->Items[ii]; delete bitmap; } FListSymb->Clear(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::BtnSearchClick(TObject *Sender) { RefreshData(); EdFocus->SetFocus(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::RefreshData() { FormClear(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::FormClear() { FSelIdx = -1; EdIncdType->Clear(); EdIncdDtlType->Clear(); EdModlKind->Clear(); GrpSchedule->Caption = lblTitle->Caption;//"¢º ÀÚµ¿ ½ºÄÉÁÙ ¼³Á¤"; GrpMsgList->Caption = lblGrpMsgList->Caption; CMM_ClearGridTableView(TvSche); APP_ImageClear(ImgPreview->Canvas, 0, 0, ImgPreview->Width, ImgPreview->Height, clBlack); FNewDb = false; } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsMsgRespMngr::CheckExistScheduleFormId(String AVmsFormId) { try { TvSche->BeginUpdate(); TcxDataController *pGDC = TvSche->DataController; int nRows = pGDC->RecordCount; for (int ii = 0; ii < nRows; ii++) { String VMS_FORM_ID = VarToStr(pGDC->Values[ii][Col00->Index]); if (AVmsFormId == VMS_FORM_ID) { return true; } } } __finally { TvSche->EndUpdate(); } return false; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::BtnListAddClick(TObject *Sender) { String sUse = "N"; String sTime= "4"; int nSelIdx = CMM_GetRecordIndex(TvList); if (nSelIdx < 0) return; TcxGridDataController *pDcFrm = TvForm->DataController; TcxGridDataController *pDcSch = TvSche->DataController; int nFormIdx = CMM_GetRecordIndex(TvForm); if (nFormIdx < 0) return; String sNewVmsFormId = VarToStr(pDcFrm->Values[nFormIdx][ColFrm00->Index]); String sNewVmsFormNm = VarToStr(pDcFrm->Values[nFormIdx][ColFrm02->Index]); if (CheckExistScheduleFormId(sNewVmsFormId)) { String sMsg = "VMS ´ëÀÀ ¸Þ½ÃÁö °ü¸® - ¸Þ½ÃÁö Ãß°¡ ½ÇÆÐ\r\n\r\n"; sMsg += "¸Þ½ÃÁöID: " + sNewVmsFormId + "\r\n"; sMsg += "¸Þ½ÃÁö¸í: " + sNewVmsFormNm + "\r\n\r\n"; sMsg += "¸Þ½ÃÁö Á¤º¸°¡ ´ëÀÀ¸Þ½ÃÁö¿¡ ÀÌ¹Ì Á¸Àç ÇÕ´Ï´Ù.\r\n´ëÀÀ¸Þ½ÃÁö¿¡´Â ÇϳªÀÇ ¸Þ½ÃÁö Á¤º¸¸¸ °¡´ÉÇÕ´Ï´Ù.\r\n"; Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } int nRow = pDcSch->AppendRecord(); pDcSch->Values[nRow][Col00->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm00->Index]); //ID pDcSch->Values[nRow][Col02->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm02->Index]); //¸íĪ pDcSch->Values[nRow][Col03->Index] = VarToStr(pDcFrm->Values[nFormIdx][ColFrm03->Index]); //Ç¥Ãâ(ÃÊ) pDcSch->Values[nRow][Col01->Index] = pDcFrm->Values[nFormIdx][ColFrm01->Index]; //À̹ÌÁöµ¥ÀÌÅÍÀÓ EditPreviewForm(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::BtnListDeleteClick(TObject *Sender) { int nSelIdx = CMM_GetRecordIndex(TvList); if (nSelIdx < 0) return; #if 0 TcxGridDataController *pDcSch = TvSche->DataController; 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(); } EditPreviewForm(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::BtnSaveClick(TObject *Sender) { String sVmsModlKind = FVmsTypeCd; String sIncdType = EdIncdType->Text.Trim(); String sIncdDtlType = EdIncdDtlType->Text.Trim(); if (sIncdType.IsEmpty()) { Application->MessageBox(L"VMS ´ëÀÀ ¸Þ½ÃÁö °ü¸®\r\nVMS ´ëÀÀ À̺¥Æ® ¸ñ·Ï¿¡¼­ VMS À̺¥Æ®¸¦ ¸ÕÀú ¼±ÅÃÇÑ ÈÄ ÀÛ¾÷À» ÁøÇàÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } if (Application->MessageBox(L"VMS ´ëÀÀ ¸Þ½ÃÁö °ü¸®\r\nVMS ´ëÀÀ ¿øÅ¬¸¯ ¸Þ½ÃÁö¸¦ ÀúÀåÇϽðڽÀ´Ï±î?", FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; ITSDb_GetConnection()->BeginTrans(); if (!DeleteVmsScenario(sVmsModlKind, sIncdType, sIncdDtlType)) { ITSDb_GetConnection()->RollbackTrans(); return; } if (!SaveVmsScenario(sVmsModlKind, sIncdType, sIncdDtlType)) { ITSDb_GetConnection()->RollbackTrans(); return; } ITSDb_GetConnection()->CommitTrans(); Application->MessageBox(L"VMS ´ëÀÀ ¸Þ½ÃÁö °ü¸®\r\nVMS ´ëÀÀ ¿øÅ¬¸¯ ¸Þ½ÃÁö¸¦ ÀúÀåÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); //CMM_SetGridRow(CxList, FRAMEVmsSchList1->TvList, sVmsCtlrId, FRAMEVmsSchList1->Column01->Index); DisplayRespMessage(); } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsMsgRespMngr::SaveVmsScenario(String AVmsModlKind, String AIncdType, String AIncdDtlType) { String sQry; TADOQuery *pADO = NULL; TcxDataController *pGDC = TvSche->DataController; sQry = "INSERT INTO TB_VMS_INCD_RES_FORM ( \r\n" " INCD_TYPE, \r\n" " VMS_MODL_KIND, \r\n" " SN, \r\n" " VMS_FORM_ID, \r\n" " RGSTR_ID, \r\n" " REG_DT ) \r\n" " VALUES ( \r\n" " :p01, \r\n" " :p03, \r\n" " :p04, \r\n" " :p05, \r\n" " :p06, \r\n" " SYSDATE ) \r\n"; try { TvSche->BeginUpdate(); int nRows = pGDC->RecordCount; try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); for (int ii = 0; ii < nRows; ii++) { int SN = ii+1; String VMS_FORM_ID = VarToStr(pGDC->Values[ii][Col00->Index]); String RGSTR_ID = g_AppCfg.OPER_ID; pADO->Parameters->ParamByName("p01")->Value = AIncdType; pADO->Parameters->ParamByName("p03")->Value = AVmsModlKind; pADO->Parameters->ParamByName("p04")->Value = SN; pADO->Parameters->ParamByName("p05")->Value = VMS_FORM_ID; pADO->Parameters->ParamByName("p06")->Value = RGSTR_ID; pADO->ExecSQL(); } } catch(EDatabaseError &E) { DBERRORMSG("TFrmVmsMsgRespMngr::SaveVmsScenario", String(E.ClassName()), E.Message, sQry); return false; } catch(Exception &e) { DBERRORMSG("TFrmVmsMsgRespMngr::SaveVmsScenario", String(e.ClassName()), e.Message, sQry); return false; } } __finally { if (pADO) { pADO->Close(); delete pADO; } TvSche->EndUpdate(); } return true; } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsMsgRespMngr::DeleteVmsScenario(String AVmsModlKind, String AIncdType, String AIncdDtlType) { String sQry; TADOQuery *pADO = NULL; sQry = "DELETE TB_VMS_INCD_RES_FORM \r\n" " WHERE 1=1 \r\n" " AND INCD_TYPE = :p01 \r\n" " AND VMS_MODL_KIND = :p03 \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); pADO->Parameters->ParamByName("p01")->Value = AIncdType; pADO->Parameters->ParamByName("p03")->Value = AVmsModlKind; pADO->ExecSQL(); } catch(EDatabaseError &E) { DBERRORMSG("TFrmVmsMsgRespMngr::DeleteVmsScenario", String(E.ClassName()), E.Message, sQry); return false; } catch(Exception &e) { DBERRORMSG("TFrmVmsMsgRespMngr::DeleteVmsScenario", String(e.ClassName()), e.Message, sQry); return false; } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsMsgRespMngr::LoadVmsScheduleInfo(String AVmsModlKind, String AIncdType, String AIncdDtlType) { String sQry; TADOQuery *pADO = NULL; CMM_ClearGridTableView(TvSche); CMM_ClearGridTableView(TvView); TcxDataController *pDcSch = TvSche->DataController; TcxDataController *pDcViw = TvView->DataController; sQry = "SELECT A.INCD_TYPE, \r\n" " A.VMS_MODL_KIND, A.SN, \r\n" " A.VMS_FORM_ID, B.VMS_FORM_NM, \r\n" " B.VMS_FORM_TYPE, B.DSPL_HR, \r\n" " B.VMS_FORM_IMG \r\n" " FROM TB_VMS_INCD_RES_FORM A, \r\n" " TB_VMS_FORM B \r\n" " WHERE 1=1 \r\n" " AND A.INCD_TYPE = :p01 \r\n" " AND A.VMS_MODL_KIND = :p03 \r\n" " AND A.VMS_FORM_ID = B.VMS_FORM_ID \r\n" " ORDER BY A.SN \r\n"; try { TvSche->BeginUpdate(); TvView->BeginUpdate(); int nRowS, nRowV; try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", AIncdType); ITSDb_SQLBind(pADO, "p03", AVmsModlKind); ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { nRowS = pDcSch->AppendRecord(); nRowV = pDcViw->AppendRecord(); pDcSch->Values[nRowS][Col00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString; pDcSch->Values[nRowS][Col02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString; pDcSch->Values[nRowS][Col03->Index] = pADO->FieldByName("DSPL_HR")->AsString; pDcSch->Values[nRowS][Col01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant; pDcViw->Values[nRowV][ColView00->Index] = pADO->FieldByName("VMS_FORM_ID")->AsString; pDcViw->Values[nRowV][ColView02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString; pDcViw->Values[nRowV][ColView03->Index] = pADO->FieldByName("DSPL_HR")->AsString; pDcViw->Values[nRowV][ColView01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant; } } catch(EDatabaseError &E) { DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsScheduleInfo", String(E.ClassName()), E.Message, sQry); return false; } catch(Exception &e) { DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsScheduleInfo", String(e.ClassName()), e.Message, sQry); return false; } } __finally { if (pADO) { pADO->Close(); delete pADO; } TvSche->EndUpdate(); TvView->EndUpdate(); } return true; } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsMsgRespMngr::LoadVmsFormList(String AFormSizeCd) { ClearSymbloList(); CMM_ClearGridTableView(TvForm); String sQry; TADOQuery *pADO = NULL; // µ¹¹ßÆû¸¸ Á¶È¸ sQry = "SELECT A.VMS_FORM_ID, A.VMS_MODL_KIND, A.VMS_FORM_TYPE, A.VMS_FORM_NM, \r\n" " A.VMS_FORM_IMG, \r\n" " A.DSPL_EFF, NVL(A.DSPL_HR, 0) AS DSPL_HR, A.BACK_CLR, \r\n" " NVL(B.FORM_TYPE_NM, A.VMS_FORM_TYPE) AS FORM_TYPE_NM, \r\n" " NVL(C.FORM_TYPE_NM, A.DSPL_EFF) AS DSPL_EFF_NM, \r\n" " NVL(D.VMS_MODL_KIND_NM, A.VMS_MODL_KIND) AS VMS_MODL_KIND_NM \r\n" " FROM TB_VMS_FORM A, \r\n" " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n" " FROM TB_SYS_CD \r\n" " WHERE CLSS_CD = 'VMS_FORM_TYPE_CD') B, \r\n" " (SELECT CODE_NO, CD_NM AS FORM_TYPE_NM \r\n" " FROM TB_SYS_CD \r\n" " WHERE CLSS_CD = 'VMS_FORM_DSPL_EFF_CD') C, \r\n" " TB_VMS_MODL_KIND D \r\n" " WHERE 1=1 \r\n" " AND A.VMS_FORM_TYPE IN ('I', 'P', 'E') \r\n" " AND A.VMS_FORM_TYPE = B.CODE_NO(+) \r\n" " AND A.DSPL_EFF = C.CODE_NO(+) \r\n" " AND A.VMS_MODL_KIND = D.VMS_MODL_KIND(+) \r\n" " AND A.VMS_MODL_KIND = :p01 \r\n" " ORDER BY A.VMS_MODL_KIND, A.VMS_FORM_ID \r\n"; try { TvForm->BeginUpdate(); TcxDataController *pGDC = TvForm->DataController; int nRow; try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLBind(pADO, "p01", AFormSizeCd); ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { nRow = pGDC->AppendRecord(); String VMS_FORM_ID = pADO->FieldByName("VMS_FORM_ID")->AsString; pGDC->Values[nRow][ColFrm00->Index] = VMS_FORM_ID; pGDC->Values[nRow][ColFrm02->Index] = pADO->FieldByName("VMS_FORM_NM")->AsString; pGDC->Values[nRow][ColFrm03->Index] = pADO->FieldByName("DSPL_HR")->AsString; pGDC->Values[nRow][ColFrm09->Index] = pADO->FieldByName("FORM_TYPE_NM")->AsString; pGDC->Values[nRow][ColFrm01->Index] = pADO->FieldByName("VMS_FORM_IMG")->AsVariant; TFormImage *pImage = new TFormImage(); pImage->formId = VMS_FORM_ID; pImage->bitmap = new Graphics::TBitmap; try { pImage->bitmap->LoadFromStream(pADO->CreateBlobStream(pADO->FieldByName("VMS_FORM_IMG"), bmRead)); } catch(Exception &e) { delete pImage->bitmap; pImage->bitmap = NULL; } FFormLists.Push(pImage->formId, pImage); } } catch(EDatabaseError &E) { DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsFormList", String(E.ClassName()), E.Message, sQry); return false; } catch(Exception &e) { DBERRORMSG("TFrmVmsMsgRespMngr::LoadVmsFormList", String(e.ClassName()), e.Message, sQry); return false; } } __finally { if (pADO) { pADO->Close(); delete pADO; } TvForm->EndUpdate(); } return true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::cxGridColumn172CustomDrawCell(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 TFrmVmsMsgRespMngr::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(); } EditPreviewForm(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::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(); } EditPreviewForm(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::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]); LoadPreviewForm(sVmsFormId); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::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 TFrmVmsMsgRespMngr::LoadPreviewForm(String AVmsFormId) { TFormImage *pImage = FFormLists.Find(AVmsFormId); LockWindowUpdate(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 TFrmVmsMsgRespMngr::EditPreviewForm() { CMM_ClearGridTableView(TvView); TcxDataController *pDcSch = TvSche->DataController; TcxDataController *pDcViw = TvView->DataController; try { TvSche->BeginUpdate(); TvView->BeginUpdate(); int nRowS, nRowV; try { for(nRowS = 0; nRowS < pDcSch->RecordCount; nRowS++) { nRowV = pDcViw->AppendRecord(); pDcViw->Values[nRowV][ColView00->Index] = pDcSch->Values[nRowS][Col00->Index]; pDcViw->Values[nRowV][ColView02->Index] = pDcSch->Values[nRowS][Col02->Index]; pDcViw->Values[nRowV][ColView03->Index] = pDcSch->Values[nRowS][Col03->Index]; pDcViw->Values[nRowV][ColView01->Index] = pDcSch->Values[nRowS][Col01->Index]; } } catch(Exception &e) { } } __finally { TvSche->EndUpdate(); TvView->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::ChkAutoWidthPropertiesChange(TObject *Sender) { try { LockWindowUpdate(Handle); TvView->BeginUpdate(); if (ChkAutoWidth->Checked) { //TvView->OptionsView->DataRowHeight = 58; TvView->OptionsView->CellAutoHeight = false; } else { TvView->OptionsView->DataRowHeight = 0; TvView->OptionsView->CellAutoHeight = true; } TvView->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked; } __finally { TvView->EndUpdate(); LockWindowUpdate(0); //BtnBestFit->Visible = !ChkAutoWidth->Checked; } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::BtnBestFitClick(TObject *Sender) { try { LockWindowUpdate(Handle); TvView->BeginUpdate(); TvView->ApplyBestFit(NULL, false, false); TvView->EndUpdate(); } __finally { LockWindowUpdate(0); } } //--------------------------------------------------------------------------- bool __fastcall TFrmVmsMsgRespMngr::LoadIncdType() { #if 0 TIncdCode *code1 = new TIncdCode(1, "»ç°í"); code1->FLists.Push(0, new TIncdSubCode(0, "»ç°í")); TIncdCode *code2 = new TIncdCode(2, "°ø»ç"); code2->FLists.Push(0, new TIncdSubCode(0, "°ø»ç")); TIncdCode *code3 = new TIncdCode(3, "Çà»ç"); code3->FLists.Push(0, new TIncdSubCode(0, "Çà»ç")); TIncdCode *code4 = new TIncdCode(4, "±â»ó"); code4->FLists.Push(0, new TIncdSubCode(0, "±â»ó")); FIncdLists.Push(code1->INCD_TYPE, code1); FIncdLists.Push(code2->INCD_TYPE, code2); FIncdLists.Push(code3->INCD_TYPE, code3); FIncdLists.Push(code4->INCD_TYPE, code4); #endif String sQry; TADOQuery *pADO = NULL; #if 0 sQry = "SELECT B.CLSS_CD, B.CODE_NO AS INCD_TYPE, B.CD_NM AS INCD_NAME, \r\n" " A.CODE_NO AS INCD_DTL_TYPE, A.CD_NM AS INCD_DTL_NAME \r\n" " FROM TB_SYS_CD A, \r\n" " (SELECT CLSS_CD, CODE_NO, CD_NM, CD_VAL_1 \r\n" " FROM TB_SYS_CD \r\n" " WHERE CLSS_CD = 'INCD_TYPE_CD') B \r\n" " WHERE A.CLSS_CD = B.CD_VAL_1 \r\n" " ORDER BY B.CODE_NO, TO_NUMBER(A.CODE_NO) \r\n"; #endif sQry = "SELECT A.CODE_NO AS INCD_TYPE, A.CD_NM AS INCD_NAME \r\n" " FROM TB_SYS_CD A \r\n" " WHERE A.CLSS_CD = 'INCD_TYPE_CD' \r\n" " ORDER BY TO_NUMBER(A.CODE_NO) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { int INCD_TYPE = pADO->FieldByName("INCD_TYPE")->AsInteger; String INCD_NAME = pADO->FieldByName("INCD_NAME")->AsString; #if 0 int INCD_DTL_TYPE = pADO->FieldByName("INCD_DTL_TYPE")->AsInteger; String INCD_DTL_NAME = pADO->FieldByName("INCD_DTL_NAME")->AsString; TIncdCode *pCode = FIncdLists.Find(INCD_TYPE); if (pCode == NULL) { pCode = new TIncdCode(INCD_TYPE, INCD_NAME); FIncdLists.Push(pCode->INCD_TYPE, pCode); } pCode->FLists.Push(INCD_DTL_TYPE, new TIncdSubCode(INCD_DTL_TYPE, INCD_DTL_NAME)); #endif TIncdCode *pCode = new TIncdCode(INCD_TYPE, INCD_NAME); FIncdLists.Push(pCode->INCD_TYPE, pCode); } } catch(EDatabaseError &E) { DBERRORMSG("TFrmVmsMsgRespMngr::LoadIncdType", String(E.ClassName()), E.Message, sQry); return false; } catch(Exception &e) { DBERRORMSG("TFrmVmsMsgRespMngr::LoadIncdType", String(e.ClassName()), e.Message, sQry); return false; } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::FillIncdTypeList() { CMM_ClearGridTableView(TvList); int nRow = 0; TcxDataController *pGDC = TvList->DataController; TvList->BeginUpdate(); try { FOR_STL(TIncdCode*, pCode, FIncdLists) { //FOR_STL(TIncdSubCode*, pSubCode, pCode->FLists) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColIncd->Index] = String(pCode->INCD_TYPE); pGDC->Values[nRow][ColIncdNm->Index] = pCode->INCD_NAME; pGDC->Values[nRow][ColIncdType->Index] = pCode->INCD_TYPE; //pGDC->Values[nRow][ColIncdDtlType->Index] = pCode->INCD_TYPE; pGDC->Values[nRow][Column99->Index] = (int)pCode; //} } } __finally { TvList->EndUpdate(); //TvList->DataController->GotoFirst(); //TvList->DataController->FocusedRecordIndex = 0; CMM_ExpandCollapseChk(TvList, true); } } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::ChkExpandClick(TObject *Sender) { CMM_ExpandCollapseChk(TvList, ChkExpand->Checked); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::TvListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (!AFocusedRecord) return; DisplayRespMessage(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::TvModuleFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (!AFocusedRecord) return; DisplayRespMessage(); } //--------------------------------------------------------------------------- void __fastcall TFrmVmsMsgRespMngr::DisplayRespMessage() { FormClear(); EdIncdType->Text = ""; EdIncdDtlType->Text = ""; EdModlKind->Text = ""; FSelIdx = CMM_GetRecordIndex(TvList); if (FSelIdx < 0) return; TcxDataController *pGDC = TvList->DataController; String sIncd = VarToStr(pGDC->Values[FSelIdx][ColIncd->Index]); String sIncdDtl = VarToStr(pGDC->Values[FSelIdx][ColIncdDtl->Index]); FINCD_TYPE = VarToStr(pGDC->Values[FSelIdx][ColIncdType->Index]); String sIncdNm = VarToStr(pGDC->Values[FSelIdx][ColIncdNm->Index]); FINCD_DTL_TYPE = VarToStr(pGDC->Values[FSelIdx][ColIncdDtlType->Index]); EdIncdType->Text = FINCD_TYPE; EdIncdDtlType->Text = FINCD_DTL_TYPE; EdModlKind->Text = ""; GrpSchedule->Caption = lblTitle->Caption + " (" + sIncd + ": " + sIncdNm + ")"; FSelIdx = CMM_GetRecordIndex(TvModule); if (FSelIdx < 0) return; pGDC = TvModule->DataController; FVMS_MODL_KIND = VarToStr(pGDC->Values[FSelIdx][Column02->Index]); TVmsType *pVmsSizeType = (TVmsType*)(int)pGDC->Values[FSelIdx][Col99->Index]; if (pVmsSizeType == NULL) { return; } GrpMsgList->Caption = lblGrpMsgList->Caption + " (" + FVMS_MODL_KIND + ") "; FVmsTypeCd = pVmsSizeType->VMS_MODL_KIND; FVmsWidth = pVmsSizeType->VMS_WDTH; FVmsHeight = pVmsSizeType->VMS_HGHT; TvView->OptionsView->DataRowHeight = FVmsHeight; if (TvView->OptionsView->DataRowHeight < 48) { TvView->OptionsView->DataRowHeight = 48; } if (TvView->OptionsView->DataRowHeight > 144) { TvView->OptionsView->DataRowHeight = 144; } EdModlKind->Text = FVMS_MODL_KIND; GrpSchedule->Caption = lblTitle->Caption + " (" + sIncd + ": " + sIncdNm + ") - " + FVMS_MODL_KIND; // ¹Ì¸®º¸±â È­¸éÀ» ÃʱâÈ­ ÇÑ´Ù. LockWindowUpdate(Handle); PnlPreview->Width = FVmsWidth; PnlPreview->Height= FVmsHeight; 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); // ¸ðµâÀ¯Çü¿¡ ¸Â´Â Æû Á¤º¸¸¦ ·ÎµùÇÑ´Ù. LoadVmsFormList(FVMS_MODL_KIND); // ¼±ÅÃÇÑ ´ëÀÀ ¸Þ½ÃÁö ½Ã³ª¸®¿À ·ÎµùÇÑ´Ù. LoadVmsScheduleInfo(FVMS_MODL_KIND, FINCD_TYPE, FINCD_DTL_TYPE); } //---------------------------------------------------------------------------