AVIM010MF.cpp 22 KB

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