BDS0010MF.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  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 "BDS0010MF.h"
  10. //---------------------------------------------------------------------------
  11. #pragma package(smart_init)
  12. #pragma link "cxButtons"
  13. #pragma link "cxContainer"
  14. #pragma link "cxControls"
  15. #pragma link "cxEdit"
  16. #pragma link "cxGraphics"
  17. #pragma link "cxGroupBox"
  18. #pragma link "cxLabel"
  19. #pragma link "cxLookAndFeelPainters"
  20. #pragma link "cxLookAndFeels"
  21. #pragma link "cxSplitter"
  22. #pragma link "cxTextEdit"
  23. #pragma link "dxSkinBlack"
  24. #pragma link "dxSkinBlue"
  25. #pragma link "dxSkinsCore"
  26. #pragma link "FRAME_BlackBoxListF"
  27. #pragma resource "*.dfm"
  28. TBDS0010M *BDS0010M = NULL;
  29. //---------------------------------------------------------------------------
  30. __fastcall TBDS0010M::TBDS0010M(TComponent* Owner)
  31. : TForm(Owner)
  32. {
  33. ITSSkin_Load(this);
  34. CMM_LoadForm(g_sFormsDir, this);
  35. FUpdate= false;
  36. FTitle = "블랙박스 단말기 관리";
  37. FRAMEBlackBoxList1->TvList->FilterRow->Visible = false;
  38. FRAMEBlackBoxList1->PnlTop->Visible = false;
  39. FRAMEBlackBoxList1->PnlBottom->Visible = false;
  40. FRAMEBlackBoxList1->ColumnSel->Visible = false;
  41. //FRAMEBlackBoxList1->Column13->Visible = true;
  42. m_pGDC = FRAMEBlackBoxList1->TvList->DataController;
  43. }
  44. //---------------------------------------------------------------------------
  45. /*
  46. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  47. * Form과 DataModule class를 delete시킨다.
  48. * arguments
  49. *
  50. * return
  51. * void
  52. */
  53. void __fastcall TBDS0010M::CommClose()
  54. {
  55. try
  56. {
  57. CMM_SaveForm(g_sFormsDir, this);
  58. }
  59. catch(...)
  60. {
  61. }
  62. }
  63. //---------------------------------------------------------------------------
  64. /*
  65. * Form을 보여줄때 호출되는 event 메서드이다.
  66. * arguments
  67. * Sender : event handler 객체
  68. * return
  69. * void
  70. */
  71. void __fastcall TBDS0010M::FormShow(TObject *Sender)
  72. {
  73. Refresh();
  74. FormInit();
  75. ChangeEditMode(1);
  76. TmrShow->Enabled = true;
  77. }
  78. //---------------------------------------------------------------------------
  79. /*
  80. * form 초기화
  81. *
  82. * arguments
  83. *
  84. * return
  85. * void
  86. */
  87. void __fastcall TBDS0010M::FormInit()
  88. {
  89. EdId->Text = "";
  90. BDS_MNGM_NMBR->Text = "";
  91. OPNC_NMBR->Text = "";
  92. MDM_NMBR->Text = "";
  93. USIM_NMBR->Text = "";
  94. VHCL_NMBR->Text = "";
  95. OWNR_NM->Text = "";
  96. PRCT_NM->Text = "";
  97. FNewDb = false;
  98. }
  99. //---------------------------------------------------------------------------
  100. /*
  101. * Form이 Show되고 난 후 최초 1회 수행되는 타이머 이벤트
  102. * arguments
  103. * Sender : event handler 객체
  104. * return
  105. * void
  106. */
  107. void __fastcall TBDS0010M::TmrShowTimer(TObject *Sender)
  108. {
  109. TmrShow->Enabled = false;
  110. FRAMEBlackBoxList1->UpdateList();
  111. }
  112. //---------------------------------------------------------------------------
  113. /*
  114. * Close 버튼 클릭 이벤트 핸들러
  115. * arguments
  116. * Sender : event handler 객체
  117. * return
  118. * void
  119. */
  120. void __fastcall TBDS0010M::BtnCloseClick(TObject *Sender)
  121. {
  122. Close();
  123. }
  124. //---------------------------------------------------------------------------
  125. void __fastcall TBDS0010M::FormClose(TObject *Sender, TCloseAction &Action)
  126. {
  127. CommClose();
  128. BDS0010M = NULL;
  129. Action = caFree;
  130. }
  131. //---------------------------------------------------------------------------
  132. void __fastcall TBDS0010M::FormCloseQuery(TObject *Sender, bool &CanClose)
  133. {
  134. if (FUpdate)
  135. {
  136. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_14, 0);
  137. }
  138. FRAMEBlackBoxList1->OnCloseQuery(CanClose);
  139. }
  140. //---------------------------------------------------------------------------
  141. void __fastcall TBDS0010M::DisplayInfo(TBlackBox* AObj)
  142. {
  143. FormInit();
  144. if (!AObj) return;
  145. EdId->Text = AObj->BDS_MNGM_NMBR;
  146. BDS_MNGM_NMBR->Text = AObj->BDS_MNGM_NMBR;
  147. OPNC_NMBR->Text = AObj->OPNC_NMBR;
  148. MDM_NMBR->Text = AObj->MDM_NMBR;
  149. USIM_NMBR->Text = AObj->USIM_NMBR;
  150. VHCL_NMBR->Text = AObj->VHCL_NMBR;
  151. OWNR_NM->Text = AObj->OWNR_NM;
  152. PRCT_NM->Text = AObj->PRCT_NM;
  153. ChangeEditMode(3);
  154. }
  155. //---------------------------------------------------------------------------
  156. void __fastcall TBDS0010M::FRAMEBlackBoxList1TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  157. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  158. {
  159. if (!ACellViewInfo) return;
  160. int nRow = FRAMEBlackBoxList1->TvList->DataController->FocusedRecordIndex;
  161. if( nRow <= -1 )
  162. return;
  163. int nMemPtr = FRAMEBlackBoxList1->TvList->DataController->Values[nRow][FRAMEBlackBoxList1->Column99->Index];
  164. TBlackBox* pObj = (TBlackBox*)nMemPtr;
  165. DisplayInfo(pObj);
  166. }
  167. //---------------------------------------------------------------------------
  168. void __fastcall TBDS0010M::BtnEditClick(TObject *Sender)
  169. {
  170. if (BtnEdit->Caption == "편집")
  171. {
  172. ChangeEditMode(0);
  173. FNewDb = false;
  174. }
  175. else
  176. {
  177. String sId = EdId->Text;
  178. ChangeEditMode(1);
  179. TBlackBox *pObj = BlackBoxManager->FLists.Find(sId.ToIntDef(0));
  180. if (pObj)
  181. {
  182. CMM_SetGridRow(FRAMEBlackBoxList1->CxList, FRAMEBlackBoxList1->TvList, sId, FRAMEBlackBoxList1->Column01->Index);
  183. DisplayInfo(pObj);
  184. }
  185. }
  186. }
  187. //---------------------------------------------------------------------------
  188. void __fastcall TBDS0010M::ChangeEditMode(int AEdit)
  189. {
  190. bool bEnabled = false;
  191. switch(AEdit)
  192. {
  193. case 0: //편집버튼클릭
  194. {
  195. BtnEdit->Enabled = true;
  196. BtnInsert->Enabled = false;
  197. BtnDelete->Enabled = false;
  198. BtnSave->Enabled = true;
  199. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  200. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  201. }
  202. break;
  203. case 1: //편집[취소]버튼클릭
  204. {
  205. FormInit(); //화면을 모두 지운다.
  206. BtnEdit->Enabled = false;
  207. BtnInsert->Enabled = true;
  208. BtnDelete->Enabled = false;
  209. BtnSave->Enabled = false;
  210. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  211. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  212. bEnabled = true;
  213. }
  214. break;
  215. case 2: //추가
  216. {
  217. BtnEdit->Enabled = true;
  218. BtnInsert->Enabled = false;
  219. BtnDelete->Enabled = false;
  220. BtnSave->Enabled = true;
  221. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  222. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  223. }
  224. break;
  225. case 3: //수정모드
  226. {
  227. BtnEdit->Enabled = true;
  228. BtnInsert->Enabled = true;
  229. BtnDelete->Enabled = true;
  230. BtnSave->Enabled = false;
  231. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  232. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  233. bEnabled = true;
  234. }
  235. break;
  236. }
  237. if (AEdit == 0 || AEdit == 2)
  238. {
  239. FRAMEBlackBoxList1->CxList->Enabled = false;
  240. GrpInfo->Enabled = true;
  241. }
  242. else
  243. {
  244. FRAMEBlackBoxList1->CxList->Enabled = true;
  245. GrpInfo->Enabled = false;
  246. }
  247. }
  248. //---------------------------------------------------------------------------
  249. void __fastcall TBDS0010M::BtnInsertClick(TObject *Sender)
  250. {
  251. FormInit();
  252. //신규아이디를 얻어와서 화면을 초기화한다.
  253. String sId;
  254. #if 0
  255. if (!BlackBoxManager->GetNextBlackBoxId(sId))
  256. {
  257. Application->MessageBox(L"새로운 관리번호를 생성하지 못하였습니다.\r\n프로그램 종료후에 다시 시도해 보세요.",
  258. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  259. return;
  260. }
  261. #else
  262. sId = InputBox("관리번호", "신규 관리번호를 입력하세요(20Byte).", "관리번호" );
  263. sId = sId.Trim();
  264. if (sId == "관리번호" || sId == "")
  265. {
  266. return;
  267. }
  268. if (AnsiString(sId).Length() > 10)
  269. {
  270. Application->MessageBox(L"관리번호는 10Byte를 초과할 수 없습니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  271. return;
  272. }
  273. try
  274. {
  275. int nId = sId.ToInt();
  276. }
  277. catch(Exception &e)
  278. {
  279. Application->MessageBox(L"관리번호는 숫자이어야 합니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  280. return;
  281. }
  282. TBlackBox *pDb = (TBlackBox *)BlackBoxManager->FLists.Find(sId.ToIntDef(0));
  283. if (pDb)
  284. {
  285. String sErr = FrmLang->lbIdErr->Caption + "[" + sId + "]";
  286. Application->MessageBox(sErr.c_str(),//("[" + sId + "]는 사용할 수 없는 관리번호 입니다.").c_str(),
  287. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  288. return;
  289. }
  290. #endif
  291. EdId->Text = sId;
  292. BDS_MNGM_NMBR->Text = sId;
  293. ChangeEditMode(2);
  294. FNewDb = true;
  295. }
  296. //---------------------------------------------------------------------------
  297. void __fastcall TBDS0010M::BtnDeleteClick(TObject *Sender)
  298. {
  299. int nIdx = m_pGDC->FocusedRecordIndex;
  300. if (nIdx < 0) return;
  301. String sId = EdId->Text;
  302. if (sId.IsEmpty())
  303. {
  304. Application->MessageBox(L"삭제할 블랙박스정보를 목록에서 선택하세요.\r\n목록에서 더블클릭하여 선택합니다.", FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  305. return;
  306. }
  307. String sMsg;
  308. sMsg = "ID: " + sId;
  309. sMsg+= "\r\n선택하신 블랙박스 단말기 정보를 삭제하시겠습니까?";
  310. if (Application->MessageBox(sMsg.c_str(), FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  311. TBlackBox *pObj = BlackBoxManager->FLists.Find(sId.ToIntDef(0));
  312. if (pObj)
  313. {
  314. //pObj->DEL_USER_ID = g_pLOGIN->sUserId; //변경자 명
  315. //pObj->DEL_DT = Now().FormatString("yyyymmddhhnnss"); //변경 일시
  316. if (BlackBoxManager->DeleteBlackBox(pObj))
  317. {
  318. pObj->MEM_DEL = "Y";
  319. FRAMEBlackBoxList1->UpdateList();
  320. }
  321. #if 0
  322. TItsFacility *pFacility = ItsFacilityManager->FLists.Find(sId);
  323. if (pFacility)
  324. {
  325. FUpdate = true;
  326. }
  327. #endif
  328. FUpdate = true;
  329. Application->MessageBox(L"블랙박스 단말기 정보삭제\r\n블랙박스 단말기 정보를 삭제 하였습니다.",
  330. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  331. FormInit();
  332. ChangeEditMode(1);
  333. }
  334. }
  335. //---------------------------------------------------------------------------
  336. void __fastcall TBDS0010M::BtnSaveClick(TObject *Sender)
  337. {
  338. if (EdId->Text.IsEmpty() ||
  339. BDS_MNGM_NMBR->Text.Trim().IsEmpty() )
  340. {
  341. Application->MessageBox(L"★항목은 필수 입력 항목입니다.\r\n모두 입력후 진행해 주세요.",
  342. FTitle.c_str(), MB_OK|MB_ICONERROR|MB_APPLMODAL);
  343. return;
  344. }
  345. String sId = EdId->Text;
  346. TBlackBox *pObj;
  347. if (FNewDb)
  348. pObj = new TBlackBox();
  349. else
  350. pObj = BlackBoxManager->FLists.Find(sId.ToIntDef(0));
  351. if (pObj)
  352. {
  353. pObj->BDS_MNGM_NMBR = sId.ToIntDef(0);
  354. pObj->OPNC_NMBR = OPNC_NMBR->Text.Trim();
  355. pObj->MDM_NMBR = MDM_NMBR->Text.Trim();
  356. pObj->USIM_NMBR = USIM_NMBR->Text.Trim();
  357. pObj->VHCL_NMBR = VHCL_NMBR->Text.Trim();
  358. pObj->OWNR_NM = OWNR_NM->Text.Trim();
  359. pObj->PRCT_NM = PRCT_NM->Text.Trim();
  360. pObj->MEM_DEL = "N";
  361. bool bResult;
  362. if (FNewDb)
  363. {
  364. //pObj->ADTN_USER_ID = g_pLOGIN->sUserId; //변경자 명
  365. //pObj->ADTN_DT = Now().FormatString("yyyymmddhhnnss"); //변경 일시
  366. bResult = BlackBoxManager->InsertBlackBox(pObj);
  367. if (bResult)
  368. {
  369. BlackBoxManager->FLists.Push(sId.ToIntDef(0), pObj);
  370. }
  371. }
  372. else
  373. {
  374. //pObj->CHNG_USER_ID = g_pLOGIN->sUserId; //변경자 명
  375. //pObj->CHNG_DT = Now().FormatString("yyyymmddhhnnss"); //변경 일시
  376. bResult = BlackBoxManager->UpdateBlackBox(pObj);
  377. }
  378. if (bResult)
  379. {
  380. Application->MessageBox(FrmLang->lblDbSave->Caption.c_str(),//L"블랙박스 단말기 정보저장\r\n블랙박스 단말기 정보를 저장 하였습니다.",
  381. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  382. FUpdate = true;
  383. FRAMEBlackBoxList1->UpdateList();
  384. CMM_SetGridRow(FRAMEBlackBoxList1->CxList, FRAMEBlackBoxList1->TvList, sId, FRAMEBlackBoxList1->Column01->Index);
  385. DisplayInfo(pObj);
  386. }
  387. }
  388. }
  389. //---------------------------------------------------------------------------