AVIM010MF.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "CDSCodeF.h"
  7. #include "CDSFacilityF.h"
  8. #include "XiMapUtilF.h"
  9. #pragma hdrstop
  10. #include "AVIM010MF.h"
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma link "cxButtons"
  14. #pragma link "cxCalendar"
  15. #pragma link "cxContainer"
  16. #pragma link "cxControls"
  17. #pragma link "cxDropDownEdit"
  18. #pragma link "cxEdit"
  19. #pragma link "cxGraphics"
  20. #pragma link "cxGroupBox"
  21. #pragma link "cxLabel"
  22. #pragma link "cxLookAndFeelPainters"
  23. #pragma link "cxLookAndFeels"
  24. #pragma link "cxMaskEdit"
  25. #pragma link "cxPC"
  26. #pragma link "cxPCdxBarPopupMenu"
  27. #pragma link "cxSpinEdit"
  28. #pragma link "cxSplitter"
  29. #pragma link "cxTextEdit"
  30. #pragma link "cxTimeEdit"
  31. #pragma link "dxSkinBlack"
  32. #pragma link "dxSkinBlue"
  33. #pragma link "dxSkinCaramel"
  34. #pragma link "dxSkinCoffee"
  35. #pragma link "dxSkinDarkRoom"
  36. #pragma link "dxSkinDarkSide"
  37. #pragma link "dxSkinFoggy"
  38. #pragma link "dxSkinGlassOceans"
  39. #pragma link "dxSkiniMaginary"
  40. #pragma link "dxSkinLilian"
  41. #pragma link "dxSkinLiquidSky"
  42. #pragma link "dxSkinLondonLiquidSky"
  43. #pragma link "dxSkinMcSkin"
  44. #pragma link "dxSkinMoneyTwins"
  45. #pragma link "dxSkinOffice2007Black"
  46. #pragma link "dxSkinOffice2007Blue"
  47. #pragma link "dxSkinOffice2007Green"
  48. #pragma link "dxSkinOffice2007Pink"
  49. #pragma link "dxSkinOffice2007Silver"
  50. #pragma link "dxSkinOffice2010Black"
  51. #pragma link "dxSkinOffice2010Blue"
  52. #pragma link "dxSkinOffice2010Silver"
  53. #pragma link "dxSkinsCore"
  54. #pragma link "dxSkinscxPCPainter"
  55. #pragma link "dxSkinSeven"
  56. #pragma link "dxSkinSharp"
  57. #pragma link "dxSkinSilver"
  58. #pragma link "dxSkinStardust"
  59. #pragma link "cxRadioGroup"
  60. #pragma link "cxClasses"
  61. #pragma link "cxCustomData"
  62. #pragma link "cxData"
  63. #pragma link "cxDataStorage"
  64. #pragma link "cxDBData"
  65. #pragma link "cxFilter"
  66. #pragma link "cxGrid"
  67. #pragma link "cxGridCustomTableView"
  68. #pragma link "cxGridCustomView"
  69. #pragma link "cxGridDBTableView"
  70. #pragma link "cxGridLevel"
  71. #pragma link "cxGridTableView"
  72. #pragma link "cxStyles"
  73. #pragma link "FRAME_GisMapF"
  74. #pragma link "cxCheckBox"
  75. #pragma link "FRAME_AviListF"
  76. #pragma resource "*.dfm"
  77. TAVIM010M *AVIM010M = NULL;
  78. //---------------------------------------------------------------------------
  79. __fastcall TAVIM010M::TAVIM010M(TComponent* Owner)
  80. : TForm(Owner)
  81. {
  82. ITSSkin_Load(this);
  83. CMM_LoadForm(g_sFormsDir, this);
  84. FUpdate= false;
  85. FTitle = "AVI-제어기 관리";
  86. FRAMEAviList1->PnlTop->Visible = false;
  87. FRAMEAviList1->PnlBottom->Visible = false;
  88. FRAMEAviList1->ColumnSel->Visible = false;
  89. FRAMEAviList1->Column02->Visible = false;
  90. FRAMEGisMap1->LbDef->Caption = "(선택메뉴를 클릭하여 위치를 선택합니다.)";
  91. FRAMEGisMap1->LbDef->Hint = FRAMEGisMap1->LbDef->Caption;
  92. m_pGDC = FRAMEAviList1->TvList->DataController;
  93. }
  94. //---------------------------------------------------------------------------
  95. /*
  96. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  97. * Form과 DataModule class를 delete시킨다.
  98. * arguments
  99. *
  100. * return
  101. * void
  102. */
  103. void __fastcall TAVIM010M::CommClose()
  104. {
  105. try
  106. {
  107. CMM_SaveForm(g_sFormsDir, this);
  108. }
  109. catch(...)
  110. {
  111. }
  112. }
  113. //---------------------------------------------------------------------------
  114. /*
  115. * Form을 보여줄때 호출되는 event 메서드이다.
  116. * arguments
  117. * Sender : event handler 객체
  118. * return
  119. * void
  120. */
  121. void __fastcall TAVIM010M::FormShow(TObject *Sender)
  122. {
  123. Refresh();
  124. FormInit();
  125. ChangeEditMode(1);
  126. TmrShow->Enabled = true;
  127. }
  128. //---------------------------------------------------------------------------
  129. /*
  130. * form 초기화
  131. *
  132. * arguments
  133. *
  134. * return
  135. * void
  136. */
  137. void __fastcall TAVIM010M::FormInit()
  138. {
  139. EdId->Text = "";
  140. EdAVI_CTLR_MNGM_NMBR->Text = "";
  141. EdAVI_ID->Text = "";
  142. EdLINK_ID->Text = "";
  143. EdAVI_LCTN_NM->Text = "";
  144. CbAVI_VALD_YN->Text = "";
  145. EdAVI_CTLR_IP->Text = "";
  146. EdAVI_CTLR_CMNC_PORT->Text = "";
  147. CbAVI_MAIN_CTLR_YN->Text = "";
  148. SeAVI_MNGM_LANE_NUM->Value = 0;
  149. SeAVI_CMRA_NUM->Value = 0;
  150. SeAVI_DTCT_NUM->Value = 0;
  151. EdAVI_DTCT_NM->Text = "";
  152. SeAVI_CLCT_CYCL->Value = 0;
  153. CbAVI_LAMP_AUTO_YN->Text = "";
  154. EdAVI_LAMP_ON_HMS->Text = "";
  155. EdAVI_LAMP_OFF_HMS->Text = "";
  156. CbAVI_LAMP_ON_YN->Text = "";
  157. SeX_CRDN->Value = 0;
  158. SeY_CRDN->Value = 0;
  159. EdRMRK->Text = "";
  160. TXiMapUtil::ClearPath(FRAMEGisMap1->xclntMap);
  161. FNewDb = false;
  162. }
  163. //---------------------------------------------------------------------------
  164. /*
  165. * Form이 Show되고 난 후 최초 1회 수행되는 타이머 이벤트
  166. * arguments
  167. * Sender : event handler 객체
  168. * return
  169. * void
  170. */
  171. void __fastcall TAVIM010M::TmrShowTimer(TObject *Sender)
  172. {
  173. TmrShow->Enabled = false;
  174. FRAMEGisMap1->LinkLevel = 1;
  175. FRAMEGisMap1->LoadGisMap();
  176. //FRAMEGisMap1->ShowHideTrafficLayer(false);
  177. UpdateAviIcon();
  178. FRAMEAviList1->UpdateList();
  179. }
  180. //---------------------------------------------------------------------------
  181. /*
  182. * Close 버튼 클릭 이벤트 핸들러
  183. * arguments
  184. * Sender : event handler 객체
  185. * return
  186. * void
  187. */
  188. void __fastcall TAVIM010M::BtnCloseClick(TObject *Sender)
  189. {
  190. Close();
  191. }
  192. //---------------------------------------------------------------------------
  193. void __fastcall TAVIM010M::FormClose(TObject *Sender, TCloseAction &Action)
  194. {
  195. CommClose();
  196. AVIM010M = NULL;
  197. Action = caFree;
  198. }
  199. //---------------------------------------------------------------------------
  200. void __fastcall TAVIM010M::FormCloseQuery(TObject *Sender, bool &CanClose)
  201. {
  202. if (FUpdate)
  203. {
  204. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  205. }
  206. FRAMEAviList1->OnCloseQuery(CanClose);
  207. }
  208. //---------------------------------------------------------------------------
  209. void __fastcall TAVIM010M::DisplayInfo(TItsAvi* AObj)
  210. {
  211. FormInit();
  212. if (!AObj) return;
  213. EdId->Text = AObj->AVI_CTLR_MNGM_NMBR;
  214. EdAVI_CTLR_MNGM_NMBR->Text = AObj->AVI_CTLR_MNGM_NMBR;
  215. EdAVI_ID->Text = AObj->AVI_ID;
  216. EdLINK_ID->Text = AObj->LINK_ID;
  217. EdAVI_LCTN_NM->Text = AObj->AVI_LCTN_NM;
  218. CbAVI_VALD_YN->Text = AObj->AVI_VALD_YN;
  219. EdAVI_CTLR_IP->Text = AObj->AVI_CTLR_IP;
  220. EdAVI_CTLR_CMNC_PORT->Text = AObj->AVI_CTLR_CMNC_PORT;
  221. CbAVI_MAIN_CTLR_YN->Text = AObj->AVI_MAIN_CTLR_YN;
  222. SeAVI_MNGM_LANE_NUM->Value = AObj->AVI_MNGM_LANE_NUM.ToIntDef(0);
  223. SeAVI_CMRA_NUM->Value = AObj->AVI_CMRA_NUM.ToIntDef(0);
  224. SeAVI_DTCT_NUM->Value = AObj->AVI_DTCT_NUM.ToIntDef(0);
  225. EdAVI_DTCT_NM->Text = AObj->AVI_DTCT_NM;
  226. SeAVI_CLCT_CYCL->Value = AObj->AVI_CLCT_CYCL.ToIntDef(0);
  227. CbAVI_LAMP_AUTO_YN->Text = AObj->AVI_LAMP_AUTO_YN;
  228. EdAVI_LAMP_ON_HMS->Text = AObj->AVI_LAMP_ON_HMS;
  229. EdAVI_LAMP_OFF_HMS->Text = AObj->AVI_LAMP_OFF_HMS;
  230. CbAVI_LAMP_ON_YN->Text = AObj->AVI_LAMP_ON_YN;
  231. SeX_CRDN->Value = StrToFloatDef(AObj->X_CRDN, 0);
  232. SeY_CRDN->Value = StrToFloatDef(AObj->Y_CRDN, 0);
  233. EdRMRK->Text = AObj->RMRK;
  234. FRAMEGisMap1->SelectObjectByPos(SeX_CRDN->Value, SeY_CRDN->Value, true);
  235. ChangeEditMode(3);
  236. }
  237. //---------------------------------------------------------------------------
  238. void __fastcall TAVIM010M::FRAMEGisMap1xclntMapMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
  239. {
  240. if (EdId->Properties->ReadOnly) return;
  241. if (Button != mbLeft) return;
  242. if (FRAMEGisMap1->xclntMap->MapOperation != OnSelect) return;
  243. FRAMEGisMap1->xclntMap->SetFocus();
  244. TXiMapUtil::ClearPath(FRAMEGisMap1->xclntMap);
  245. String sLinkId;
  246. int nLayerIdx = FRAMEGisMap1->GetLayerIndex();
  247. if (nLayerIdx >= 0)
  248. {
  249. TXiMapUtil::SelectLinkByPos(FRAMEGisMap1->xsrvrMap, FRAMEGisMap1->xclntMap, nLayerIdx, X, Y, sLinkId);
  250. if (!sLinkId.IsEmpty())
  251. {
  252. EdLINK_ID->Text = sLinkId;
  253. }
  254. }
  255. TDDPoint dptCurr = FRAMEGisMap1->xclntMap->ScreenToReal(Point( X, Y));
  256. try {
  257. SeX_CRDN->Value = dptCurr.X;
  258. SeY_CRDN->Value = dptCurr.Y;
  259. } catch(...) {}
  260. }
  261. //---------------------------------------------------------------------------
  262. void __fastcall TAVIM010M::UpdateAviIcon()
  263. {
  264. FRAMEGisMap1->xclntMap->ClearCCTVEvent(true);
  265. TItsFacility *pFacility;
  266. try
  267. {
  268. if (ChkViewIcon->Checked)
  269. {
  270. try
  271. {
  272. FRAMEAviList1->MyItsAviManager->FLists.Lock();
  273. FOR_STL(TItsAvi*, pObj, FRAMEAviList1->MyItsAviManager->FLists)
  274. {
  275. if (pObj->DEL_YN == "Y") continue;
  276. //pFacility = FRAMEAviList1->MyItsAviManager->FLists.Find(pObj->AVI_ID);
  277. //if (!pFacility) continue;
  278. try {
  279. String sTitle = "▶▶AVI-제어기 정보◀◀|AVI ID : " + pObj->AVI_ID + "|명칭 : " + pObj->AVI_LCTN_NM;
  280. FRAMEGisMap1->xclntMap->ADDCCTVEvent(DDPoint(StrToFloatDef(pObj->X_CRDN, 0), StrToFloatDef(pObj->Y_CRDN, 0)), pObj->AVI_ID, "AVI", sTitle, 9, 1, 7);
  281. } catch(...) { }
  282. }
  283. }
  284. __finally
  285. {
  286. FRAMEAviList1->MyItsAviManager->FLists.UnLock();
  287. }
  288. }
  289. }
  290. catch(...)
  291. {
  292. }
  293. FRAMEGisMap1->xclntMap->ReDraw();
  294. }
  295. //---------------------------------------------------------------------------
  296. void __fastcall TAVIM010M::FRAMEAviList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  297. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  298. {
  299. if (!ACellViewInfo) return;
  300. int nRow = FRAMEAviList1->TvList->DataController->FocusedRecordIndex;
  301. if( nRow <= -1 )
  302. return;
  303. int nMemPtr = FRAMEAviList1->TvList->DataController->Values[nRow][FRAMEAviList1->Column99->Index];
  304. TItsAvi* pObj = (TItsAvi*)nMemPtr;
  305. DisplayInfo(pObj);
  306. }
  307. //---------------------------------------------------------------------------
  308. void __fastcall TAVIM010M::ChkViewIconClick(TObject *Sender)
  309. {
  310. UpdateAviIcon();
  311. }
  312. //---------------------------------------------------------------------------
  313. void __fastcall TAVIM010M::BtnEditClick(TObject *Sender)
  314. {
  315. if (BtnEdit->Caption == "편집")
  316. {
  317. ChangeEditMode(0);
  318. FNewDb = false;
  319. }
  320. else
  321. {
  322. String sId = EdId->Text;
  323. ChangeEditMode(1);
  324. TItsAvi *pObj = FRAMEAviList1->MyItsAviManager->FLists.Find(sId);
  325. if (pObj)
  326. {
  327. CMM_SetGridRow(FRAMEAviList1->CxList, FRAMEAviList1->TvList, sId, FRAMEAviList1->Column01->Index);
  328. DisplayInfo(pObj);
  329. }
  330. }
  331. }
  332. //---------------------------------------------------------------------------
  333. void __fastcall TAVIM010M::ChangeEditMode(int AEdit)
  334. {
  335. bool bEnabled = false;
  336. switch(AEdit)
  337. {
  338. case 0: //편집버튼클릭
  339. {
  340. BtnEdit->Enabled = true;
  341. BtnInsert->Enabled = false;
  342. BtnDelete->Enabled = false;
  343. BtnSave->Enabled = true;
  344. BtnEdit->Caption = "취소";
  345. BtnEdit->Hint = "데이터 편집 취소";
  346. }
  347. break;
  348. case 1: //편집[취소]버튼클릭
  349. {
  350. FormInit(); //화면을 모두 지운다.
  351. BtnEdit->Enabled = false;
  352. BtnInsert->Enabled = true;
  353. BtnDelete->Enabled = false;
  354. BtnSave->Enabled = false;
  355. BtnEdit->Caption = "편집";
  356. BtnEdit->Hint = "데이터 편집";
  357. bEnabled = true;
  358. }
  359. break;
  360. case 2: //추가
  361. {
  362. BtnEdit->Enabled = true;
  363. BtnInsert->Enabled = false;
  364. BtnDelete->Enabled = false;
  365. BtnSave->Enabled = true;
  366. BtnEdit->Caption = "취소";
  367. BtnEdit->Hint = "데이터 편집 취소";
  368. }
  369. break;
  370. case 3: //수정모드
  371. {
  372. BtnEdit->Enabled = true;
  373. BtnInsert->Enabled = true;
  374. BtnDelete->Enabled = true;
  375. BtnSave->Enabled = false;
  376. BtnEdit->Caption = "편집";
  377. BtnEdit->Hint = "데이터 편집";
  378. bEnabled = true;
  379. }
  380. break;
  381. }
  382. if (AEdit == 0 || AEdit == 2)
  383. {
  384. FRAMEAviList1->CxList->Enabled = false;
  385. }
  386. else
  387. {
  388. FRAMEAviList1->CxList->Enabled = true;
  389. }
  390. EdId->Properties->ReadOnly = bEnabled;
  391. EdAVI_CTLR_MNGM_NMBR->Properties->ReadOnly = bEnabled;
  392. EdAVI_ID->Properties->ReadOnly = bEnabled;
  393. EdLINK_ID->Properties->ReadOnly = bEnabled;
  394. EdAVI_LCTN_NM->Properties->ReadOnly = bEnabled;
  395. CbAVI_VALD_YN->Properties->ReadOnly = bEnabled;
  396. EdAVI_CTLR_IP->Properties->ReadOnly = bEnabled;
  397. EdAVI_CTLR_CMNC_PORT->Properties->ReadOnly = bEnabled;
  398. CbAVI_MAIN_CTLR_YN->Properties->ReadOnly = bEnabled;
  399. SeAVI_MNGM_LANE_NUM->Properties->ReadOnly = bEnabled;
  400. SeAVI_CMRA_NUM->Properties->ReadOnly = bEnabled;
  401. SeAVI_DTCT_NUM->Properties->ReadOnly = bEnabled;
  402. EdAVI_DTCT_NM->Properties->ReadOnly = bEnabled;
  403. SeAVI_CLCT_CYCL->Properties->ReadOnly = bEnabled;
  404. CbAVI_LAMP_AUTO_YN->Properties->ReadOnly = bEnabled;
  405. EdAVI_LAMP_ON_HMS->Properties->ReadOnly = bEnabled;
  406. EdAVI_LAMP_OFF_HMS->Properties->ReadOnly = bEnabled;
  407. CbAVI_LAMP_ON_YN->Properties->ReadOnly = bEnabled;
  408. SeX_CRDN->Properties->ReadOnly = bEnabled;
  409. SeY_CRDN->Properties->ReadOnly = bEnabled;
  410. EdRMRK->Properties->ReadOnly = bEnabled;
  411. }
  412. //---------------------------------------------------------------------------
  413. void __fastcall TAVIM010M::BtnInsertClick(TObject *Sender)
  414. {
  415. FormInit();
  416. //신규아이디를 얻어와서 화면을 초기화한다.
  417. String sId;
  418. #if 0
  419. if (!FRAMEAviList1->MyItsAviManager->GetNextAviId(sId))
  420. {
  421. Application->MessageBox(L"새로운 AVI-제어기 관리번호를 생성하지 못하였습니다.\r\n프로그램 종료후에 다시 시도해 보세요.",
  422. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  423. return;
  424. }
  425. #else
  426. sId = InputBox("제어기 관리번호", "신규 제어기 관리번호를 입력하세요(20Byte).", "제어기 관리번호" );
  427. sId = sId.Trim();
  428. if (sId == "제어기 관리번호" || sId == "")
  429. {
  430. return;
  431. }
  432. if (AnsiString(sId).Length() > 20)
  433. {
  434. Application->MessageBox(L"제어기 관리번호는 20Byte를 초과할 수 없습니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  435. return;
  436. }
  437. TItsAvi *pDb = (TItsAvi *)FRAMEAviList1->MyItsAviManager->FLists.Find(sId);
  438. if (pDb)
  439. {
  440. Application->MessageBox(("[" + sId + "]는 사용할 수 없는 제어기 관리번호 입니다.").c_str(), FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  441. return;
  442. }
  443. #endif
  444. EdId->Text = sId;
  445. EdAVI_CTLR_MNGM_NMBR->Text = sId;
  446. ChangeEditMode(2);
  447. FNewDb = true;
  448. }
  449. //---------------------------------------------------------------------------
  450. void __fastcall TAVIM010M::BtnDeleteClick(TObject *Sender)
  451. {
  452. int nIdx = m_pGDC->FocusedRecordIndex;
  453. if (nIdx < 0) return;
  454. String sId = EdId->Text;
  455. if (sId.IsEmpty())
  456. {
  457. Application->MessageBox(L"삭제할 AVI-제어기를 목록에서 선택하세요.\r\n목록에서 더블클릭하여 선택합니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  458. return;
  459. }
  460. String sMsg;
  461. sMsg = "ID: " + sId;
  462. sMsg+= "\r\n선택하신 AVI-제어기 정보를 삭제하시겠습니까?";
  463. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  464. TItsAvi *pObj = FRAMEAviList1->MyItsAviManager->FLists.Find(sId);
  465. if (pObj)
  466. {
  467. if (FRAMEAviList1->MyItsAviManager->DeleteAvi(pObj))
  468. {
  469. pObj->DEL_YN = "Y";
  470. FRAMEAviList1->UpdateList();
  471. }
  472. TItsFacility *pFacility = ItsFacilityManager->FLists.Find(sId);
  473. if (pFacility)
  474. {
  475. FUpdate = true;
  476. }
  477. Application->MessageBox(L"AVI-제어기 정보삭제\r\nAVI-제어기 정보를 삭제 하였습니다.",
  478. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  479. FormInit();
  480. ChangeEditMode(1);
  481. }
  482. }
  483. //---------------------------------------------------------------------------
  484. void __fastcall TAVIM010M::BtnSaveClick(TObject *Sender)
  485. {
  486. if (EdId->Text.IsEmpty() ||
  487. EdAVI_ID->Text.Trim().IsEmpty() ||
  488. EdAVI_LCTN_NM->Text.Trim().IsEmpty()||
  489. SeX_CRDN->Value == 0 ||
  490. SeY_CRDN->Value == 0 )
  491. {
  492. Application->MessageBox(L"★항목은 필수 입력 항목입니다.\r\n모두 입력후 진행해 주세요.",
  493. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  494. return;
  495. }
  496. String sId = EdId->Text;
  497. TItsAvi *pObj;
  498. if (FNewDb)
  499. pObj = new TItsAvi();
  500. else
  501. pObj = FRAMEAviList1->MyItsAviManager->FLists.Find(sId);
  502. if (pObj)
  503. {
  504. pObj->AVI_CTLR_MNGM_NMBR = EdId->Text.Trim();
  505. pObj->AVI_ID = EdAVI_ID->Text.Trim();
  506. pObj->LINK_ID = EdLINK_ID->Text.Trim();
  507. pObj->AVI_LCTN_NM = EdAVI_LCTN_NM->Text.Trim();
  508. pObj->AVI_VALD_YN = CbAVI_VALD_YN->Text.Trim();
  509. pObj->AVI_CTLR_IP = EdAVI_CTLR_IP->Text.Trim();
  510. pObj->AVI_CTLR_CMNC_PORT = EdAVI_CTLR_CMNC_PORT->Text.Trim();
  511. pObj->AVI_MAIN_CTLR_YN = CbAVI_MAIN_CTLR_YN->Text.Trim();
  512. pObj->AVI_MNGM_LANE_NUM = VarToStr(SeAVI_MNGM_LANE_NUM->Value);
  513. pObj->AVI_CMRA_NUM = VarToStr(SeAVI_CMRA_NUM->Value);
  514. pObj->AVI_DTCT_NUM = VarToStr(SeAVI_DTCT_NUM->Value);
  515. pObj->AVI_DTCT_NM = EdAVI_DTCT_NM->Text.Trim();
  516. pObj->AVI_CLCT_CYCL = VarToStr(SeAVI_CLCT_CYCL->Value);
  517. pObj->AVI_LAMP_AUTO_YN = CbAVI_LAMP_AUTO_YN->Text.Trim();
  518. pObj->AVI_LAMP_ON_HMS = EdAVI_LAMP_ON_HMS->Text.Trim();
  519. pObj->AVI_LAMP_OFF_HMS = EdAVI_LAMP_OFF_HMS->Text.Trim();
  520. pObj->AVI_LAMP_ON_YN = CbAVI_LAMP_ON_YN->Text.Trim();
  521. pObj->X_CRDN = VarToStr(SeX_CRDN->Value);
  522. pObj->Y_CRDN = VarToStr(SeY_CRDN->Value);
  523. pObj->RMRK = EdRMRK->Text.Trim();
  524. pObj->DEL_YN = "N";
  525. pObj->Completed = true;
  526. pObj->MEM_DEL = "N";
  527. bool bResult;
  528. if (FNewDb)
  529. {
  530. bResult = FRAMEAviList1->MyItsAviManager->InsertAvi(pObj);
  531. if (bResult)
  532. {
  533. FRAMEAviList1->MyItsAviManager->FLists.Push(sId, pObj);
  534. }
  535. }
  536. else
  537. {
  538. bResult = FRAMEAviList1->MyItsAviManager->UpdateAvi(pObj);
  539. }
  540. if (bResult)
  541. {
  542. Application->MessageBox(L"AVI-제어기 정보저장\r\nAVI-제어기 정보를 저장 하였습니다.",
  543. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  544. FUpdate = true;
  545. FRAMEAviList1->UpdateList();
  546. UpdateAviIcon();
  547. CMM_SetGridRow(FRAMEAviList1->CxList, FRAMEAviList1->TvList, sId, FRAMEAviList1->Column01->Index);
  548. #if 0
  549. DisplayInfo(pObj);
  550. #else
  551. int nRow = FRAMEAviList1->TvList->DataController->FocusedRecordIndex;
  552. if( nRow <= -1 )
  553. return;
  554. int nMemPtr = FRAMEAviList1->TvList->DataController->Values[nRow][FRAMEAviList1->Column99->Index];
  555. TItsAvi* pObj = (TItsAvi*)nMemPtr;
  556. DisplayInfo(pObj);
  557. #endif
  558. }
  559. }
  560. }
  561. //---------------------------------------------------------------------------