/**************************************************************************** * @source : * @description : **************************************************************************** * DATE AUTHOR DESCRIPTION * -------------------------------------------------------------------------- * 2016/07/10 shjung ÃÖÃÊÀÛ¼º * ****************************************************************************/ //--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "ITSUtilF.h" #include "AppGlobalF.h" #pragma hdrstop #include "VMSM900MF.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 "cxCalc" #pragma resource "*.dfm" TVMSM900M *VMSM900M = NULL; //--------------------------------------------------------------------------- __fastcall TVMSM900M::TVMSM900M(TComponent* Owner) : TForm(Owner) { ITSSkin_Load(this); CMM_LoadForm(g_sFormsDir, this); FUpdate= false; FTitle = "VMS ÈÖµµ¼³Á¤ ½ºÄÉÁÙ °ü¸®"; EditMode = false; FillVmsList(); } //--------------------------------------------------------------------------- /* * ´Ý±â¹öư À̳ª x¹öư Ŭ¸¯½Ã °øÅëÀ¸·Î ó¸®ÇÏ´Â ·ÎÁ÷À̵é¾î°£´Ù.. * Form°ú DataModule class¸¦ delete½ÃŲ´Ù. * arguments * * return * void */ void __fastcall TVMSM900M::CommClose() { try { CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- /* * FormÀ» º¸¿©ÁÙ¶§ È£ÃâµÇ´Â event ¸Þ¼­µåÀÌ´Ù. * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVMSM900M::FormShow(TObject *Sender) { Refresh(); FormInit(); ChangeEditMode(1); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- /* * form ÃʱâÈ­ * * arguments * * return * void */ void __fastcall TVMSM900M::FormInit() { EdNmbr->Text = ""; EdTime->Text = ""; CbVms->ItemIndex = 0; SeLuminance->Value = 0; CbUseYn->ItemIndex = 0; CxSchTime->Clear(); CxSchTime->EditValue = Now().FormatString("hh:nn"); CxSchTime->EditValue = "00:00"; FNewDb = false; } //--------------------------------------------------------------------------- /* * FormÀÌ ShowµÇ°í ³­ ÈÄ ÃÖÃÊ 1ȸ ¼öÇàµÇ´Â ŸÀÌ¸Ó À̺¥Æ® * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVMSM900M::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; UpdateList(); } //--------------------------------------------------------------------------- /* * Close ¹öư Ŭ¸¯ À̺¥Æ® Çڵ鷯 * arguments * Sender : event handler °´Ã¼ * return * void */ void __fastcall TVMSM900M::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); VMSM900M = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::FormCloseQuery(TObject *Sender, bool &CanClose) { if (FUpdate) { POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0); } } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::DisplayInfo() { FormInit(); int nRow = TvList->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; String VmsNo = TvList->DataController->Values[nRow][Column01->Index]; String SchTm = TvList->DataController->Values[nRow][Column07->Index]; int Lumin = TvList->DataController->Values[nRow][Column08->Index]; String UseYn = TvList->DataController->Values[nRow][Column09->Index]; APP_SetCode(CbVms, VmsNo); APP_SetCode(CbUseYn, UseYn); SeLuminance->Value = Lumin; EdNmbr->Text = VmsNo; EdTime->Text = SchTm; try { if (SchTm.Length() == 4) // ÀüÆÎ°üON½Ã°¢ { SchTm.Insert(":", 3); CxSchTime->EditValue = SchTm; } } catch(Exception &e) { } ChangeEditMode(3); } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::BtnEditClick(TObject *Sender) { if (BtnEdit->Caption == MSG903) { ChangeEditMode(0); FNewDb = false; } else { String VmsNo = EdNmbr->Text; String SchTm = EdTime->Text; ChangeEditMode(1); CMM_SetGridDataFocus2(TvList->DataController, VmsNo, Column01->Index, SchTm, Column07->Index); DisplayInfo(); } } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::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: //ÆíÁý[Ãë¼Ò]¹öưŬ¸¯ { FormInit(); //È­¸éÀ» ¸ðµÎ Áö¿î´Ù. 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 == 2) { CbVms->Enabled = true; CxSchTime->Enabled = true; } else { CbVms->Enabled = false; CxSchTime->Enabled = false; } if (AEdit == 0 || AEdit == 2) { CxList->Enabled = false; } else { CxList->Enabled = true; } PnlEdit->Enabled = EditMode; } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::BtnInsertClick(TObject *Sender) { FormInit(); //½Å±Ô¾ÆÀ̵𸦠¾ò¾î¿Í¼­ È­¸éÀ» ÃʱâÈ­ÇÑ´Ù. ChangeEditMode(2); FNewDb = true; } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::BtnDeleteClick(TObject *Sender) { int nRow = TvList->DataController->FocusedRecordIndex; if (nRow < 0) return; String VmsNo = TvList->DataController->Values[nRow][Column01->Index]; String SchTm = TvList->DataController->Values[nRow][Column07->Index]; String sMsg; sMsg = "VMS¹øÈ£: " + VmsNo; sMsg+= "\r\nÁ¦¾î½Ã°¢: " + SchTm; sMsg+= "\r\n¼±ÅÃÇϽŠÈÖµµÁ¦¾î ½ºÄÉÁÙ Á¤º¸¸¦ »èÁ¦ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; if (DeleteInfo(VmsNo, SchTm)) { UpdateList(); } FUpdate = true; Application->MessageBox(L"ÈÖµµÁ¦¾î ½ºÄÉÁÙ Á¤º¸»èÁ¦\r\ÈÖµµÁ¦¾î ½ºÄÉÁÙ Á¤º¸¸¦ »èÁ¦ ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FormInit(); ChangeEditMode(1); } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::BtnSaveClick(TObject *Sender) { String VmsNo = APP_GetCode(CbVms); String SchTm = CxSchTime->Time.FormatString("HHNN"); if (VmsNo.IsEmpty() || SchTm.IsEmpty()) { Application->MessageBox(L"¡ÚÇ׸ñÀº Çʼö ÀÔ·Â Ç׸ñÀÔ´Ï´Ù.\r\n¸ðµÎ ÀÔ·ÂÈÄ ÁøÇàÇØ ÁÖ¼¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String Lumin = SeLuminance->Value; String UseYn = APP_GetCode(CbUseYn); if (MergeInfo(VmsNo, SchTm, Lumin, UseYn)) { Application->MessageBox(L"ÈÖµµÁ¦¾î ½ºÄÉÁÙ Á¤º¸ÀúÀå\r\ÈÖµµÁ¦¾î ½ºÄÉÁÙ Á¤º¸¸¦ ÀúÀå ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FUpdate = true; UpdateList(); CMM_SetGridDataFocus2(TvList->DataController, VmsNo, Column01->Index, SchTm, Column07->Index); DisplayInfo(); } } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::SeLuminancePropertiesChange(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 TVMSM900M::FillVmsList() { CbVms->Properties->Items->Clear(); try { VmsManager->FLists.Lock(); FOR_STL(TVmsCtlr*, pObj, VmsManager->FLists) { if (pObj->DEL_YN == "Y") continue; String NO = String(pObj->VMS_CTLR_NMBR); String ID = pObj->VMS_CTLR_ID; String NM = pObj->VMS_NM; CbVms->Properties->Items->Add(" [" + NO + "] (" + ID + ") " + NM); } } __finally { VmsManager->FLists.UnLock(); } } //--------------------------------------------------------------------------- bool __fastcall TVMSM900M::MergeInfo(String AVmsNo, String ASchTm, String ALuminance, String AUseYn) { String sQry; TADOQuery *pADO = NULL; sQry = "MERGE INTO TB_VMS_LUM_SET_SCH L \r\n" "USING (SELECT :p01 AS VMS_CTLR_NMBR, \r\n" " :p02 AS SCH_TIME, \r\n" " :p03 AS LUMINANCE, \r\n" " :p04 AS USE_YN \r\n" " FROM DUAL) M \r\n" " ON (L.VMS_CTLR_NMBR = M.VMS_CTLR_NMBR \r\n" " AND L.SCH_TIME = M.SCH_TIME) \r\n" "WHEN MATCHED \r\n" "THEN \r\n" " UPDATE SET L.LUMINANCE = M.LUMINANCE, \r\n" " L.USE_YN = M.USE_YN \r\n" "WHEN NOT MATCHED \r\n" "THEN \r\n" " INSERT (VMS_CTLR_NMBR, \r\n" " SCH_TIME, \r\n" " LUMINANCE, \r\n" " USE_YN ) \r\n" " VALUES (M.VMS_CTLR_NMBR, \r\n" " M.SCH_TIME, \r\n" " M.LUMINANCE, \r\n" " M.USE_YN ) \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AVmsNo; pADO->Parameters->ParamByName("p02")->Value = ASchTm; pADO->Parameters->ParamByName("p03")->Value = ALuminance; pADO->Parameters->ParamByName("p04")->Value = AUseYn; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &exception) { throw Exception(String(exception.ClassName()) + exception.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return false; } //--------------------------------------------------------------------------- bool __fastcall TVMSM900M::DeleteInfo(String AVmsNo, String ASchTm) { String sQry; TADOQuery *pADO = NULL; sQry = "DELETE TB_VMS_LUM_SET_SCH \r\n" " WHERE VMS_CTLR_NMBR = :p01 \r\n" " AND SCH_TIME = :p02 \r\n"; try { try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); pADO->SQL->Clear(); pADO->SQL->Text = sQry; pADO->Parameters->ParamByName("p01")->Value = AVmsNo; pADO->Parameters->ParamByName("p02")->Value = ASchTm; pADO->ExecSQL(); return true; } catch(EDatabaseError &E) { throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &exception) { throw Exception(String(exception.ClassName()) + exception.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } } return false; } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::UpdateList() { CMM_ClearGridTableView(TvList); TcxDataController *pGDC = TvList->DataController; String sQry; TADOQuery *pADO = NULL; sQry = "SELECT A.VMS_CTLR_NMBR, A.SCH_TIME, A.LUMINANCE, A.USE_YN, \r\n" " B.VMS_CTLR_ID, B.VMS_NM \r\n" " FROM TB_VMS_LUM_SET_SCH A, \r\n" " TB_VMS_CTLR B \r\n" " WHERE A.VMS_CTLR_NMBR = B.VMS_CTLR_NMBR \r\n" " AND B.DEL_YN = 'N' \r\n"; int nRowHeight = 0; try { int nRow; TvList->BeginUpdate(); pGDC->BeginUpdate(); try { pADO = new TADOQuery(NULL); pADO->Close(); pADO->Connection = ITSDb_GetConnection(); ITSDb_SQLText(pADO, sQry); ITSDb_SQLOpen(pADO); for( ; !pADO->Eof; pADO->Next()) { nRow = pGDC->AppendRecord(); String VmsNo = pADO->FieldByName("VMS_CTLR_NMBR")->AsString; String VmsId = pADO->FieldByName("VMS_CTLR_ID")->AsString; String VmsNm = pADO->FieldByName("VMS_NM")->AsString; String SchTm = pADO->FieldByName("SCH_TIME")->AsString; String Lumin = pADO->FieldByName("LUMINANCE")->AsString; String UseYn = pADO->FieldByName("USE_YN")->AsString; pGDC->Values[nRow][Column01->Index] = VmsNo; pGDC->Values[nRow][Column02->Index] = VmsId; pGDC->Values[nRow][Column03->Index] = VmsNm; pGDC->Values[nRow][Column04->Index] = SchTm; pGDC->Values[nRow][Column05->Index] = Lumin; if (UseYn == "Y") pGDC->Values[nRow][Column06->Index] = "»ç¿ë"; else pGDC->Values[nRow][Column06->Index] = "»ç¿ë¾ÈÇÔ"; pGDC->Values[nRow][Column07->Index] = SchTm; pGDC->Values[nRow][Column08->Index] = Lumin.ToIntDef(0); pGDC->Values[nRow][Column09->Index] = UseYn; } } catch(EDatabaseError &E) { throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { throw Exception(String(e.ClassName()) + e.Message); } } __finally { if (pADO) { pADO->Close(); delete pADO; } pGDC->EndUpdate(); TvList->EndUpdate(); } CMM_ExpandCollapseChk(TvList, ChkExpand->Checked); } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; int nRow = TvList->DataController->FocusedRecordIndex; if( nRow <= -1 ) return; //DisplayInfo(); } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::TvListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (TvList->ViewData->RecordCount <= 0) return; if (TvList->DataController->FocusedRowIndex < 0) return; TcxDataController *pGDC = TvList->DataController; int nRow = pGDC->FocusedRecordIndex; if( nRow <= -1 ) return; DisplayInfo(); } //--------------------------------------------------------------------------- void __fastcall TVMSM900M::ChkExpandClick(TObject *Sender) { CMM_ExpandCollapseChk(TvList, ChkExpand->Checked); } //---------------------------------------------------------------------------