/**************************************************************************** * @source : * @description : **************************************************************************** * DATE AUTHOR DESCRIPTION * -------------------------------------------------------------------------- * 2016/07/10 shjung ÃÖÃÊÀÛ¼º * ****************************************************************************/ //--------------------------------------------------------------------------- #include #include "AppGlobalF.h" #include "ResourceMsgF.h" #pragma hdrstop #include "VMSVIEWMF.h" #include "DMDbF.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "FRAME_VmsListF" #pragma link "dxSkinBlue" #pragma link "dxSkinBlack" #pragma resource "*.dfm" //TVMSVIEWM *VMSVIEWM = NULL; //--------------------------------------------------------------------------- __fastcall TVMSVIEWM::TVMSVIEWM(TComponent* Owner) : TForm(Owner) { ITSSkin_Load(this); FUpdate= false; FTitle = Caption; //"VMS ¸ð´ÏÅ͸µ È­¸é °ü¸®"; EditMode = false; FRAMEVmsList1->PnlTop->Visible = false; FRAMEVmsList1->PnlBottom->Visible = false; FRAMEVmsList1->ColumnSel->Visible = false; FRAMEVmsList1->Column04->Visible = true; FRAMEVmsList1->TvList->OptionsView->ColumnAutoWidth = true; FRAMEVmsList1->TvList->OptionsSelection->MultiSelect = true; FRAMEVmsList1->TvList->OptionsSelection->CellSelect = false; } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::CommClose() { try { //CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::FormShow(TObject *Sender) { Refresh(); FormInit(); ChangeEditMode(1); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::FormInit() { //TvList->OptionsView->NoDataToDisplayInfoText = "<µî·ÏµÇ¾î ÀÖ´Â Á¤º¸°¡ ¾ø½À´Ï´Ù>"; //TvVms->OptionsView->NoDataToDisplayInfoText = "<µî·ÏµÇ¾î ÀÖ´Â Á¤º¸°¡ ¾ø½À´Ï´Ù>"; FRAMEVmsList1->UpdateList(); FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; BtnSearchClick(NULL); } //--------------------------------------------------------------------------- /* * Close ¹öư Ŭ¸¯ À̺¥Æ® Çڵ鷯 * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVMSVIEWM::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); //VMSVIEWM = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::BtnEditClick(TObject *Sender) { if (BtnEdit->Caption == MSG903) { ChangeEditMode(0); FNewDb = false; } else { String sName = EdName->Text; ChangeEditMode(1); if (CMM_FindGridData(TvList->DataController, sName, Col02->Index) >= 0) { CMM_SetGridRow(CxList, TvList, sName, Col02->Index); DisplayInfo(); } } } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::ChangeEditMode(int AEdit) { bool bEnabled = false; switch(AEdit) { case 0: //ÆíÁý¹öưŬ¸¯ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = MSG901; BtnEdit->Hint = MSG902; EditMode = true; } break; case 1: //ÆíÁý[Ãë¼Ò]¹öưŬ¸¯ { FormClear(); //È­¸éÀ» ¸ðµÎ Áö¿î´Ù. BtnEdit->Enabled = false; BtnInsert->Enabled = true; BtnDelete->Enabled = false; BtnSave->Enabled = false; BtnEdit->Caption = MSG903; BtnEdit->Hint = MSG904; //bEnabled = true; EditMode = false; } break; case 2: //Ãß°¡ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; BtnSave->Enabled = true; BtnEdit->Caption = MSG901; BtnEdit->Hint = MSG902; EditMode = true; } break; case 3: //¼öÁ¤¸ðµå { BtnEdit->Enabled = true; BtnInsert->Enabled = true; BtnDelete->Enabled = true; BtnSave->Enabled = false; BtnEdit->Caption = MSG903; BtnEdit->Hint = MSG904; bEnabled = true; EditMode = false; } break; } if (AEdit == 0 || AEdit == 2) { PnlCmd->Enabled = true; } else { PnlCmd->Enabled = false; } } //--------------------------------------------------------------------------- int __fastcall TVMSVIEWM::CheckDupFormName(String ANewName, String AOldName) { int nDupCnt = 0; try { TvList->BeginUpdate(); TcxGridDataController *pGDC = TvList->DataController; int nRows = pGDC->RecordCount; for (int ii = 0; ii < nRows; ii++) { String sFormName = VarToStr(pGDC->Values[ii][Col02->Index]); if (sFormName == AOldName) { continue; } if (sFormName == ANewName) { nDupCnt++; } } } __finally { TvList->EndUpdate(); } return nDupCnt; } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::BtnSaveClick(TObject *Sender) { if (EdName->Text.Trim().IsEmpty()) { Application->MessageBox(MSG100, FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } if (!FNewDb) { if (EdOrgName->Text.Trim().IsEmpty()) { Application->MessageBox(MSG101, FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } } if (TvVms->DataController->RecordCount == 0) { Application->MessageBox(MSG102, FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sOldName = EdOrgName->Text; String sNewName = EdName->Text.Trim(); int nDupCnt; bool bResult = false; if (FNewDb) { nDupCnt = CheckDupFormName(sNewName, ""); } else { nDupCnt = CheckDupFormName(sNewName, sOldName); } if (nDupCnt >= 1) { Application->MessageBox(MSG103, FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } bResult = DelVmsMonitoring(sOldName); if (!bResult) { return; } String sQry; TADOQuery *pADO = NULL; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = DMDb->GetConnection(); sQry = "INSERT INTO TB_VMS_MONITORING ( \r\n" " MONITORING_TYPE, \r\n" " MONITORING_NM, \r\n" " MONITORING_SEQ, \r\n" " VMS_CTLR_NMBR \r\n" " ) \r\n" " VALUES ( \r\n" " :p01, \r\n" " :p02, \r\n" " :p03, \r\n" " :p04 \r\n" " ) \r\n"; DMDb->SQLText(pADO, sQry); DMDb->GetConnection()->BeginTrans(); TcxGridDataController *pGDC = TvVms->DataController; int nRows = pGDC->RecordCount; for (int ii = 0; ii < nRows; ii++) { String sVmsNmbr = VarToStr(pGDC->Values[ii][ColVms2->Index]); DMDb->SQLBind(pADO, "p01", String(FMonitoringType)); DMDb->SQLBind(pADO, "p02", sNewName); DMDb->SQLBind(pADO, "p03", String(ii+1)); DMDb->SQLBind(pADO, "p04", sVmsNmbr); DMDb->SQLExec(pADO); } DMDb->GetConnection()->CommitTrans(); bResult = true; } catch(EDatabaseError &E) { DMDb->GetConnection()->RollbackTrans(); DBERRORMSG("VMS Monitoring Save", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DMDb->GetConnection()->RollbackTrans(); DBERRORMSG("VMS Monitoring Save", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } if (bResult) { Application->MessageBox(MSG104, FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FUpdate = true; LoadVmsMonitoring(); CMM_SetGridRow(CxList, TvList, sNewName, Col02->Index); DisplayInfo(); } } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::BtnInsertClick(TObject *Sender) { FormClear(); EdName->Text = ""; EdOrgName->Text = ""; ChangeEditMode(2); FNewDb = true; } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::BtnDeleteClick(TObject *Sender) { int nIdx = TvList->DataController->FocusedRecordIndex; if (nIdx < 0) return; String sFormName = EdOrgName->Text; if (sFormName.IsEmpty()) { Application->MessageBox(MSG105, FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sMsg; sMsg = MSG106 + sFormName; sMsg+= MSG107; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; if (DelVmsMonitoring(sFormName)) { FUpdate = true; Application->MessageBox(MSG108, FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FormClear(); ChangeEditMode(1); LoadVmsMonitoring(); } } //--------------------------------------------------------------------------- bool __fastcall TVMSVIEWM::DelVmsMonitoring(String AFormName) { String sQry; TADOQuery *pADO = NULL; sQry = "DELETE TB_VMS_MONITORING \r\n" " WHERE MONITORING_TYPE = :p01 \r\n" " AND MONITORING_NM = :p02 \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = DMDb->GetConnection(); DMDb->SQLText(pADO, sQry); DMDb->SQLBind(pADO, "p01", String(FMonitoringType)); DMDb->SQLBind(pADO, "p02", AFormName); pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { DBERRORMSG("VMS Monitoring Delete", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("VMS Monitoring Delete", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return true; } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; DisplayInfo(); } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::TvListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (!AFocusedRecord) return; DisplayInfo(); } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::BtnSearchClick(TObject *Sender) { RefreshData(); EdFocus->SetFocus(); ChangeEditMode(1); } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::RefreshData() { // °Ë»öÁ¶°Ç¿¡ ÀÇÇÑ ¸µÅ© µ¥ÀÌÅÍ Á¶È¸ FormClear(); LoadVmsMonitoring(); } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::LoadVmsMonitoring() { String sQry; TADOQuery *pADO = NULL; CMM_ClearGridTableView(TvList); sQry = "SELECT MONITORING_NM, COUNT(1) AS CNT \r\n" " FROM TB_VMS_MONITORING \r\n" " WHERE MONITORING_TYPE = :p01 \r\n" " GROUP BY MONITORING_NM \r\n" " ORDER BY MONITORING_NM DESC \r\n"; String sFirstFormId = ""; try { int nRow; TcxDataController *pGDC = TvList->DataController; TvList->BeginUpdate(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = DMDb->GetConnection(); DMDb->SQLText(pADO, sQry); DMDb->SQLBind(pADO, "p01", String(FMonitoringType)); DMDb->SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][Col01->Index] = ""; pGDC->Values[nRow][Col02->Index] = pADO->FieldByName("MONITORING_NM")->AsString; pGDC->Values[nRow][Col03->Index] = pADO->FieldByName("CNT")->AsString; } } catch(EDatabaseError &E) { DBERRORMSG("VMS Monitoring Query", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("VMS Monitoring Query", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } TvList->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::FormClear() { CMM_ClearGridTableView(TvVms); EdOrgName->Clear(); EdName->Clear(); FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::DisplayInfo() { FormClear(); int nSelIdx = TvList->DataController->FocusedRecordIndex; if( nSelIdx <= -1 ) return; DisplayFormInfo(nSelIdx); ChangeEditMode(3); } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::DisplayFormInfo(int AIdx) { TcxGridDataController *pDc = TvList->DataController; String sScrName = VarToStr(pDc->Values[AIdx][Col02->Index]); EdName->Text = sScrName; EdOrgName->Text = sScrName; CMM_ClearGridTableView(TvVms); String sQry; TADOQuery *pADO = NULL; sQry = "SELECT A.MONITORING_NM, A.MONITORING_SEQ, \r\n" " A.VMS_CTLR_NMBR, B.VMS_CTLR_ID, B.VMS_NM \r\n" " FROM TB_VMS_MONITORING A, \r\n" " TB_VMS_CTLR B \r\n" " WHERE A.MONITORING_TYPE = :p01 \r\n" " AND A.MONITORING_NM = :p02 \r\n" " AND A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR(+) \r\n" " ORDER BY A.MONITORING_NM, A.MONITORING_SEQ \r\n"; String sFirstFormId = ""; try { int nRow; TcxDataController *pGDC = TvVms->DataController; TvVms->BeginUpdate(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = DMDb->GetConnection(); DMDb->SQLText(pADO, sQry); DMDb->SQLBind(pADO, "p01", String(FMonitoringType)); DMDb->SQLBind(pADO, "p02", sScrName); DMDb->SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColVms1->Index] = pADO->FieldByName("MONITORING_SEQ")->AsString; pGDC->Values[nRow][ColVms2->Index] = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; pGDC->Values[nRow][ColVms3->Index] = pADO->FieldByName("VMS_NM")->AsString; } } catch(EDatabaseError &E) { DBERRORMSG("VMS Monitoring Query", String(E.ClassName()), E.Message, sQry); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { DBERRORMSG("VMS Monitoring Query", String(e.ClassName()), e.Message, sQry); throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } TvVms->EndUpdate(); } } //--------------------------------------------------------------------------- bool __fastcall TVMSVIEWM::FindVmsInfo(String AVmsNmbr) { try { TvVms->BeginUpdate(); for (int ii = 0; ii < TvVms->DataController->RecordCount; ii++) { String sVmsNmbr = VarToStr(TvVms->DataController->Values[ii][ColVms2->Index]); if (sVmsNmbr == AVmsNmbr) return true; } } __finally { TvVms->EndUpdate(); } return false; } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::UpdateVmsSeq() { try { TvVms->BeginUpdate(); for (int ii = 0; ii < TvVms->DataController->RecordCount; ii++) { TvVms->DataController->Values[ii][ColVms1->Index] = String(ii+1); } } __finally { TvVms->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::BtnListAddClick(TObject *Sender) { TcxGridTableView *pSrcList = FRAMEVmsList1->TvList; TcxGridTableView *pDstList = TvVms; 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 sVmsNmbr = VarToStr(pSrcList->DataController->Values[nSelIdx][FRAMEVmsList1->Column01->Index]); String sVmsName = VarToStr(pSrcList->DataController->Values[nSelIdx][FRAMEVmsList1->Column03->Index]); if (FindVmsInfo(sVmsNmbr)) continue; int nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColVms2->Index] = sVmsNmbr; pGDC->Values[nRow][ColVms3->Index] = sVmsName; } } catch(...) { } } __finally { UpdateVmsSeq(); } } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::BtnListDeleteClick(TObject *Sender) { TcxGridTableView *pSrcList = TvVms; 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(); UpdateVmsSeq(); } } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::BtnUpClick(TObject *Sender) { try { TvVms->BeginUpdate(); int nCurIdx = TvVms->DataController->FocusedRowIndex;//FocusedRecordIndex; if (nCurIdx <= 0) { return; } int nUpIdx = nCurIdx-1; try { String sVal1 = VarToStr(TvVms->DataController->Values[nCurIdx][ColVms1->Index]); String sVal2 = VarToStr(TvVms->DataController->Values[nCurIdx][ColVms2->Index]); String sVal3 = VarToStr(TvVms->DataController->Values[nCurIdx][ColVms3->Index]); TvVms->DataController->Values[nCurIdx][ColVms1->Index] = TvVms->DataController->Values[nUpIdx][ColVms1->Index]; TvVms->DataController->Values[nCurIdx][ColVms2->Index] = TvVms->DataController->Values[nUpIdx][ColVms2->Index]; TvVms->DataController->Values[nCurIdx][ColVms3->Index] = TvVms->DataController->Values[nUpIdx][ColVms3->Index]; TvVms->DataController->Values[nUpIdx][ColVms1->Index] = sVal1; TvVms->DataController->Values[nUpIdx][ColVms2->Index] = sVal2; TvVms->DataController->Values[nUpIdx][ColVms3->Index] = sVal3; TvVms->Controller->ClearSelection(); TvVms->Controller->FocusedRowIndex = nUpIdx; TvVms->ViewData->Records[nUpIdx]->Focused = true; TvVms->ViewData->Records[nUpIdx]->Selected = true; CxVms->SetFocus(); } catch(...) { } } __finally { TvVms->EndUpdate(); UpdateVmsSeq(); } } //--------------------------------------------------------------------------- void __fastcall TVMSVIEWM::BtnDownClick(TObject *Sender) { try { TvVms->BeginUpdate(); int nCurIdx = TvVms->DataController->FocusedRowIndex;//FocusedRecordIndex; if (nCurIdx < 0) { return; } if (nCurIdx == TvVms->DataController->RecordCount-1) { return; } int nDnIdx = nCurIdx+1; try { String sVal1 = VarToStr(TvVms->DataController->Values[nCurIdx][ColVms1->Index]); String sVal2 = VarToStr(TvVms->DataController->Values[nCurIdx][ColVms2->Index]); String sVal3 = VarToStr(TvVms->DataController->Values[nCurIdx][ColVms3->Index]); TvVms->DataController->Values[nCurIdx][ColVms1->Index] = TvVms->DataController->Values[nDnIdx][ColVms1->Index]; TvVms->DataController->Values[nCurIdx][ColVms2->Index] = TvVms->DataController->Values[nDnIdx][ColVms2->Index]; TvVms->DataController->Values[nCurIdx][ColVms3->Index] = TvVms->DataController->Values[nDnIdx][ColVms3->Index]; TvVms->DataController->Values[nDnIdx][ColVms1->Index] = sVal1; TvVms->DataController->Values[nDnIdx][ColVms2->Index] = sVal2; TvVms->DataController->Values[nDnIdx][ColVms3->Index] = sVal3; TvVms->Controller->ClearSelection(); TvVms->Controller->FocusedRowIndex = nDnIdx; TvVms->ViewData->Records[nDnIdx]->Focused = true; TvVms->ViewData->Records[nDnIdx]->Selected = true; CxVms->SetFocus(); } catch(...) { } } __finally { TvVms->EndUpdate(); UpdateVmsSeq(); } } //---------------------------------------------------------------------------