FrmCameraScreenManagerF.cpp 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. /****************************************************************************
  2. * @source :
  3. * @description :
  4. ****************************************************************************
  5. * DATE AUTHOR DESCRIPTION
  6. * --------------------------------------------------------------------------
  7. * 2016/07/10 shjung 최초작성
  8. *
  9. ****************************************************************************/
  10. //---------------------------------------------------------------------------
  11. #include <vcl.h>
  12. #include "AppGlobalF.h"
  13. #pragma hdrstop
  14. #include "CDSMonitoringObjF.h"
  15. #include "FrmCameraScreenManagerF.h"
  16. #include "DMDbF.h"
  17. //---------------------------------------------------------------------------
  18. #pragma package(smart_init)
  19. #pragma link "FRAME_ObjListF"
  20. #pragma link "cxButtons"
  21. #pragma link "cxClasses"
  22. #pragma link "cxContainer"
  23. #pragma link "cxControls"
  24. #pragma link "cxCustomData"
  25. #pragma link "cxData"
  26. #pragma link "cxDataStorage"
  27. #pragma link "cxEdit"
  28. #pragma link "cxFilter"
  29. #pragma link "cxGraphics"
  30. #pragma link "cxGrid"
  31. #pragma link "cxGridCustomTableView"
  32. #pragma link "cxGridCustomView"
  33. #pragma link "cxGridLevel"
  34. #pragma link "cxGridTableView"
  35. #pragma link "cxGroupBox"
  36. #pragma link "cxLabel"
  37. #pragma link "cxLookAndFeelPainters"
  38. #pragma link "cxLookAndFeels"
  39. #pragma link "cxStyles"
  40. #pragma link "cxTextEdit"
  41. #pragma link "dxSkinBlack"
  42. #pragma link "dxSkinBlue"
  43. #pragma link "dxSkinsCore"
  44. #pragma link "dxSkinscxPCPainter"
  45. #pragma link "dxSkinMcSkin"
  46. #pragma resource "*.dfm"
  47. TFrmCameraScreenManager *FrmCameraScreenManager = NULL;
  48. //---------------------------------------------------------------------------
  49. __fastcall TFrmCameraScreenManager::TFrmCameraScreenManager(TComponent* Owner)
  50. : TForm(Owner)
  51. {
  52. ITSSkin_Load(this);
  53. if (g_AppCfg.sLang != "kr")
  54. {
  55. Caption = "Monitoring Screen Management";
  56. GrpList->Caption = "▶ Monitoring screen list";
  57. cxGroupBox1->Caption = "▶ Monitoring screen setting";
  58. Col02->Caption = "Screen Name";
  59. Col03->Caption = "Count";
  60. ColCtlr3->Caption = "Name";
  61. BtnListAdd->Caption = "Regist";
  62. BtnListDelete->Caption = "Remove";
  63. BtnUp->Caption = "▲ Up";
  64. BtnDown->Caption = "▼ Down";
  65. BtnEdit->Caption = "Edit";
  66. BtnEdit->Hint = "Edit data";
  67. BtnInsert->Caption = "Add";
  68. BtnInsert->Hint = "Add new data";
  69. BtnDelete->Caption = "Delete";
  70. BtnDelete->Hint = "Delete selected data";
  71. BtnSave->Caption = "Save";
  72. BtnSave->Hint = "Save editing data";
  73. }
  74. else
  75. {
  76. Caption = "모니터링 화면 관리";
  77. GrpList->Caption = "▶ 모니터링 화면 목록";
  78. cxGroupBox1->Caption = "▶ 모니터링 화면 설정";
  79. Col02->Caption = "화면명칭";
  80. Col03->Caption = "갯수";
  81. ColCtlr3->Caption = "명칭";
  82. }
  83. FUpdate= false;
  84. FTitle = Caption; //"모니터링 화면 관리";
  85. EditMode = false;
  86. FRAMEObjList1->PnlTop->Visible = false;
  87. FRAMEObjList1->PnlBottom->Visible = false;
  88. FRAMEObjList1->ColumnSel->Visible = false;
  89. FRAMEObjList1->Column04->Visible = true;
  90. FRAMEObjList1->TvList->OptionsView->ColumnAutoWidth = true;
  91. FRAMEObjList1->TvList->OptionsSelection->MultiSelect = true;
  92. FRAMEObjList1->TvList->OptionsSelection->CellSelect = false;
  93. }
  94. //---------------------------------------------------------------------------
  95. void __fastcall TFrmCameraScreenManager::CommClose()
  96. {
  97. try
  98. {
  99. //CMM_SaveForm(g_sFormsDir, this);
  100. }
  101. catch(...)
  102. {
  103. }
  104. }
  105. //---------------------------------------------------------------------------
  106. void __fastcall TFrmCameraScreenManager::FormShow(TObject *Sender)
  107. {
  108. Refresh();
  109. FormInit();
  110. ChangeEditMode(1);
  111. TmrShow->Enabled = true;
  112. }
  113. //---------------------------------------------------------------------------
  114. void __fastcall TFrmCameraScreenManager::FormInit()
  115. {
  116. //TvList->OptionsView->NoDataToDisplayInfoText = "<등록되어 있는 정보가 없습니다>";
  117. //TvCtlr->OptionsView->NoDataToDisplayInfoText = "<등록되어 있는 정보가 없습니다>";
  118. FRAMEObjList1->UpdateList();
  119. FNewDb = false;
  120. }
  121. //---------------------------------------------------------------------------
  122. void __fastcall TFrmCameraScreenManager::TmrShowTimer(TObject *Sender)
  123. {
  124. TmrShow->Enabled = false;
  125. BtnSearchClick(NULL);
  126. }
  127. //---------------------------------------------------------------------------
  128. /*
  129. * Close 버튼 클릭 이벤트 핸들러
  130. * arguments
  131. * Sender : event handler 객체
  132. * return
  133. * void
  134. */
  135. void __fastcall TFrmCameraScreenManager::BtnCloseClick(TObject *Sender)
  136. {
  137. Close();
  138. }
  139. //---------------------------------------------------------------------------
  140. void __fastcall TFrmCameraScreenManager::FormClose(TObject *Sender, TCloseAction &Action)
  141. {
  142. CommClose();
  143. //FrmViewerManager = NULL;
  144. Action = caFree;
  145. }
  146. //---------------------------------------------------------------------------
  147. void __fastcall TFrmCameraScreenManager::BtnEditClick(TObject *Sender)
  148. {
  149. String sCaption = "편집";
  150. if (g_AppCfg.sLang != "kr") sCaption = "Edit";
  151. if (BtnEdit->Caption == sCaption)
  152. {
  153. ChangeEditMode(0);
  154. FNewDb = false;
  155. }
  156. else
  157. {
  158. String sName = EdName->Text;
  159. ChangeEditMode(1);
  160. if (CMM_FindGridData(TvList->DataController, sName, Col02->Index) >= 0)
  161. {
  162. CMM_SetGridRow(CxList, TvList, sName, Col02->Index);
  163. DisplayInfo();
  164. }
  165. }
  166. }
  167. //---------------------------------------------------------------------------
  168. void __fastcall TFrmCameraScreenManager::ChangeEditMode(int AEdit)
  169. {
  170. bool bEnabled = false;
  171. switch(AEdit)
  172. {
  173. case 0: //편집버튼클릭
  174. {
  175. BtnEdit->Enabled = true;
  176. BtnInsert->Enabled = false;
  177. BtnDelete->Enabled = false;
  178. BtnSave->Enabled = true;
  179. if (g_AppCfg.sLang != "kr")
  180. {
  181. BtnEdit->Caption = "Cancel";
  182. BtnEdit->Hint = "Cancel ediging data";
  183. }
  184. else
  185. {
  186. BtnEdit->Caption = "취소";
  187. BtnEdit->Hint = "데이터 편집 취소";
  188. }
  189. EditMode = true;
  190. }
  191. break;
  192. case 1: //편집[취소]버튼클릭
  193. {
  194. FormClear(); //화면을 모두 지운다.
  195. BtnEdit->Enabled = false;
  196. BtnInsert->Enabled = true;
  197. BtnDelete->Enabled = false;
  198. BtnSave->Enabled = false;
  199. if (g_AppCfg.sLang != "kr")
  200. {
  201. BtnEdit->Caption = "Edit";
  202. BtnEdit->Hint = "Editing data";
  203. }
  204. else
  205. {
  206. BtnEdit->Caption = "편집";
  207. BtnEdit->Hint = "데이터 편집 취소";
  208. }
  209. //bEnabled = true;
  210. EditMode = false;
  211. }
  212. break;
  213. case 2: //추가
  214. {
  215. BtnEdit->Enabled = true;
  216. BtnInsert->Enabled = false;
  217. BtnDelete->Enabled = false;
  218. BtnSave->Enabled = true;
  219. if (g_AppCfg.sLang != "kr")
  220. {
  221. BtnEdit->Caption = "Cancel";
  222. BtnEdit->Hint = "Cancel ediging data";
  223. }
  224. else
  225. {
  226. BtnEdit->Caption = "취소";
  227. BtnEdit->Hint = "데이터 편집 취소";
  228. }
  229. EditMode = true;
  230. }
  231. break;
  232. case 3: //수정모드
  233. {
  234. BtnEdit->Enabled = true;
  235. BtnInsert->Enabled = true;
  236. BtnDelete->Enabled = true;
  237. BtnSave->Enabled = false;
  238. if (g_AppCfg.sLang != "kr")
  239. {
  240. BtnEdit->Caption = "Edit";
  241. BtnEdit->Hint = "Editing data";
  242. }
  243. else
  244. {
  245. BtnEdit->Caption = "편집";
  246. BtnEdit->Hint = "데이터 편집 취소";
  247. }
  248. bEnabled = true;
  249. EditMode = false;
  250. }
  251. break;
  252. }
  253. if (AEdit == 0 || AEdit == 2)
  254. {
  255. PnlCmd->Enabled = true;
  256. }
  257. else
  258. {
  259. PnlCmd->Enabled = false;
  260. }
  261. }
  262. //---------------------------------------------------------------------------
  263. int __fastcall TFrmCameraScreenManager::CheckDupFormName(String ANewName, String AOldName)
  264. {
  265. int nDupCnt = 0;
  266. try
  267. {
  268. TvList->BeginUpdate();
  269. TcxGridDataController *pGDC = TvList->DataController;
  270. int nRows = pGDC->RecordCount;
  271. for (int ii = 0; ii < nRows; ii++)
  272. {
  273. String sFormName = VarToStr(pGDC->Values[ii][Col02->Index]);
  274. if (sFormName == AOldName)
  275. {
  276. continue;
  277. }
  278. if (sFormName == ANewName)
  279. {
  280. nDupCnt++;
  281. }
  282. }
  283. }
  284. __finally
  285. {
  286. TvList->EndUpdate();
  287. }
  288. return nDupCnt;
  289. }
  290. //---------------------------------------------------------------------------
  291. void __fastcall TFrmCameraScreenManager::BtnSaveClick(TObject *Sender)
  292. {
  293. if (EdName->Text.Trim().IsEmpty())
  294. {
  295. if (g_AppCfg.sLang != "kr") Application->MessageBox(L"Save monitoring screen\r\nEnter the monitoring screen name.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  296. else Application->MessageBox(L"모니터링 화면 저장\r\n모니터링 화면명칭을 입력하세요.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  297. return;
  298. }
  299. if (!FNewDb)
  300. {
  301. if (EdOrgName->Text.Trim().IsEmpty())
  302. {
  303. if (g_AppCfg.sLang != "kr") Application->MessageBox(L"Save monitoring screen\r\nSelect the monitoring screen from the list.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  304. else Application->MessageBox(L"모니터링 화면 저장\r\n모니터링 화면을 목록에서 선택하세요.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  305. return;
  306. }
  307. }
  308. if (TvCtlr->DataController->RecordCount == 0)
  309. {
  310. if (g_AppCfg.sLang != "kr") Application->MessageBox(L"Save monitoring screen\r\nPlease add monitored object.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  311. else Application->MessageBox(L"모니터링 화면 저장\r\n모니터링 대상을 추가해 주세요.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  312. return;
  313. }
  314. String sOldName = EdOrgName->Text;
  315. String sNewName = EdName->Text.Trim();
  316. int nDupCnt;
  317. bool bResult = false;
  318. if (FNewDb)
  319. {
  320. nDupCnt = CheckDupFormName(sNewName, "");
  321. }
  322. else
  323. {
  324. nDupCnt = CheckDupFormName(sNewName, sOldName);
  325. }
  326. if (nDupCnt >= 1)
  327. {
  328. if (g_AppCfg.sLang != "kr") Application->MessageBox(L"Save monitoring screen\r\nThis is the name of the monitoring screen that is already in use.\r\nPlease enter an unused name.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  329. else Application->MessageBox(L"모니터링 화면 저장\r\n이미 사용중인 모니터링 화면명칭 입니다.\r\n사용하지 않는 명칭을 입력하세요.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  330. return;
  331. }
  332. bResult = DelMonitoring(sOldName);
  333. if (!bResult)
  334. {
  335. return;
  336. }
  337. try
  338. {
  339. DMDb->GetConnection()->BeginTrans();
  340. TcxGridDataController *pGDC = TvCtlr->DataController;
  341. int nRows = pGDC->RecordCount;
  342. for (int ii = 0; ii < nRows; ii++)
  343. {
  344. String sCtlrNmbr = VarToStr(pGDC->Values[ii][ColCtlr2->Index]);
  345. ObjCtlrManager->InsMonitoringFormFromDb(sNewName, ii+1, sCtlrNmbr, 0, DMDb->GetConnection());
  346. }
  347. DMDb->GetConnection()->CommitTrans();
  348. bResult = true;
  349. }
  350. catch(EDatabaseError &E)
  351. {
  352. DMDb->GetConnection()->RollbackTrans();
  353. throw Exception(String(E.ClassName()) + E.Message);
  354. }
  355. catch(Exception &e)
  356. {
  357. DMDb->GetConnection()->RollbackTrans();
  358. throw Exception(String(e.ClassName()) + e.Message);
  359. }
  360. if (bResult)
  361. {
  362. if (g_AppCfg.sLang != "kr") Application->MessageBox(L"Save monitoring screen\r\nMonitoring screen information has been saved.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  363. else Application->MessageBox(L"모니터링 화면 저장\r\n모니터링 화면 정보를 저장 하였습니다.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  364. FUpdate = true;
  365. ObjCtlrManager->LoadMonitoringFormFromDb(DMDb->GetConnection());
  366. LoadMonitoring();
  367. CMM_SetGridRow(CxList, TvList, sNewName, Col02->Index);
  368. DisplayInfo();
  369. }
  370. }
  371. //---------------------------------------------------------------------------
  372. void __fastcall TFrmCameraScreenManager::BtnInsertClick(TObject *Sender)
  373. {
  374. FormClear();
  375. EdName->Text = "";
  376. EdOrgName->Text = "";
  377. ChangeEditMode(2);
  378. FNewDb = true;
  379. }
  380. //---------------------------------------------------------------------------
  381. void __fastcall TFrmCameraScreenManager::BtnDeleteClick(TObject *Sender)
  382. {
  383. int nIdx = TvList->DataController->FocusedRecordIndex;
  384. if (nIdx < 0) return;
  385. String sFormName = EdOrgName->Text;
  386. if (sFormName.IsEmpty())
  387. {
  388. if (g_AppCfg.sLang != "kr") Application->MessageBox(L"Delete monitoring screen\r\nSelect the monitoring screen to delete from the list.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  389. else Application->MessageBox(L"모니터링 화면 삭제\r\n삭제할 모니터링 화면을 목록에서 선택하세요.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  390. return;
  391. }
  392. String sMsg;
  393. if (g_AppCfg.sLang != "kr")
  394. {
  395. sMsg = "Monitoring screen: " + sFormName;
  396. sMsg+= "\r\nAre you sure you want to delete the selected monitoring screen information?";
  397. }
  398. else
  399. {
  400. sMsg = "모니터링 화면: " + sFormName;
  401. sMsg+= "\r\n선택하신 모니터링 화면 정보를 삭제하시겠습니까?";
  402. }
  403. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  404. if (DelMonitoring(sFormName))
  405. {
  406. FUpdate = true;
  407. if (g_AppCfg.sLang != "kr") Application->MessageBox(L"Delete monitoring screen\\r\Monitoring screen information has been deleted.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  408. else Application->MessageBox(L"모니터링 화면 삭제\r\n모니터링 화면 정보를 삭제 하였습니다.", FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  409. FormClear();
  410. ChangeEditMode(1);
  411. ObjCtlrManager->LoadMonitoringFormFromDb(DMDb->GetConnection());
  412. LoadMonitoring();
  413. }
  414. }
  415. //---------------------------------------------------------------------------
  416. bool __fastcall TFrmCameraScreenManager::DelMonitoring(String AFormName)
  417. {
  418. return ObjCtlrManager->DelMonitoringFormFromDb(AFormName, DMDb->GetConnection());
  419. }
  420. //---------------------------------------------------------------------------
  421. void __fastcall TFrmCameraScreenManager::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  422. TMouseButton AButton, TShiftState AShift,
  423. bool &AHandled)
  424. {
  425. if (!ACellViewInfo) return;
  426. DisplayInfo();
  427. }
  428. //---------------------------------------------------------------------------
  429. void __fastcall TFrmCameraScreenManager::TvListFocusedRecordChanged(TcxCustomGridTableView *Sender,
  430. TcxCustomGridRecord *APrevFocusedRecord, TcxCustomGridRecord *AFocusedRecord,
  431. bool ANewItemRecordFocusingChanged)
  432. {
  433. if (!AFocusedRecord) return;
  434. DisplayInfo();
  435. }
  436. //---------------------------------------------------------------------------
  437. void __fastcall TFrmCameraScreenManager::BtnSearchClick(TObject *Sender)
  438. {
  439. RefreshData();
  440. EdFocus->SetFocus();
  441. ChangeEditMode(1);
  442. }
  443. //---------------------------------------------------------------------------
  444. void __fastcall TFrmCameraScreenManager::RefreshData()
  445. {
  446. // 검색조건에 의한 링크 데이터 조회
  447. FormClear();
  448. LoadMonitoring();
  449. }
  450. //---------------------------------------------------------------------------
  451. void __fastcall TFrmCameraScreenManager::LoadMonitoring()
  452. {
  453. CMM_ClearGridTableView(TvList);
  454. try
  455. {
  456. int nRow;
  457. TcxDataController *pGDC = TvList->DataController;
  458. TvList->BeginUpdate();
  459. FOR_STL(TMonitoringScreen*, pObj, ObjScreenManager->FLists)
  460. {
  461. nRow = pGDC->AppendRecord();
  462. pGDC->Values[nRow][Col01->Index] = "";
  463. pGDC->Values[nRow][Col02->Index] = pObj->NAME;
  464. pGDC->Values[nRow][Col03->Index] = String(pObj->FLists.Size());
  465. }
  466. }
  467. __finally
  468. {
  469. TvList->EndUpdate();
  470. }
  471. }
  472. //---------------------------------------------------------------------------
  473. void __fastcall TFrmCameraScreenManager::FormClear()
  474. {
  475. CMM_ClearGridTableView(TvCtlr);
  476. EdOrgName->Clear();
  477. EdName->Clear();
  478. FNewDb = false;
  479. }
  480. //---------------------------------------------------------------------------
  481. void __fastcall TFrmCameraScreenManager::DisplayInfo()
  482. {
  483. FormClear();
  484. int nSelIdx = TvList->DataController->FocusedRecordIndex;
  485. if( nSelIdx <= -1 )
  486. return;
  487. DisplayFormInfo(nSelIdx);
  488. ChangeEditMode(3);
  489. }
  490. //---------------------------------------------------------------------------
  491. void __fastcall TFrmCameraScreenManager::DisplayFormInfo(int AIdx)
  492. {
  493. TcxGridDataController *pDc = TvList->DataController;
  494. String sScrName = VarToStr(pDc->Values[AIdx][Col02->Index]);
  495. EdName->Text = sScrName;
  496. EdOrgName->Text = sScrName;
  497. CMM_ClearGridTableView(TvCtlr);
  498. try
  499. {
  500. int nRow;
  501. TcxDataController *pGDC = TvCtlr->DataController;
  502. TvCtlr->BeginUpdate();
  503. TMonitoringScreen *pObj = ObjScreenManager->FLists.Find(sScrName);
  504. if (!pObj)
  505. {
  506. return;
  507. }
  508. FOR_STL(TScreenCtlr*, pScr, pObj->FLists)
  509. {
  510. nRow = pGDC->AppendRecord();
  511. pGDC->Values[nRow][ColCtlr1->Index] = String(pScr->SEQ);
  512. pGDC->Values[nRow][ColCtlr2->Index] = String(pScr->CTLR_NMBR);
  513. TMonitoringCtlr *pCtlr = ObjCtlrManager->FLists.Find(pScr->CTLR_NMBR);
  514. if (pCtlr) pGDC->Values[nRow][ColCtlr3->Index] = pCtlr->NAME;
  515. else pGDC->Values[nRow][ColCtlr3->Index] = "--???--";
  516. }
  517. }
  518. __finally
  519. {
  520. TvCtlr->EndUpdate();
  521. }
  522. }
  523. //---------------------------------------------------------------------------
  524. bool __fastcall TFrmCameraScreenManager::FindCtlrInfo(String ACtlrNmbr)
  525. {
  526. try {
  527. TvCtlr->BeginUpdate();
  528. for (int ii = 0; ii < TvCtlr->DataController->RecordCount; ii++)
  529. {
  530. String sCtlrNmbr = VarToStr(TvCtlr->DataController->Values[ii][ColCtlr2->Index]);
  531. if (sCtlrNmbr == ACtlrNmbr) return true;
  532. }
  533. }
  534. __finally
  535. {
  536. TvCtlr->EndUpdate();
  537. }
  538. return false;
  539. }
  540. //---------------------------------------------------------------------------
  541. void __fastcall TFrmCameraScreenManager::UpdateCtlrSeq()
  542. {
  543. try {
  544. TvCtlr->BeginUpdate();
  545. for (int ii = 0; ii < TvCtlr->DataController->RecordCount; ii++)
  546. {
  547. TvCtlr->DataController->Values[ii][ColCtlr1->Index] = String(ii+1);
  548. }
  549. }
  550. __finally
  551. {
  552. TvCtlr->EndUpdate();
  553. }
  554. }
  555. //---------------------------------------------------------------------------
  556. void __fastcall TFrmCameraScreenManager::BtnListAddClick(TObject *Sender)
  557. {
  558. TcxGridTableView *pSrcList = FRAMEObjList1->TvList;
  559. TcxGridTableView *pDstList = TvCtlr;
  560. int nSelRows = pSrcList->Controller->SelectedRowCount;
  561. if (nSelRows <= 0)
  562. {
  563. return;
  564. }
  565. try
  566. {
  567. TcxGridDataController *pGDC = pDstList->DataController;
  568. try
  569. {
  570. for (int ii = 0; ii < nSelRows; ii++)
  571. {
  572. int nSelIdx = pSrcList->Controller->SelectedRows[ii]->RecordIndex;
  573. String sCtlrNmbr = VarToStr(pSrcList->DataController->Values[nSelIdx][FRAMEObjList1->Column01->Index]);
  574. String sCtlrName = VarToStr(pSrcList->DataController->Values[nSelIdx][FRAMEObjList1->Column03->Index]);
  575. if (FindCtlrInfo(sCtlrNmbr)) continue;
  576. int nRow = pGDC->AppendRecord();
  577. pGDC->Values[nRow][ColCtlr2->Index] = sCtlrNmbr;
  578. pGDC->Values[nRow][ColCtlr3->Index] = sCtlrName;
  579. }
  580. }
  581. catch(...)
  582. {
  583. }
  584. }
  585. __finally
  586. {
  587. UpdateCtlrSeq();
  588. }
  589. }
  590. //---------------------------------------------------------------------------
  591. void __fastcall TFrmCameraScreenManager::BtnListDeleteClick(TObject *Sender)
  592. {
  593. TcxGridTableView *pSrcList = TvCtlr;
  594. int nFocused = pSrcList->Controller->FocusedRecordIndex;
  595. int nSelRows = pSrcList->Controller->SelectedRowCount;
  596. if (nSelRows <= 0)
  597. {
  598. return;
  599. }
  600. try
  601. {
  602. TcxGridDataController *pGDC = pSrcList->DataController;
  603. pSrcList->BeginUpdate();
  604. try
  605. {
  606. pSrcList->Controller->DeleteSelection();
  607. int nDataCnt = pSrcList->DataController->RecordCount;
  608. if (nDataCnt <= nFocused)
  609. nFocused = nDataCnt - 1;
  610. pSrcList->Controller->ClearSelection();
  611. if (nFocused >= 0)
  612. {
  613. pSrcList->Controller->FocusedRowIndex = nFocused;
  614. pSrcList->ViewData->Records[nFocused]->Focused = true;
  615. pSrcList->ViewData->Records[nFocused]->Selected = true;
  616. }
  617. //CxLink->SetFocus();
  618. }
  619. catch(...)
  620. {
  621. }
  622. }
  623. __finally
  624. {
  625. pSrcList->EndUpdate();
  626. UpdateCtlrSeq();
  627. }
  628. }
  629. //---------------------------------------------------------------------------
  630. void __fastcall TFrmCameraScreenManager::BtnUpClick(TObject *Sender)
  631. {
  632. try
  633. {
  634. TvCtlr->BeginUpdate();
  635. int nCurIdx = TvCtlr->DataController->FocusedRowIndex;//FocusedRecordIndex;
  636. if (nCurIdx <= 0)
  637. {
  638. return;
  639. }
  640. int nUpIdx = nCurIdx-1;
  641. try
  642. {
  643. String sVal1 = VarToStr(TvCtlr->DataController->Values[nCurIdx][ColCtlr1->Index]);
  644. String sVal2 = VarToStr(TvCtlr->DataController->Values[nCurIdx][ColCtlr2->Index]);
  645. String sVal3 = VarToStr(TvCtlr->DataController->Values[nCurIdx][ColCtlr3->Index]);
  646. TvCtlr->DataController->Values[nCurIdx][ColCtlr1->Index] = TvCtlr->DataController->Values[nUpIdx][ColCtlr1->Index];
  647. TvCtlr->DataController->Values[nCurIdx][ColCtlr2->Index] = TvCtlr->DataController->Values[nUpIdx][ColCtlr2->Index];
  648. TvCtlr->DataController->Values[nCurIdx][ColCtlr3->Index] = TvCtlr->DataController->Values[nUpIdx][ColCtlr3->Index];
  649. TvCtlr->DataController->Values[nUpIdx][ColCtlr1->Index] = sVal1;
  650. TvCtlr->DataController->Values[nUpIdx][ColCtlr2->Index] = sVal2;
  651. TvCtlr->DataController->Values[nUpIdx][ColCtlr3->Index] = sVal3;
  652. TvCtlr->Controller->ClearSelection();
  653. TvCtlr->Controller->FocusedRowIndex = nUpIdx;
  654. TvCtlr->ViewData->Records[nUpIdx]->Focused = true;
  655. TvCtlr->ViewData->Records[nUpIdx]->Selected = true;
  656. CxCtlr->SetFocus();
  657. }
  658. catch(...)
  659. {
  660. }
  661. }
  662. __finally
  663. {
  664. TvCtlr->EndUpdate();
  665. UpdateCtlrSeq();
  666. }
  667. }
  668. //---------------------------------------------------------------------------
  669. void __fastcall TFrmCameraScreenManager::BtnDownClick(TObject *Sender)
  670. {
  671. try
  672. {
  673. TvCtlr->BeginUpdate();
  674. int nCurIdx = TvCtlr->DataController->FocusedRowIndex;//FocusedRecordIndex;
  675. if (nCurIdx < 0)
  676. {
  677. return;
  678. }
  679. if (nCurIdx == TvCtlr->DataController->RecordCount-1)
  680. {
  681. return;
  682. }
  683. int nDnIdx = nCurIdx+1;
  684. try
  685. {
  686. String sVal1 = VarToStr(TvCtlr->DataController->Values[nCurIdx][ColCtlr1->Index]);
  687. String sVal2 = VarToStr(TvCtlr->DataController->Values[nCurIdx][ColCtlr2->Index]);
  688. String sVal3 = VarToStr(TvCtlr->DataController->Values[nCurIdx][ColCtlr3->Index]);
  689. TvCtlr->DataController->Values[nCurIdx][ColCtlr1->Index] = TvCtlr->DataController->Values[nDnIdx][ColCtlr1->Index];
  690. TvCtlr->DataController->Values[nCurIdx][ColCtlr2->Index] = TvCtlr->DataController->Values[nDnIdx][ColCtlr2->Index];
  691. TvCtlr->DataController->Values[nCurIdx][ColCtlr3->Index] = TvCtlr->DataController->Values[nDnIdx][ColCtlr3->Index];
  692. TvCtlr->DataController->Values[nDnIdx][ColCtlr1->Index] = sVal1;
  693. TvCtlr->DataController->Values[nDnIdx][ColCtlr2->Index] = sVal2;
  694. TvCtlr->DataController->Values[nDnIdx][ColCtlr3->Index] = sVal3;
  695. TvCtlr->Controller->ClearSelection();
  696. TvCtlr->Controller->FocusedRowIndex = nDnIdx;
  697. TvCtlr->ViewData->Records[nDnIdx]->Focused = true;
  698. TvCtlr->ViewData->Records[nDnIdx]->Selected = true;
  699. CxCtlr->SetFocus();
  700. }
  701. catch(...)
  702. {
  703. }
  704. }
  705. __finally
  706. {
  707. TvCtlr->EndUpdate();
  708. UpdateCtlrSeq();
  709. }
  710. }
  711. //---------------------------------------------------------------------------