//--------------------------------------------------------------------------- #include #include "ITSSkinF.h" #include "AppGlobalF.h" #pragma hdrstop #include "FrmMonitoringEditF.h" #include "CDSMonitoringObjF.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 resource "*.dfm" //TFrmMonitoringEdit *FrmMonitoringEdit = NULL; //--------------------------------------------------------------------------- __fastcall TFrmMonitoringEdit::TFrmMonitoringEdit(TComponent* Owner) : TForm(Owner) { m_pGDC = TvCtlrList->DataController; ITSSkin_Load(this); ////CMM_LoadForm(g_sFormsDir, this); #if 1 if (g_AppCfg.sLang != "kr") { Caption = "VMS Web Camera Monitoring Screen Management"; GrpList->Caption = "¢º Monitoring screen list"; cxGroupBox1->Caption = "¢º Monitoring screen setting"; Col02->Caption = "Screen Name"; Col03->Caption = "Count"; ColCtlr3->Caption = "Name"; BtnListAdd->Caption = "Regist"; BtnListDelete->Caption = "Remove"; BtnUp->Caption = "¡ã Up"; BtnDown->Caption = "¡å Down"; //BtnEdit->Caption = "Edit"; BtnEdit->Hint = "Edit data"; //BtnInsert->Caption = "Add"; BtnInsert->Hint = "Add new data"; //BtnDelete->Caption = "Delete"; BtnDelete->Hint = "Delete selected data"; //BtnSave->Caption = "Save"; BtnSave->Hint = "Save editing data"; } else { Caption = "¸ð´ÏÅ͸µ È­¸é °ü¸®"; GrpList->Caption = "¢º ¸ð´ÏÅ͸µ È­¸é ¸ñ·Ï"; cxGroupBox1->Caption = "¢º ¸ð´ÏÅ͸µ È­¸é ¼³Á¤"; Col02->Caption = "È­¸é¸íĪ"; Col03->Caption = "°¹¼ö"; ColCtlr3->Caption = "¸íĪ"; } #endif FUpdate= false; FTitle = Caption;//"¿µ»ó ¸ð´ÏÅ͸µ È­¸é °ü¸®"; EditMode = false; ColumnSel->Visible = false; Column04->Visible = true; //TvCtlrList->OptionsView->ColumnAutoWidth = true; TvCtlrList->OptionsSelection->MultiSelect = true; TvCtlrList->OptionsSelection->CellSelect = false; #ifdef __CCTV__ Column05->Visible = false; #endif #ifdef __VMS__ Column05->Visible = false; #endif FDbConnection = NULL; } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::CommClose() { try { ////CMM_SaveForm(g_sFormsDir, this); } catch(...) { } } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::FormShow(TObject *Sender) { Refresh(); FormInit(); ChangeEditMode(1); TmrShow->Enabled = true; } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::FormInit() { //TvScnrList->OptionsView->NoDataToDisplayInfoText = "<µî·ÏµÇ¾î ÀÖ´Â Á¤º¸°¡ ¾ø½À´Ï´Ù>"; //TvScrnCtlr->OptionsView->NoDataToDisplayInfoText = "<µî·ÏµÇ¾î ÀÖ´Â Á¤º¸°¡ ¾ø½À´Ï´Ù>"; UpdateCtlrList(); FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::TmrShowTimer(TObject *Sender) { TmrShow->Enabled = false; BtnSearchClick(NULL); } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::BtnCloseClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::FormClose(TObject *Sender, TCloseAction &Action) { CommClose(); //FrmMonitoringEdit = NULL; Action = caFree; } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::BtnEditClick(TObject *Sender) { String sCaption = "ÆíÁý"; if (g_AppCfg.sLang != "kr") sCaption = "Edit"; if (BtnEdit->Caption == sCaption)//"ÆíÁý") { ChangeEditMode(0); FNewDb = false; } else { String sName = EdName->Text; ChangeEditMode(1); if (CMM_FindGridData(TvScrnList->DataController, sName, Col02->Index) >= 0) { CMM_SetGridRow(CxScrnList, TvScrnList, sName, Col02->Index); DisplayInfo(); } } } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::ChangeEditMode(int AEdit) { bool bEnabled = false; switch(AEdit) { case 0: //ÆíÁý¹öưŬ¸¯ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; BtnSave->Enabled = true; if (g_AppCfg.sLang != "kr") { BtnEdit->Caption = "Cancel"; BtnEdit->Hint = "Cancel ediging data"; } else { BtnEdit->Caption = "Ãë¼Ò"; BtnEdit->Hint = "µ¥ÀÌÅÍ ÆíÁý Ãë¼Ò"; } EditMode = true; } break; case 1: //ÆíÁý[Ãë¼Ò]¹öưŬ¸¯ { FormClear(); //È­¸éÀ» ¸ðµÎ Áö¿î´Ù. BtnEdit->Enabled = false; BtnInsert->Enabled = true; BtnDelete->Enabled = false; BtnSave->Enabled = false; if (g_AppCfg.sLang != "kr") { BtnEdit->Caption = "Edit"; BtnEdit->Hint = "Editing data"; } else { BtnEdit->Caption = "ÆíÁý"; BtnEdit->Hint = "µ¥ÀÌÅÍ ÆíÁý"; } //bEnabled = true; EditMode = false; } break; case 2: //Ãß°¡ { BtnEdit->Enabled = true; BtnInsert->Enabled = false; BtnDelete->Enabled = false; BtnSave->Enabled = true; if (g_AppCfg.sLang != "kr") { BtnEdit->Caption = "Cancel"; BtnEdit->Hint = "Cancel ediging data"; } else { BtnEdit->Caption = "Ãë¼Ò"; BtnEdit->Hint = "µ¥ÀÌÅÍ Ãß°¡ Ãë¼Ò"; } EditMode = true; } break; case 3: //¼öÁ¤¸ðµå { BtnEdit->Enabled = true; BtnInsert->Enabled = true; BtnDelete->Enabled = true; BtnSave->Enabled = false; if (g_AppCfg.sLang != "kr") { BtnEdit->Caption = "Edit"; BtnEdit->Hint = "Editing data"; } else { BtnEdit->Caption = "ÆíÁý"; BtnEdit->Hint = "µ¥ÀÌÅÍ ¼öÁ¤"; } bEnabled = true; EditMode = false; } break; } if (AEdit == 0 || AEdit == 2) { PnlCmd->Enabled = true; } else { PnlCmd->Enabled = false; } } //--------------------------------------------------------------------------- int __fastcall TFrmMonitoringEdit::CheckDupFormName(String ANewName, String AOldName) { int nDupCnt = 0; try { TvScrnList->BeginUpdate(); TcxGridDataController *pGDC = TvScrnList->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 { TvScrnList->EndUpdate(); } return nDupCnt; } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::BtnSaveClick(TObject *Sender) { if (EdName->Text.Trim().IsEmpty()) { Application->MessageBox(lblText1->Caption.c_str(),//L"VMS ¸ð´ÏÅ͸µ È­¸é ÀúÀå\r\nVMS ¸ð´ÏÅ͸µ È­¸é¸íĪÀ» ÀÔ·ÂÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } if (!FNewDb) { if (EdOrgName->Text.Trim().IsEmpty()) { Application->MessageBox(lblText2->Caption.c_str(),//L"VMS ¸ð´ÏÅ͸µ È­¸é ÀúÀå\r\nVMS ¸ð´ÏÅ͸µ È­¸éÀ» ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } } if (TvScrnCtlr->DataController->RecordCount == 0) { Application->MessageBox(lblText3->Caption.c_str(),//L"VMS ¸ð´ÏÅ͸µ È­¸é ÀúÀå\r\n¸ð´ÏÅ͸µ ´ë»ó VMS¸¦ Ãß°¡ÇØ ÁÖ¼¼¿ä.", 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(lblText4->Caption.c_str(),//L"VMS ¸ð´ÏÅ͸µ È­¸é ÀúÀå\r\nÀÌ¹Ì »ç¿ëÁßÀÎ ¸ð´ÏÅ͸µ È­¸é¸íĪ ÀÔ´Ï´Ù.\r\n»ç¿ëÇÏÁö ¾Ê´Â ¸íĪÀ» ÀÔ·ÂÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } bResult = DelCmraMonitoring(sOldName); if (!bResult) { return; } try { FDbConnection->BeginTrans(); TcxGridDataController *pGDC = TvScrnCtlr->DataController; int nRows = pGDC->RecordCount; for (int ii = 0; ii < nRows; ii++) { String sCtlrNmbr = VarToStr(pGDC->Values[ii][ColCtlr2->Index]); ObjCtlrManager->InsMonitoringFormFromDb(sNewName, ii+1, sCtlrNmbr, 0, FDbConnection); } FDbConnection->CommitTrans(); bResult = true; } catch(EDatabaseError &E) { FDbConnection->RollbackTrans(); throw Exception(String(E.ClassName()) + E.Message); } catch(Exception &e) { FDbConnection->RollbackTrans(); throw Exception(String(e.ClassName()) + e.Message); } if (bResult) { Application->MessageBox(lblText5->Caption.c_str(),//L"VMS ¸ð´ÏÅ͸µ È­¸é ÀúÀå\r\nVMS ¸ð´ÏÅ͸µ È­¸é Á¤º¸¸¦ ÀúÀå ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FUpdate = true; ObjCtlrManager->LoadMonitoringFormFromDb(FDbConnection); LoadCmraMonitoring(); CMM_SetGridRow(CxScrnList, TvScrnList, sNewName, Col02->Index); DisplayInfo(); } } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::BtnInsertClick(TObject *Sender) { FormClear(); EdName->Text = ""; EdOrgName->Text = ""; ChangeEditMode(2); FNewDb = true; } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::BtnDeleteClick(TObject *Sender) { int nIdx = TvScrnList->DataController->FocusedRecordIndex; if (nIdx < 0) return; String sFormName = EdOrgName->Text; if (sFormName.IsEmpty()) { Application->MessageBox(lblText6->Caption.c_str(),//L"VMS ¸ð´ÏÅ͸µ È­¸é »èÁ¦\r\n»èÁ¦ÇÒ VMS ¸ð´ÏÅ͸µ È­¸éÀ» ¸ñ·Ï¿¡¼­ ¼±ÅÃÇϼ¼¿ä.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL); return; } String sMsg; sMsg = lblText7->Caption + ": " + sFormName;//"VMS ¸ð´ÏÅ͸µ È­¸é: " + sFormName; sMsg+= "\r\n" + lblText8->Caption;//"¼±ÅÃÇϽŠVMS ¸ð´ÏÅ͸µ È­¸é Á¤º¸¸¦ »èÁ¦ÇϽðڽÀ´Ï±î?"; if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return; if (DelCmraMonitoring(sFormName)) { FUpdate = true; Application->MessageBox(lblText9->Caption.c_str(),//L"VMS ¸ð´ÏÅ͸µ È­¸é »èÁ¦\r\nVMS ¸ð´ÏÅ͸µ È­¸é Á¤º¸¸¦ »èÁ¦ ÇÏ¿´½À´Ï´Ù.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL); FormClear(); ChangeEditMode(1); ObjCtlrManager->LoadMonitoringFormFromDb(FDbConnection); LoadCmraMonitoring(); } } //--------------------------------------------------------------------------- bool __fastcall TFrmMonitoringEdit::DelCmraMonitoring(String AFormName) { return ObjCtlrManager->DelMonitoringFormFromDb(AFormName, FDbConnection); } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::TvScrnListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton, TShiftState AShift, bool &AHandled) { if (!ACellViewInfo) return; DisplayInfo(); } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::TvScrnListFocusedRecordChanged(TcxCustomGridTableView *Sender, TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord, bool ANewItemRecordFocusingChanged) { if (!AFocusedRecord) return; DisplayInfo(); } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::BtnSearchClick(TObject *Sender) { RefreshData(); EdFocus->SetFocus(); ChangeEditMode(1); } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::RefreshData() { // °Ë»öÁ¶°Ç¿¡ ÀÇÇÑ ¸µÅ© µ¥ÀÌÅÍ Á¶È¸ FormClear(); LoadCmraMonitoring(); } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::LoadCmraMonitoring() { CMM_ClearGridTableView(TvScrnList); try { int nRow; TcxDataController *pGDC = TvScrnList->DataController; TvScrnList->BeginUpdate(); FOR_STL(TMonitoringScreen*, pObj, ObjScreenManager->FLists) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][Col01->Index] = ""; pGDC->Values[nRow][Col02->Index] = pObj->NAME; pGDC->Values[nRow][Col03->Index] = String(pObj->FLists.Size()); } } __finally { TvScrnList->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::FormClear() { CMM_ClearGridTableView(TvScrnCtlr); EdOrgName->Clear(); EdName->Clear(); FNewDb = false; } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::DisplayInfo() { FormClear(); int nSelIdx = TvScrnList->DataController->FocusedRecordIndex; if( nSelIdx <= -1 ) return; DisplayFormInfo(nSelIdx); ChangeEditMode(3); } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::DisplayFormInfo(int AIdx) { TcxGridDataController *pDc = TvScrnList->DataController; String sScrName = VarToStr(pDc->Values[AIdx][Col02->Index]); EdName->Text = sScrName; EdOrgName->Text = sScrName; CMM_ClearGridTableView(TvScrnCtlr); try { int nRow; TcxDataController *pGDC = TvScrnCtlr->DataController; TvScrnCtlr->BeginUpdate(); TMonitoringScreen *pObj = ObjScreenManager->FLists.Find(sScrName); if (!pObj) { return; } FOR_STL(TScreenCtlr*, pScr, pObj->FLists) { nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColCtlr1->Index] = String(pScr->SEQ); pGDC->Values[nRow][ColCtlr2->Index] = String(pScr->CTLR_NMBR); TMonitoringCtlr *pCtlr = ObjCtlrManager->FLists.Find(pScr->CTLR_NMBR); if (pCtlr) pGDC->Values[nRow][ColCtlr3->Index] = pCtlr->NAME; else pGDC->Values[nRow][ColCtlr3->Index] = "--???--"; } } __finally { TvScrnCtlr->EndUpdate(); } } //--------------------------------------------------------------------------- bool __fastcall TFrmMonitoringEdit::FindCtlrInfo(String ACtlrNmbr) { try { TvScrnCtlr->BeginUpdate(); for (int ii = 0; ii < TvScrnCtlr->DataController->RecordCount; ii++) { String sCtlrNmbr = VarToStr(TvScrnCtlr->DataController->Values[ii][ColCtlr2->Index]); if (sCtlrNmbr == ACtlrNmbr) return true; } } __finally { TvScrnCtlr->EndUpdate(); } return false; } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::UpdateScrnCtlrSeq() { try { TvScrnCtlr->BeginUpdate(); for (int ii = 0; ii < TvScrnCtlr->DataController->RecordCount; ii++) { TvScrnCtlr->DataController->Values[ii][ColCtlr1->Index] = String(ii+1); } } __finally { TvScrnCtlr->EndUpdate(); } } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::BtnListAddClick(TObject *Sender) { TcxGridTableView *pSrcList = TvCtlrList; TcxGridTableView *pDstList = TvScrnCtlr; 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 sCtlrNmbr = VarToStr(pSrcList->DataController->Values[nSelIdx][Column01->Index]); String sCtlrId = VarToStr(pSrcList->DataController->Values[nSelIdx][Column02->Index]); String sCtlrName = VarToStr(pSrcList->DataController->Values[nSelIdx][Column03->Index]); if (FindCtlrInfo(sCtlrNmbr)) continue; int nRow = pGDC->AppendRecord(); pGDC->Values[nRow][ColCtlr2->Index] = sCtlrNmbr; pGDC->Values[nRow][ColCtlr3->Index] = sCtlrName; } } catch(...) { } } __finally { UpdateScrnCtlrSeq(); } } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::BtnListDeleteClick(TObject *Sender) { TcxGridTableView *pSrcList = TvScrnCtlr; 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; } //CxScrnCtlr->SetFocus(); } catch(...) { } } __finally { pSrcList->EndUpdate(); UpdateScrnCtlrSeq(); } } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::BtnUpClick(TObject *Sender) { try { TvScrnCtlr->BeginUpdate(); int nCurIdx = TvScrnCtlr->DataController->FocusedRowIndex;//FocusedRecordIndex; if (nCurIdx <= 0) { return; } int nUpIdx = nCurIdx-1; try { String sVal1 = VarToStr(TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr1->Index]); String sVal2 = VarToStr(TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr2->Index]); String sVal3 = VarToStr(TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr3->Index]); TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr1->Index] = TvScrnCtlr->DataController->Values[nUpIdx][ColCtlr1->Index]; TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr2->Index] = TvScrnCtlr->DataController->Values[nUpIdx][ColCtlr2->Index]; TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr3->Index] = TvScrnCtlr->DataController->Values[nUpIdx][ColCtlr3->Index]; TvScrnCtlr->DataController->Values[nUpIdx][ColCtlr1->Index] = sVal1; TvScrnCtlr->DataController->Values[nUpIdx][ColCtlr2->Index] = sVal2; TvScrnCtlr->DataController->Values[nUpIdx][ColCtlr3->Index] = sVal3; TvScrnCtlr->Controller->ClearSelection(); TvScrnCtlr->Controller->FocusedRowIndex = nUpIdx; TvScrnCtlr->ViewData->Records[nUpIdx]->Focused = true; TvScrnCtlr->ViewData->Records[nUpIdx]->Selected = true; CxScrnCtlr->SetFocus(); } catch(...) { } } __finally { TvScrnCtlr->EndUpdate(); UpdateScrnCtlrSeq(); } } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::BtnDownClick(TObject *Sender) { try { TvScrnCtlr->BeginUpdate(); int nCurIdx = TvScrnCtlr->DataController->FocusedRowIndex;//FocusedRecordIndex; if (nCurIdx < 0) { return; } if (nCurIdx == TvScrnCtlr->DataController->RecordCount-1) { return; } int nDnIdx = nCurIdx+1; try { String sVal1 = VarToStr(TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr1->Index]); String sVal2 = VarToStr(TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr2->Index]); String sVal3 = VarToStr(TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr3->Index]); TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr1->Index] = TvScrnCtlr->DataController->Values[nDnIdx][ColCtlr1->Index]; TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr2->Index] = TvScrnCtlr->DataController->Values[nDnIdx][ColCtlr2->Index]; TvScrnCtlr->DataController->Values[nCurIdx][ColCtlr3->Index] = TvScrnCtlr->DataController->Values[nDnIdx][ColCtlr3->Index]; TvScrnCtlr->DataController->Values[nDnIdx][ColCtlr1->Index] = sVal1; TvScrnCtlr->DataController->Values[nDnIdx][ColCtlr2->Index] = sVal2; TvScrnCtlr->DataController->Values[nDnIdx][ColCtlr3->Index] = sVal3; TvScrnCtlr->Controller->ClearSelection(); TvScrnCtlr->Controller->FocusedRowIndex = nDnIdx; TvScrnCtlr->ViewData->Records[nDnIdx]->Focused = true; TvScrnCtlr->ViewData->Records[nDnIdx]->Selected = true; CxScrnCtlr->SetFocus(); } catch(...) { } } __finally { TvScrnCtlr->EndUpdate(); UpdateScrnCtlrSeq(); } } //--------------------------------------------------------------------------- void __fastcall TFrmMonitoringEdit::UpdateCtlrList() { CMM_ClearGridTableView(TvCtlrList); int nRow = 0; try { TvCtlrList->BeginUpdate(); try { ObjCtlrManager->FLists.Lock(); FOR_STL(TMonitoringCtlr*, pObj, ObjCtlrManager->FLists) { nRow = m_pGDC->AppendRecord(); m_pGDC->Values[nRow][ColumnSel->Index] = false; m_pGDC->Values[nRow][Column00->Index] = "-"; m_pGDC->Values[nRow][Column01->Index] = String(pObj->CTLR_NMBR); m_pGDC->Values[nRow][Column02->Index] = pObj->CTLR_ID; m_pGDC->Values[nRow][Column03->Index] = pObj->NAME; m_pGDC->Values[nRow][Column04->Index] = pObj->STRM_ADDR; m_pGDC->Values[nRow][Column99->Index] = (int)pObj; m_pGDC->Values[nRow][Column11->Index] = pObj->CTLR_NMBR; m_pGDC->Values[nRow][Column12->Index] = pObj->CTLR_ID; } } __finally { ObjCtlrManager->FLists.UnLock(); } } __finally { TvCtlrList->EndUpdate(); TvCtlrList->DataController->GotoFirst(); TvCtlrList->DataController->FocusedRecordIndex = 0; Column01->SortIndex = Column01->Index; Column01->SortOrder = soAscending; } } //---------------------------------------------------------------------------