//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #include "ITSLangTransF.h" #include "WindowMsgF.h" #include "CDSVmsEvspF.h" #pragma hdrstop #include "VMSMA10MF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxButtons" #pragma link "cxClasses" #pragma link "cxContainer" #pragma link "cxControls" #pragma link "cxCustomData" #pragma link "cxData" #pragma link "cxDataStorage" #pragma link "cxEdit" #pragma link "cxFilter" #pragma link "cxGraphics" #pragma link "cxGrid" #pragma link "cxGridCustomTableView" #pragma link "cxGridCustomView" #pragma link "cxGridLevel" #pragma link "cxGridTableView" #pragma link "cxGroupBox" #pragma link "cxLabel" #pragma link "cxLookAndFeelPainters" #pragma link "cxLookAndFeels" #pragma link "cxSplitter" #pragma link "cxStyles" #pragma link "cxTextEdit" #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 "FRAME_VmsEvspListF" #pragma link "FRAME_VmsListF" #pragma link "cxDropDownEdit" #pragma resource "*.dfm" TVMSMA10M *VMSMA10M = NULL; //--------------------------------------------------------------------------- __fastcall TVMSMA10M::TVMSMA10M(TComponent* Owner) : TForm(Owner) { LangTrans->Translate(this, ITSDb_GetConnection()); ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); FUpdate= false; FTitle = Caption;//"VMS Á¤º¸Á¦°ø±¸°£ ¼³Á¤"; ColLink8->Visible = false; ColLink9->Visible = false; Panel7->Visible = false; VmsCtlrManager->LoadEvspRltn(); //FRAMEVmsList1->Column02->Visible = false; FRAMEVmsList1->PnlTop->Visible = false; FRAMEVmsList1->PnlBottom->Visible = false; FRAMEVmsList1->ColumnSel->Visible = false; FRAMEVmsList1->Column14->Visible = false; FRAMEVmsEvspList1->PnlTop->Visible = false; FRAMEVmsEvspList1->PnlBottom->Visible = false; FRAMEVmsEvspList1->ColumnSel->Visible = false; FRAMEVmsEvspList1->TvList->OptionsSelection->MultiSelect = true; FRAMEVmsEvspList1->TvList->OptionsSelection->CellSelect = false; m_pGDC = FRAMEVmsList1->TvList->DataController; EditMode = false; } //--------------------------------------------------------------------------- /* * ´Ý±â¹öư À̳ª x¹öư Ŭ¸¯½Ã °øÅëÀ¸·Î ó¸®ÇÏ´Â ·ÎÁ÷À̵é¾î°£´Ù.. * Form°ú DataModule class¸¦ delete½ÃŲ´Ù. * arguments * * return * void */ void __fastcall TVMSMA10M::CommClose() { try { CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- /* * FormÀ» º¸¿©ÁÙ¶§ È£ÃâµÇ´Â event ¸Þ¼­µåÀÌ´Ù. * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVMSMA10M::FormShow(TObject *Sender) { Refresh(); FormInit(); ChangeEditMode(1); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- /* * form ÃʱâÈ­ * * arguments * * return * void */ void __fastcall TVMSMA10M::FormInit() { EdNmbr->Text = ""; EdId->Text = ""; CMM_ClearGridTableView(TvLink); FNewDb = false; } //--------------------------------------------------------------------------- /* * FormÀÌ ShowµÇ°í ³­ ÈÄ ÃÖÃÊ 1ȸ ¼öÇàµÇ´Â ŸÀÌ¸Ó À̺¥Æ® * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVMSMA10M::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; FRAMEVmsList1->UpdateList(); FRAMEVmsEvspList1->UpdateList(); } //--------------------------------------------------------------------------- /* * Close ¹öư Ŭ¸¯ À̺¥Æ® Çڵ鷯 * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVMSMA10M::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); VMSMA10M = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::FormCloseQuery(TObject *Sender, bool &CanClose) { if (FUpdate) { CComm_VmsIfscUpdate(); POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } FRAMEVmsList1->OnCloseQuery(CanClose); } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::DisplayInfo(TVmsCtlr* AObj) { FormInit(); if (!AObj) return; EdNmbr->Text = String(AObj->VMS_CTLR_NMBR); EdId->Text = AObj->VMS_CTLR_ID; try { int nRow; TcxDataController *pGDC = TvLink->DataController; TvLink->BeginUpdate(); int ii = 0; FOR_STL(TVmsEvspRltn *, pObj, AObj->FEvspRltn) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColLink1->Index] = String(ii+1); pGDC->Values[nRow][ColLink2->Index] = String(pObj->VMS_EVSP_ID); TVmsEvsp *pEvsp = VmsEvspManager->FLists.Find(pObj->VMS_EVSP_ID); if (pEvsp) { pGDC->Values[nRow][ColLink3->Index] = pEvsp->VMS_EVSP_NM; pGDC->Values[nRow][ColLink7->Index] = pEvsp->AXIS_YN; } else { pGDC->Values[nRow][ColLink3->Index] = "-???-"; pGDC->Values[nRow][ColLink7->Index] = "N"; } //pGDC->Values[nRow][ColLink8->Index] = pObj->CNGS_CNFM_YN; //pGDC->Values[nRow][ColLink9->Index] = String(pObj->CNGS_CNFM_SPED); ii++; } } __finally { TvLink->EndUpdate(); } ChangeEditMode(3); } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::BtnEditClick(TObject *Sender) { if (BtnEdit->Caption == FrmLang->lblEdit->Caption)//"ÆíÁý") { ChangeEditMode(0); FNewDb = false; } else { String sId = EdId->Text; ChangeEditMode(1); TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(sId); if (pObj) { CMM_SetGridRow(FRAMEVmsList1->CxList, FRAMEVmsList1->TvList, sId, FRAMEVmsList1->Column01->Index); DisplayInfo(pObj); } } } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::ChangeEditMode(int AEdit) { bool bEnabled = false; switch(AEdit) { case 0: //ÆíÁý¹öưŬ¸¯ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; PnlCmd->Enabled = true; BtnSave->Enabled = true; BtnEdit->Caption = FrmLang->lblCancel->Caption;//"Ãë¼Ò"; BtnEdit->Hint = FrmLang->lblCancel->Hint;//µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; EditMode = true; } break; case 1: //ÆíÁý[Ãë¼Ò]¹öưŬ¸¯ { FormInit(); //È­¸éÀ» ¸ðµÎ Áö¿î´Ù. BtnEdit->Enabled = false; BtnInsert->Enabled = true; BtnDelete->Enabled = false; PnlCmd->Enabled = false; BtnSave->Enabled = false; BtnEdit->Caption = FrmLang->lblEdit->Caption;//"ÆíÁý"; BtnEdit->Hint = FrmLang->lblEdit->Hint;//µ¥ÀÌÅÍ ÆíÁý"; //bEnabled = true; EditMode = false; } break; case 2: //Ãß°¡ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; PnlCmd->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = FrmLang->lblCancel->Caption;//"Ãë¼Ò"; BtnEdit->Hint = FrmLang->lblCancel->Hint;//µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; EditMode = true; } break; case 3: //¼öÁ¤¸ðµå { BtnEdit->Enabled = true; BtnInsert->Enabled = true; BtnDelete->Enabled = true; PnlCmd->Enabled = true; BtnSave->Enabled = false; BtnEdit->Caption = FrmLang->lblEdit->Caption;//"ÆíÁý"; BtnEdit->Hint = FrmLang->lblEdit->Hint;//µ¥ÀÌÅÍ ÆíÁý"; bEnabled = true; EditMode = false; } break; } if (AEdit == 0 || AEdit == 2) { FRAMEVmsList1->CxList->Enabled = false; PnlCmd->Enabled = true; } else { FRAMEVmsList1->CxList->Enabled = true; PnlCmd->Enabled = false; } //PnlEdit->Enabled = EditMode; } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::BtnSaveClick(TObject *Sender) { String sNmbr = EdNmbr->Text; String sId = EdId->Text; int nNmbr = sNmbr.ToInt(); TVmsCtlr *pVms; pVms = VmsCtlrManager->FLists.Find(sNmbr); if (!pVms) return; int nOrgCnt = pVms->FEvspRltn.Size(); int nSrcCnt = TvLink->DataController->RecordCount; if (nOrgCnt == 0 && nSrcCnt == 0) { Application->MessageBox(lblText1->Caption.c_str(),//L"VMSÁ¤º¸Á¦°ø±¸°£ ¼³Á¤\r\nÀúÀåÇÒ µ¥ÀÌÅͰ¡ ¾ø½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } if (Application->MessageBox(lblText2->Caption.c_str(),//L"VMSÁ¤º¸Á¦°ø±¸°£ ¼³Á¤\r\nVMSÁ¤º¸Á¦°ø±¸°£ ¼³Á¤ Á¤º¸¸¦ ÀúÀåÇϽðڽÀ´Ï±î?", FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; bool bResult = false; try { pVms->FEvspRltn.RemoveAll(); try { TvLink->BeginUpdate(); int nPrrt = 1; for (int ii = 0; ii < TvLink->DataController->RecordCount; ii++) { String sIfscId = VarToStr(TvLink->DataController->Values[ii][ColLink2->Index]); TVmsEvspRltn *pObj = new TVmsEvspRltn(); if (pObj) { pObj->VMS_CTLR_NMBR = pVms->VMS_CTLR_NMBR; pObj->VMS_EVSP_ID = sIfscId.ToInt(); pObj->CNGS_CNFM_YN = "Y";//VarToStr(TvLink->DataController->Values[ii][ColLink8->Index]); pObj->CNGS_CNFM_SPED = 5;//VarToStr(TvLink->DataController->Values[ii][ColLink9->Index]).ToIntDef(5); pObj->DSPL_PRRT = nPrrt++; pVms->FEvspRltn.Push(pObj->DSPL_PRRT, pObj); } } } __finally { TvLink->EndUpdate(); } bResult = VmsCtlrManager->SaveEvspRltn(pVms); } catch(Exception &e) { throw Exception(String(e.ClassName()) + e.Message); } if (bResult) { Application->MessageBox(lblText3->Caption.c_str(),//L"VMSÁ¤º¸Á¦°ø±¸°£ ¼³Á¤\r\nVMSÁ¤º¸Á¦°ø±¸°£ ¼³Á¤ Á¤º¸¸¦ ÀúÀå ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FUpdate = true; CMM_SetGridRow(FRAMEVmsList1->CxList, FRAMEVmsList1->TvList, sId, FRAMEVmsList1->Column01->Index); DisplayInfo(pVms); POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::FRAMEVmsList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; int nRow = FRAMEVmsList1->TvList->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; int nMemPtr = FRAMEVmsList1->TvList->DataController->Values[nRow][FRAMEVmsList1->Column99->Index]; TVmsCtlr* pObj = (TVmsCtlr*)nMemPtr; DisplayInfo(pObj); } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::UpdateEvspRltnSeq() { try { TvLink->BeginUpdate(); for (int ii = 0; ii < TvLink->DataController->RecordCount; ii++) { TvLink->DataController->Values[ii][ColLink1->Index] = String(ii+1); } } __finally { TvLink->EndUpdate(); } } //--------------------------------------------------------------------------- bool __fastcall TVMSMA10M::FindEvspRltnInfo(String AIfscId) { try { TvLink->BeginUpdate(); for (int ii = 0; ii < TvLink->DataController->RecordCount; ii++) { String sIfscId = VarToStr(TvLink->DataController->Values[ii][ColLink2->Index]); if (sIfscId == AIfscId) return true; } } __finally { TvLink->EndUpdate(); } return false; } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::BtnListAddClick(TObject *Sender) { TcxGridTableView *pSrcList = FRAMEVmsEvspList1->TvList; TcxGridTableView *pDstList = TvLink; int nSelRows = pSrcList->Controller->SelectedRowCount; if (nSelRows <= 0) { return; } try { TcxGridDataController *pGDC = pDstList->DataController; try { for (int ii = 0; ii < nSelRows; ii++) { int nSelIdx = pSrcList->Controller->SelectedRows[ii]->RecordIndex; String sIfscId = VarToStr(pSrcList->DataController->Values[nSelIdx][FRAMEVmsEvspList1->Column01->Index]); String sIfscNm = VarToStr(pSrcList->DataController->Values[nSelIdx][FRAMEVmsEvspList1->Column02->Index]); if (FindEvspRltnInfo(sIfscId)) continue; int nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColLink2->Index] = sIfscId; pGDC->Values[nRow][ColLink3->Index] = sIfscNm; String sAxisYn = VarToStr(pSrcList->DataController->Values[nSelIdx][FRAMEVmsEvspList1->Column05->Index]); pGDC->Values[nRow][ColLink7->Index] = sAxisYn; pGDC->Values[nRow][ColLink8->Index] = (sAxisYn == "Y") ? "N" : "Y"; pGDC->Values[nRow][ColLink9->Index] = "5"; } } catch(...) { } } __finally { UpdateEvspRltnSeq(); } } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::BtnListDeleteClick(TObject *Sender) { TcxGridTableView *pSrcList = TvLink; 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(); if (nFocused >= 0) { pSrcList->Controller->FocusedRowIndex = nFocused; pSrcList->ViewData->Records[nFocused]->Focused = true; pSrcList->ViewData->Records[nFocused]->Selected = true; } //CxLink->SetFocus(); } catch(...) { } } __finally { pSrcList->EndUpdate(); UpdateEvspRltnSeq(); } } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::FRAMEVmsList1TvListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (!AFocusedRecord) return; int nRow = FRAMEVmsList1->TvList->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; int nMemPtr = FRAMEVmsList1->TvList->DataController->Values[nRow][FRAMEVmsList1->Column99->Index]; TVmsCtlr* pObj = (TVmsCtlr*)nMemPtr; DisplayInfo(pObj); } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::EdCngsSpdKeyPress(TObject *Sender, wchar_t &Key) { if (Key > '9' || Key < '0') { if (Key != VK_BACK && Key != VK_TAB && Key != '-') Key = 0; } } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::BtnSaveCngsSpdClick(TObject *Sender) { #if 0 String sMsg; sMsg = ""; sMsg+= "\r\nÁ¦°ø±¸°£ Á¤Ã¼Æû Á¤Ã¼ÆÇÁ¤ ¼ÓµµÁ¤º¸¸¦ Àüü Á¦°ø±¸°£¿¡ µ¿ÀÏÇÏ°Ô Àû¿ë ÇϽðڽÀ´Ï±î?";//lblText10->Caption;//"Á¦°ø±¸°£ ¼ÓµµÁ¤º¸¸¦ Àüü Á¦°ø±¸°£¿¡ µ¿ÀÏÇÏ°Ô Àû¿ë ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; if (EdCngsSpd->Text.Trim() == "" || EdCngsSpd->Text.Trim() == "0") { Application->MessageBox(L"¼ÓµµÁ¤º¸°¡ Á¤È®ÇÏÁö ¾Ê½À´Ï´Ù.\r\n¼ÓµµÁ¤º¸¸¦ È®ÀÎÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } int CngsSpd = EdCngsSpd->Text.ToIntDef(0); try { if (VmsCtlrManager->UpdateIfscCngsSpeedInfo(CngsSpd)) { FUpdate = true; FOR_STL(TVmsCtlr*, pTmpObj, VmsCtlrManager->FLists) { FOR_STL(TVmsIfscRltn *, pLink, pTmpObj->FIfscRltn) { pLink->CNGS_CNFM_SPED = CngsSpd; } } TVmsCtlr *pObj = VmsCtlrManager->FLists.Find(EdNmbr->Text); if (pObj) { DisplayInfo(pObj); } Application->MessageBox(L"Á¦°ø±¸°£ Á¤Ã¼Æû Á¤Ã¼ÆÇÁ¤ ¼ÓµµÁ¤º¸ÀúÀå\r\nÁ¦°ø±¸°£ Á¤Ã¼Æû Á¤Ã¼ÆÇÁ¤ ¼Óµµ Á¤º¸¸¦ Àüü Á¦°ø±¸°£¿¡ Àû¿ë ÇÏ¿´½À´Ï´Ù.",//lblText11->Caption.c_str(),//L"Á¦°ø±¸°£ ¼ÓµµÁ¤º¸ÀúÀå\r\nÁ¦°ø±¸°£ ¼Óµµ Á¤º¸¸¦ Àüü Á¦°ø±¸°£¿¡ Àû¿ë ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); } } __finally { } #endif } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::ColLink7CustomDrawCell(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 sData = AViewInfo->GridRecord->DisplayTexts[nItemIdx]; if (sData == "Y") { ACanvas->Canvas->Brush->Color = clLime; } } catch(Exception &e) { } } //--------------------------------------------------------------------------- void __fastcall TVMSMA10M::ColLink8CustomDrawCell(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 sData = AViewInfo->GridRecord->DisplayTexts[nItemIdx]; if (sData == "Y") { ACanvas->Canvas->Brush->Color = clLime; } } catch(Exception &e) { } } //---------------------------------------------------------------------------