IDB0070MF.cpp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "ITSDbF.h"
  6. #include "AppGlobalF.h"
  7. #include "WindowMsgF.h"
  8. #include "ITSLangTransF.h"
  9. #pragma hdrstop
  10. #include "IDB0070MF.h"
  11. #include "ITSSELDAYF.h"
  12. //---------------------------------------------------------------------------
  13. #pragma package(smart_init)
  14. #pragma link "cxButtons"
  15. #pragma link "cxCalc"
  16. #pragma link "cxCheckBox"
  17. #pragma link "cxClasses"
  18. #pragma link "cxContainer"
  19. #pragma link "cxControls"
  20. #pragma link "cxCustomData"
  21. #pragma link "cxData"
  22. #pragma link "cxDataStorage"
  23. #pragma link "cxDropDownEdit"
  24. #pragma link "cxEdit"
  25. #pragma link "cxFilter"
  26. #pragma link "cxGraphics"
  27. #pragma link "cxGrid"
  28. #pragma link "cxGridCustomTableView"
  29. #pragma link "cxGridCustomView"
  30. #pragma link "cxGridLevel"
  31. #pragma link "cxGridTableView"
  32. #pragma link "cxLabel"
  33. #pragma link "cxLookAndFeelPainters"
  34. #pragma link "cxLookAndFeels"
  35. #pragma link "cxStyles"
  36. #pragma link "cxTextEdit"
  37. #pragma link "dxSkinBlack"
  38. #pragma link "dxSkinBlue"
  39. #pragma link "dxSkinsCore"
  40. #pragma link "dxSkinscxPCPainter"
  41. #pragma resource "*.dfm"
  42. TIDB0070M *IDB0070M = NULL;
  43. //---------------------------------------------------------------------------
  44. __fastcall TIDB0070M::TIDB0070M(TComponent* Owner)
  45. : TForm(Owner)
  46. {
  47. LangTrans->Translate(this, ITSDb_GetConnection());
  48. ITSSkin_Load(this);
  49. CMM_LoadForm(g_sFormsDir, this);
  50. FTitle = Caption;//"휴일정보관리";
  51. }
  52. //---------------------------------------------------------------------------
  53. /*
  54. * 닫기버튼 이나 x버튼 클릭시 공통으로 처리하는 로직이들어간다..
  55. * Form과 DataModule class를 delete시킨다.
  56. * arguments
  57. *
  58. * return
  59. * void
  60. */
  61. void __fastcall TIDB0070M::CommClose()
  62. {
  63. try
  64. {
  65. if (ItsHolidayManager)
  66. {
  67. delete ItsHolidayManager;
  68. ItsHolidayManager = NULL;
  69. }
  70. CMM_SaveForm(g_sFormsDir, this);
  71. }
  72. catch(...)
  73. {
  74. }
  75. }
  76. //---------------------------------------------------------------------------
  77. /*
  78. * Form이 메모리에서 생성될때 호출되는 생성자 이벤트 핸들러
  79. * arguments
  80. * Sender : event handler 객체
  81. * return
  82. * void
  83. */
  84. /*
  85. * Form을 보여줄때 호출되는 event 메서드이다.
  86. * arguments
  87. * Sender : event handler 객체
  88. * return
  89. * void
  90. */
  91. void __fastcall TIDB0070M::FormShow(TObject *Sender)
  92. {
  93. Refresh();
  94. FormInit();
  95. TmrShow->Enabled = true;
  96. }
  97. //---------------------------------------------------------------------------
  98. /*
  99. * form 초기화
  100. *
  101. * arguments
  102. *
  103. * return
  104. * void
  105. */
  106. void __fastcall TIDB0070M::FormInit()
  107. {
  108. m_pGDC = TvList->DataController;
  109. TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<현재 등록된 휴일 정보가 없습니다>";
  110. if (!ItsHolidayManager)
  111. {
  112. ItsHolidayManager = new TItsHolidayManager();
  113. }
  114. FCodeLHT = ItsCodeManager->FLists.Find("LHT");
  115. try {
  116. TcxComboBoxProperties *pcxColumn02 = (TcxComboBoxProperties *)Column02->Properties;
  117. pcxColumn02->Items->Clear();
  118. if (FCodeLHT)
  119. {
  120. FOR_STL(TItsSubCode*, pSubCode, FCodeLHT->FSubLists)
  121. {
  122. pcxColumn02->Items->Add("[" + pSubCode->CMMN_CD + "] " + pSubCode->CMMN_CD_KOR_NM);
  123. if (FInitCombo == "") FInitCombo = pSubCode->CMMN_CD;
  124. }
  125. }
  126. else
  127. {
  128. //pcxColumn02->Items->Add("[LHT0] 공휴일");
  129. pcxColumn02->Items->Add("[LHT0] Holiday");
  130. }
  131. if (FInitCombo == "") FInitCombo = "LHT0";
  132. } catch(...) {}
  133. }
  134. //---------------------------------------------------------------------------
  135. /*
  136. * Form이 Show되고 난 후 최초 1회 수행되는 타이머 이벤트
  137. * arguments
  138. * Sender : event handler 객체
  139. * return
  140. * void
  141. */
  142. void __fastcall TIDB0070M::TmrShowTimer(TObject *Sender)
  143. {
  144. TmrShow->Enabled = false;
  145. BtnSearchClick((TObject*)BtnSearch);
  146. }
  147. //---------------------------------------------------------------------------
  148. /*
  149. * Search 버튼 클릭 이벤트 핸들러
  150. * arguments
  151. * Sender : event handler 객체
  152. * return
  153. * void
  154. */
  155. void __fastcall TIDB0070M::BtnSearchClick(TObject *Sender)
  156. {
  157. Application->ProcessMessages();
  158. TSqlCursor sqlCrs((TControl*)BtnSearch);
  159. RefreshData();
  160. }
  161. //---------------------------------------------------------------------------
  162. /*
  163. * Refresh Data Event Function
  164. * arguments
  165. *
  166. * return
  167. * void
  168. */
  169. void __fastcall TIDB0070M::RefreshData()
  170. {
  171. ItsHolidayManager->LoadFromDb();
  172. SelListData();
  173. }
  174. //---------------------------------------------------------------------------
  175. void __fastcall TIDB0070M::SelListData()
  176. {
  177. FUpdate = false;
  178. CMM_ClearGridTableView(TvList);
  179. try
  180. {
  181. TvList->BeginUpdate();
  182. FOR_STL(TItsHoliday*, pObj, ItsHolidayManager->FLists)
  183. {
  184. pObj->EditMode = DB_INIT; // 미리초기화해준다.(삭제된것)
  185. pObj->Completed = true;
  186. if (pObj->DEL_YN == "Y") continue;
  187. AddObjectItem(pObj, "-");
  188. }
  189. }
  190. __finally
  191. {
  192. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  193. TvList->EndUpdate();
  194. TvList->DataController->GotoFirst();
  195. TvList->DataController->FocusedRecordIndex = 0;
  196. //CxList->SetFocus();
  197. }
  198. }
  199. //---------------------------------------------------------------------------
  200. /*
  201. * Close 버튼 클릭 이벤트 핸들러
  202. * arguments
  203. * Sender : event handler 객체
  204. * return
  205. * void
  206. */
  207. void __fastcall TIDB0070M::BtnCloseClick(TObject *Sender)
  208. {
  209. Close();
  210. }
  211. //---------------------------------------------------------------------------
  212. /*
  213. * 저장 버튼 클릭 이벤트 핸들러
  214. * arguments
  215. * Sender : event handler 객체
  216. * return
  217. * void
  218. */
  219. void __fastcall TIDB0070M::BtnExlSaveClick(TObject *Sender)
  220. {
  221. TcxGrid *pGrid = CxList;
  222. TcxGridTableView *pView = TvList;
  223. String sTitle= Caption;//"휴일정보";
  224. CMM_ExportToExcelFile(sTitle, pGrid, pView, this);
  225. }
  226. //---------------------------------------------------------------------------
  227. /*
  228. * 등록 버튼 클릭 이벤트 핸들러
  229. * arguments
  230. * Sender : event handler 객체
  231. * return
  232. * void
  233. */
  234. void __fastcall TIDB0070M::BtnInsertClick(TObject *Sender)
  235. {
  236. int nMsgType = MB_OK|MB_ICONERROR|MB_APPLMODAL;
  237. try
  238. {
  239. ITSSELDAY = new TITSSELDAY(this);
  240. ITSSELDAY->ShowModal();
  241. if (ITSSELDAY->Selected == false)
  242. {
  243. return;
  244. }
  245. String sDay = ITSSELDAY->cxDateEdit1->Date.FormatString("YYYYMMDD");
  246. TItsHoliday *pDb = (TItsHoliday *)ItsHolidayManager->FLists.Find(sDay);
  247. if (pDb)
  248. {
  249. String sErr = FrmLang->lbIdErr->Caption + "[" + sDay + "]";
  250. Application->MessageBox(sErr.c_str(),//("[" + sDay + "]는 사용할 수 없는 휴일 입니다.").c_str(),
  251. FTitle.c_str(), nMsgType);
  252. return;
  253. }
  254. try
  255. {
  256. TvList->BeginUpdate();
  257. TItsHoliday *pObj = new TItsHoliday();
  258. if (!pObj)
  259. {
  260. Application->MessageBox(FrmLang->lblMemErr->Caption.c_str(),//L"신규 휴일 정보를 생성할 수 없습니다.[메모리오류]",
  261. FTitle.c_str(), nMsgType);
  262. return;
  263. }
  264. pObj->YMD = sDay;
  265. pObj->DAY_TYPE_CD = FInitCombo;
  266. pObj->LEGL_HLDY_NM = "";
  267. pObj->RMRK = "";
  268. pObj->DEL_YN = "N";
  269. pObj->Completed = false;
  270. pObj->EditMode = DB_NEW;
  271. ItsHolidayManager->FLists.Push(pObj->YMD, pObj);
  272. AddObjectItem(pObj, FrmLang->lblNew->Caption);//"신규");
  273. }
  274. __finally
  275. {
  276. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  277. TvList->EndUpdate();
  278. TvList->DataController->GotoFirst();
  279. TvList->DataController->FocusedRecordIndex = 0;
  280. }
  281. }
  282. __finally
  283. {
  284. if (ITSSELDAY) delete ITSSELDAY;
  285. ITSSELDAY = NULL;
  286. }
  287. }
  288. //---------------------------------------------------------------------------
  289. /*
  290. * 삭제 버튼 클릭 이벤트 핸들러
  291. * arguments
  292. * Sender : event handler 객체
  293. * return
  294. * void
  295. */
  296. void __fastcall TIDB0070M::BtnDeleteClick(TObject *Sender)
  297. {
  298. int nIdx = m_pGDC->FocusedRecordIndex;
  299. if (nIdx < 0) return;
  300. int nMemPtr = m_pGDC->Values[nIdx][Column99->Index];
  301. TItsHoliday *pObj = (TItsHoliday*)nMemPtr;
  302. pObj->EditMode = DB_DELETE;
  303. m_pGDC->Values[nIdx][Column00->Index] = FrmLang->lblDelete->Caption;//"삭제";
  304. }
  305. //---------------------------------------------------------------------------
  306. void __fastcall TIDB0070M::FormClose(TObject *Sender, TCloseAction &Action)
  307. {
  308. CommClose();
  309. IDB0070M = NULL;
  310. Action = caFree;
  311. }
  312. //---------------------------------------------------------------------------
  313. void __fastcall TIDB0070M::BtnEditClick(TObject *Sender)
  314. {
  315. TListFocus tvFocus(TvList);
  316. if (BtnEdit->Caption == FrmLang->lblCancel->Caption)//"취소")
  317. {
  318. CxList->SetFocus();
  319. Application->ProcessMessages();
  320. SaveData();
  321. }
  322. FrmLang->ITSSkin_ButtonClick(BtnSearch, BtnEdit, BtnInsert, BtnDelete, BtnApply);
  323. ChangeEditMode(BtnEdit->Down);
  324. RefreshData();
  325. }
  326. //---------------------------------------------------------------------------
  327. void __fastcall TIDB0070M::ChangeEditMode(bool AEdit)
  328. {
  329. bool bEditing = AEdit;
  330. try
  331. {
  332. TvList->BeginUpdate();
  333. Column00->Visible = bEditing;
  334. Column02->Options->Editing = bEditing;
  335. Column03->Options->Editing = bEditing;
  336. Column04->Options->Editing = bEditing;
  337. }
  338. __finally
  339. {
  340. TvList->EndUpdate();
  341. if (bEditing)
  342. {
  343. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  344. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  345. }
  346. else
  347. {
  348. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  349. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  350. }
  351. }
  352. }
  353. //---------------------------------------------------------------------------
  354. void __fastcall TIDB0070M::TvListColumnPropertiesValidate(TObject *Sender, Variant &DisplayValue, TCaption &ErrorText, bool &Error)
  355. {
  356. if (TvList->Controller->FocusedRow->IsFilterRow) return;
  357. int nRow = m_pGDC->FocusedRecordIndex;
  358. if (nRow < 0) return;
  359. int nMemPtr = TvList->DataController->Values[nRow][Column99->Index];
  360. TItsHoliday *pObj = (TItsHoliday*)nMemPtr;
  361. if (pObj->Completed == false)
  362. {
  363. //신규이거나 삭제인 경우 편집 내용에 따른 변화가 필요없다.
  364. return;
  365. }
  366. String sType = VarToStr(m_pGDC->Values[nRow][Column02->Index]);
  367. String sName = VarToStr(m_pGDC->Values[nRow][Column03->Index]);
  368. String sRmrk = VarToStr(m_pGDC->Values[nRow][Column04->Index]);
  369. TcxGridColumn *pColumn = TvList->Controller->FocusedColumn;
  370. if (pColumn == Column02) sType = DisplayValue;
  371. else if (pColumn == Column03) sName = DisplayValue;
  372. else if (pColumn == Column04) sRmrk = DisplayValue;
  373. sType = ITSUtil_GetCode(sType);
  374. if (pObj->DAY_TYPE_CD != sType || //요일 유형 코드
  375. pObj->LEGL_HLDY_NM != sName || //공휴일 명
  376. pObj->RMRK != sRmrk ) //비고
  377. {
  378. m_pGDC->Values[nRow][Column00->Index] = FrmLang->lblModify->Caption;//"수정";
  379. pObj->EditMode = DB_UPDATE;
  380. }
  381. else
  382. {
  383. m_pGDC->Values[nRow][Column00->Index] = "-";
  384. pObj->EditMode = DB_INIT;
  385. }
  386. }
  387. //---------------------------------------------------------------------------
  388. void __fastcall TIDB0070M::BtnBestFitClick(TObject *Sender)
  389. {
  390. try
  391. {
  392. TvList->BeginUpdate();
  393. TvList->ApplyBestFit(NULL, false, false);
  394. }
  395. __finally
  396. {
  397. TvList->EndUpdate();
  398. }
  399. }
  400. //---------------------------------------------------------------------------
  401. void __fastcall TIDB0070M::ChkAutoWidthPropertiesChange(TObject *Sender)
  402. {
  403. try
  404. {
  405. TvList->BeginUpdate();
  406. TvList->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked;
  407. BtnBestFit->Visible = !ChkAutoWidth->Checked;
  408. }
  409. __finally
  410. {
  411. TvList->EndUpdate();
  412. }
  413. }
  414. //---------------------------------------------------------------------------
  415. void __fastcall TIDB0070M::MnuDeleteCancelClick(TObject *Sender)
  416. {
  417. //
  418. }
  419. //---------------------------------------------------------------------------
  420. void __fastcall TIDB0070M::BtnApplyClick(TObject *Sender)
  421. {
  422. FUpdate = true;
  423. BtnEdit->Down = false;
  424. BtnEdit->Click();
  425. }
  426. //---------------------------------------------------------------------------
  427. bool __fastcall TIDB0070M::AddObjectItem(TItsHoliday *pObj, String AMode)
  428. {
  429. TItsSubCode *pSubCode;
  430. int nRow;
  431. try
  432. {
  433. nRow = m_pGDC->AppendRecord();
  434. pObj->GridIndex = nRow;
  435. m_pGDC->Values[nRow][Column00->Index] = AMode;
  436. m_pGDC->Values[nRow][Column01->Index] = pObj->YMD;
  437. String sLHTName = "[" + pObj->DAY_TYPE_CD + "] ";
  438. if (FCodeLHT)
  439. {
  440. pSubCode = FCodeLHT->FSubLists.Find(pObj->DAY_TYPE_CD);
  441. if (pSubCode) sLHTName = sLHTName + pSubCode->CMMN_CD_KOR_NM;
  442. }
  443. m_pGDC->Values[nRow][Column02->Index] = sLHTName;
  444. m_pGDC->Values[nRow][Column03->Index] = pObj->LEGL_HLDY_NM;
  445. m_pGDC->Values[nRow][Column04->Index] = pObj->RMRK;
  446. m_pGDC->Values[nRow][Column99->Index] = (int)pObj;
  447. return true;
  448. }
  449. catch(...)
  450. {
  451. }
  452. return false;
  453. }
  454. //---------------------------------------------------------------------------
  455. bool __fastcall TIDB0070M::IsUpdate()
  456. {
  457. FOR_STL(TItsHoliday*, pObj, ItsHolidayManager->FLists)
  458. {
  459. if (pObj->Completed && pObj->EditMode != DB_INIT)
  460. return true;
  461. if (!pObj->Completed && pObj->EditMode == DB_NEW)
  462. return true;
  463. }
  464. return false;
  465. }
  466. //---------------------------------------------------------------------------
  467. void __fastcall TIDB0070M::SaveData()
  468. {
  469. bool bSave = false;
  470. if (!IsUpdate()) return;
  471. if (!FUpdate)
  472. {
  473. if (Application->MessageBox(FrmLang->lblEidtConfirm->Caption.c_str(),//L"변경된 정보가 있습니다.\r\n변경된 정보를 저장 하시겠습니까?",
  474. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES) return;
  475. }
  476. TADOQuery *pADOI = NULL;
  477. TADOQuery *pADOU = NULL;
  478. TADOQuery *pADOD = NULL;
  479. String sQryI;
  480. String sQryU;
  481. String sQryD;
  482. try
  483. {
  484. sQryI = "INSERT INTO TB_LEGL_HLDY_INFR ( \r\n"
  485. " YMD , \r\n"
  486. " DAY_TYPE_CD , \r\n"
  487. " LEGL_HLDY_NM, \r\n"
  488. " RMRK ) \r\n"
  489. " VALUES ( \r\n"
  490. " :p01, \r\n"
  491. " :p02, \r\n"
  492. " :p03, \r\n"
  493. " :p04 ) \r\n";
  494. sQryU = "UPDATE TB_LEGL_HLDY_INFR \r\n"
  495. " SET DAY_TYPE_CD = :p02, \r\n"
  496. " LEGL_HLDY_NM = :p03, \r\n"
  497. " RMRK = :p04 \r\n"
  498. " WHERE YMD = :p01 \r\n";
  499. sQryD = "DELETE TB_LEGL_HLDY_INFR \r\n"
  500. " WHERE YMD = :p01 \r\n";
  501. int nRow;
  502. TvList->BeginUpdate();
  503. try
  504. {
  505. pADOI = new TADOQuery(NULL);
  506. pADOI->Close();
  507. pADOI->Connection = ITSDb_GetConnection();
  508. pADOU = new TADOQuery(NULL);
  509. pADOU->Close();
  510. pADOU->Connection = ITSDb_GetConnection();
  511. pADOD = new TADOQuery(NULL);
  512. pADOD->Close();
  513. pADOD->Connection = ITSDb_GetConnection();
  514. ITSDb_SQLText(pADOI, sQryI);
  515. ITSDb_SQLText(pADOU, sQryU);
  516. ITSDb_SQLText(pADOD, sQryD);
  517. ITSDb_GetConnection()->BeginTrans();
  518. FOR_STL(TItsHoliday*, pObj, ItsHolidayManager->FLists)
  519. {
  520. if (pObj->GridIndex < 0) continue;
  521. if (pObj->Completed && pObj->EditMode == DB_INIT)
  522. continue;
  523. if (!pObj->Completed && pObj->EditMode != DB_NEW)
  524. continue;
  525. nRow = pObj->GridIndex;
  526. //String sDay = VarToStr(m_pGDC->Values[nRow][Column01->Index]);
  527. String sType = VarToStr(m_pGDC->Values[nRow][Column02->Index]);
  528. String sName = VarToStr(m_pGDC->Values[nRow][Column03->Index]);
  529. String sRmrk = VarToStr(m_pGDC->Values[nRow][Column04->Index]);
  530. sType = ITSUtil_GetCode(sType);
  531. //pObj->YMD = sDay;
  532. pObj->DAY_TYPE_CD = sType;
  533. pObj->LEGL_HLDY_NM = sName;
  534. pObj->RMRK = sRmrk;
  535. if (pObj->Completed)
  536. {
  537. if (pObj->EditMode == DB_DELETE)
  538. {
  539. //delete
  540. ITSDb_SQLBind(pADOD, "p01", pObj->YMD);
  541. ITSDb_SQLExec(pADOD);
  542. pObj->DEL_YN = "Y";
  543. }
  544. else
  545. if (pObj->EditMode == DB_UPDATE)
  546. {
  547. //update
  548. ITSDb_SQLBind(pADOU, "p01", pObj->YMD);
  549. ITSDb_SQLBind(pADOU, "p02", pObj->DAY_TYPE_CD);
  550. ITSDb_SQLBind(pADOU, "p03", pObj->LEGL_HLDY_NM);
  551. ITSDb_SQLBind(pADOU, "p04", pObj->RMRK);
  552. ITSDb_SQLExec(pADOU);
  553. pObj->DEL_YN = "N";
  554. }
  555. }
  556. else
  557. {
  558. if (pObj->EditMode == DB_NEW)
  559. {
  560. //insert
  561. ITSDb_SQLBind(pADOI, "p01", pObj->YMD);
  562. ITSDb_SQLBind(pADOI, "p02", pObj->DAY_TYPE_CD);
  563. ITSDb_SQLBind(pADOI, "p03", pObj->LEGL_HLDY_NM);
  564. ITSDb_SQLBind(pADOI, "p04", pObj->RMRK);
  565. ITSDb_SQLExec(pADOI);
  566. pObj->DEL_YN = "N";
  567. }
  568. }
  569. pObj->Completed = true;
  570. }
  571. bSave = true;
  572. ITSDb_GetConnection()->CommitTrans();
  573. }
  574. catch(EDatabaseError &E)
  575. {
  576. ITSDb_GetConnection()->RollbackTrans();
  577. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  578. ShowMessage(String(E.ClassName()) + E.Message);
  579. }
  580. catch(Exception &exception)
  581. {
  582. ITSDb_GetConnection()->RollbackTrans();
  583. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  584. ShowMessage(String(exception.ClassName()) + exception.Message);
  585. }
  586. catch(...)
  587. {
  588. ITSDb_GetConnection()->RollbackTrans();
  589. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  590. ShowMessage(FrmLang->lblDbDelErr->Caption);//"데이터 삭제 중에 알수없는 DB 오류가 발생하였습니다.");
  591. }
  592. }
  593. __finally
  594. {
  595. if (pADOI)
  596. {
  597. pADOI->Close();
  598. delete pADOI;
  599. }
  600. if (pADOU)
  601. {
  602. pADOU->Close();
  603. delete pADOU;
  604. }
  605. if (pADOD)
  606. {
  607. pADOD->Close();
  608. delete pADOD;
  609. }
  610. TvList->EndUpdate();
  611. }
  612. if (bSave)
  613. {
  614. Application->ProcessMessages();
  615. Application->MessageBox(FrmLang->lblDbSave->Caption.c_str(),//L"휴일정보를 저장 하였습니다.",
  616. FTitle.c_str(), MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  617. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_04, 0);
  618. }
  619. }
  620. //---------------------------------------------------------------------------
  621. void __fastcall TIDB0070M::FormCloseQuery(TObject *Sender, bool &CanClose)
  622. {
  623. SaveData();
  624. }
  625. //---------------------------------------------------------------------------
  626. void __fastcall TIDB0070M::TvListKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
  627. {
  628. if (Key == VK_DELETE)
  629. {
  630. if (BtnDelete->Enabled) BtnDeleteClick(Sender);
  631. }
  632. }
  633. //---------------------------------------------------------------------------
  634. void __fastcall TIDB0070M::TvListDataControllerFilterChanged(TObject *Sender)
  635. {
  636. CMM_SetFilterLike(TvList);
  637. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  638. }
  639. //---------------------------------------------------------------------------
  640. void __fastcall TIDB0070M::TvListCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  641. bool &ADone)
  642. {
  643. if (AViewInfo)
  644. {
  645. String sType = AViewInfo->GridRecord->DisplayTexts[Column00->Index];
  646. if (sType == FrmLang->lblModify->Caption)//"수정")
  647. {
  648. ACanvas->Brush->Color = clOlive;
  649. }
  650. else if (sType == FrmLang->lblDelete->Caption)//"삭제")
  651. {
  652. ACanvas->Brush->Color = clRed;
  653. }
  654. else if (sType == FrmLang->lblNew->Caption)//"신규")
  655. {
  656. ACanvas->Brush->Color = clLime;
  657. if (AViewInfo->Focused) ACanvas->Font->Color = clBlack;
  658. }
  659. }
  660. }
  661. //---------------------------------------------------------------------------