IDB0060MF.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609
  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 "IDB0060MF.h"
  11. //---------------------------------------------------------------------------
  12. #pragma package(smart_init)
  13. #pragma link "cxButtons"
  14. #pragma link "cxCalc"
  15. #pragma link "cxCheckBox"
  16. #pragma link "cxClasses"
  17. #pragma link "cxContainer"
  18. #pragma link "cxControls"
  19. #pragma link "cxCustomData"
  20. #pragma link "cxData"
  21. #pragma link "cxDataStorage"
  22. #pragma link "cxDropDownEdit"
  23. #pragma link "cxEdit"
  24. #pragma link "cxFilter"
  25. #pragma link "cxGraphics"
  26. #pragma link "cxGrid"
  27. #pragma link "cxGridBandedTableView"
  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 "cxSpinEdit"
  36. #pragma link "cxStyles"
  37. #pragma link "cxTextEdit"
  38. #pragma link "dxSkinBlack"
  39. #pragma link "dxSkinBlue"
  40. #pragma link "dxSkinsCore"
  41. #pragma link "dxSkinscxPCPainter"
  42. #pragma resource "*.dfm"
  43. TIDB0060M *IDB0060M = NULL;
  44. //---------------------------------------------------------------------------
  45. __fastcall TIDB0060M::TIDB0060M(TComponent* Owner)
  46. : TForm(Owner)
  47. {
  48. LangTrans->Translate(this, ITSDb_GetConnection());
  49. ITSSkin_Load(this);
  50. CMM_LoadForm(g_sFormsDir, this);
  51. FTitle = Caption;//"소통등급관리";
  52. }
  53. //---------------------------------------------------------------------------
  54. void __fastcall TIDB0060M::CommClose()
  55. {
  56. try
  57. {
  58. CMM_SaveForm(g_sFormsDir, this);
  59. }
  60. catch(...)
  61. {
  62. }
  63. }
  64. //---------------------------------------------------------------------------
  65. void __fastcall TIDB0060M::FormShow(TObject *Sender)
  66. {
  67. Refresh();
  68. FormInit();
  69. TmrShow->Enabled = true;
  70. }
  71. //---------------------------------------------------------------------------
  72. void __fastcall TIDB0060M::FormInit()
  73. {
  74. m_pGDC = TvList->DataController;
  75. FCodeLTC = ItsCodeManager->FLists.Find("LTC");
  76. TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<소통등급 정보가 없습니다>";
  77. TcxComboBoxProperties *pcxComboBoxProperties = (TcxComboBoxProperties *)Column13->Properties;
  78. pcxComboBoxProperties->Items->Add("Y");
  79. pcxComboBoxProperties->Items->Add("N");
  80. }
  81. //---------------------------------------------------------------------------
  82. void __fastcall TIDB0060M::TmrShowTimer(TObject *Sender)
  83. {
  84. TmrShow->Enabled = false;
  85. BtnSearchClick((TObject*)BtnSearch);
  86. }
  87. //---------------------------------------------------------------------------
  88. void __fastcall TIDB0060M::BtnSearchClick(TObject *Sender)
  89. {
  90. Application->ProcessMessages();
  91. TSqlCursor sqlCrs((TControl*)BtnSearch);
  92. RefreshData();
  93. CxList->SetFocus();
  94. }
  95. //---------------------------------------------------------------------------
  96. void __fastcall TIDB0060M::RefreshData()
  97. {
  98. // 검색조건에 의한 링크 데이터 조회
  99. SelListData();
  100. ChkExpandClick(ChkExpand);
  101. //TvList->ApplyBestFit(NULL, false, false);
  102. }
  103. //---------------------------------------------------------------------------
  104. void __fastcall TIDB0060M::SelListData()
  105. {
  106. #if 0
  107. 101.고속국도
  108. 102.도시고속국도
  109. 103.일반국도
  110. 104.특별·광역시도
  111. 105.국가지원지방도
  112. 106.지방도
  113. 107.시·군도
  114. --108.기타
  115. SRT1 단속류
  116. SRT2 연속류
  117. SRT3 시군도
  118. SRT4 국도
  119. SRT5 도시고속도로
  120. SRT6 고속도로
  121. #endif
  122. FUpdate = false;
  123. TItsSubCode *pSubCode;
  124. CMM_ClearGridTableView(TvList);
  125. int nTrfClr;
  126. int nRow = 0;
  127. try
  128. {
  129. TvList->BeginUpdate();
  130. FOR_STL(TItsTrafficGrade *, pGrade, ItsTrafficGradeManager->FLists)
  131. {
  132. FOR_STL(TItsTrafficSubGrade *, pSubGrade, pGrade->FSubLists)
  133. {
  134. nRow = m_pGDC->AppendRecord();
  135. m_pGDC->Values[nRow][Column01->Index] = lbl3Step->Caption;//"3단계 소통등급";
  136. m_pGDC->Values[nRow][Column02->Index] = "3";
  137. //도로등급
  138. m_pGDC->Values[nRow][Column03->Index] = "[" + pGrade->SECT_GRAD_CD + "] " + pGrade->SECT_GRAD_NM;
  139. m_pGDC->Values[nRow][Column04->Index] = pGrade->SECT_GRAD_CD;
  140. //소통등급
  141. String sLTC = "[" + pSubGrade->CMTR_GRAD_CD +"] ";
  142. if (FCodeLTC)
  143. {
  144. pSubCode = FCodeLTC->FSubLists.Find(pSubGrade->CMTR_GRAD_CD);
  145. if (pSubCode) sLTC = sLTC + pSubCode->CMMN_CD_KOR_NM;
  146. }
  147. m_pGDC->Values[nRow][Column05->Index] = sLTC;
  148. m_pGDC->Values[nRow][Column06->Index] = pSubGrade->CMTR_GRAD_CD;
  149. //nTrfClr = StrToInt();
  150. m_pGDC->Values[nRow][Column07->Index] = pSubGrade->LWST_TRVL_SPED;
  151. m_pGDC->Values[nRow][Column08->Index] = pSubGrade->LWST_TRVL_SPED;
  152. m_pGDC->Values[nRow][Column09->Index] = pSubGrade->HGHS_TRVL_SPED;
  153. m_pGDC->Values[nRow][Column10->Index] = pSubGrade->HGHS_TRVL_SPED;
  154. if (pSubGrade->CMTR_GRAD_CD == "LTC1") nTrfClr = clLime;//65280;
  155. else if (pSubGrade->CMTR_GRAD_CD == "LTC2") nTrfClr = clYellow;//65535;
  156. else if (pSubGrade->CMTR_GRAD_CD == "LTC3") nTrfClr = clRed;//255;
  157. else nTrfClr = clSilver;
  158. m_pGDC->Values[nRow][Column11->Index] = nTrfClr;
  159. m_pGDC->Values[nRow][Column12->Index] = nTrfClr;
  160. m_pGDC->Values[nRow][Column13->Index] = pSubGrade->CNGS_GRAD_YN;
  161. m_pGDC->Values[nRow][Column14->Index] = pSubGrade->CNGS_GRAD_YN;
  162. m_pGDC->Values[nRow][Column88->Index] = 0;
  163. m_pGDC->Values[nRow][Column98->Index] = (int)pGrade;
  164. m_pGDC->Values[nRow][Column99->Index] = (int)pSubGrade;
  165. }
  166. }
  167. }
  168. __finally
  169. {
  170. TvList->EndUpdate();
  171. TvList->DataController->GotoFirst();
  172. TvList->DataController->FocusedRecordIndex = 0;
  173. }
  174. }
  175. //---------------------------------------------------------------------------
  176. void __fastcall TIDB0060M::BtnCloseClick(TObject *Sender)
  177. {
  178. Close();
  179. }
  180. //---------------------------------------------------------------------------
  181. void __fastcall TIDB0060M::BtnSaveClick(TObject *Sender)
  182. {
  183. TcxGrid *pGrid = CxList;
  184. TcxGridTableView *pView = TvList;
  185. String sTitle= Caption;//"소통등급";
  186. CMM_ExportToExcelFile(sTitle, pGrid, pView, this);
  187. }
  188. //---------------------------------------------------------------------------
  189. void __fastcall TIDB0060M::Column11CustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas, TcxGridTableDataCellViewInfo *AViewInfo,
  190. bool &ADone)
  191. {
  192. try
  193. {
  194. //ACanvas->Canvas->Brush->Color = m_pColor[0]->Color;
  195. int iIndex = AViewInfo->Item->Index;
  196. String val = (String)AViewInfo->GridRecord->DisplayTexts[iIndex];
  197. ACanvas->Canvas->Font->Color = (TColor)StrToInt(val.c_str());
  198. ACanvas->Canvas->Brush->Color = (TColor)StrToInt(val.c_str());
  199. }
  200. catch(...) {}
  201. }
  202. //---------------------------------------------------------------------------
  203. void __fastcall TIDB0060M::ChkExpandClick(TObject *Sender)
  204. {
  205. CMM_ExpandCollapseChk(TvList, ChkExpand->Checked);
  206. }
  207. //---------------------------------------------------------------------------
  208. void __fastcall TIDB0060M::ColValSpdPropertiesChange(TObject *Sender)
  209. {
  210. if (((TcxSpinEdit*)Sender)->Value < 0)
  211. ((TcxSpinEdit*)Sender)->Value = 0;
  212. else if(((TcxSpinEdit*)Sender)->Value > ((TcxSpinEdit*)Sender)->Properties->MaxValue &&
  213. ((TcxSpinEdit*)Sender)->Properties->MaxValue)
  214. ((TcxSpinEdit*)Sender)->Value = ((TcxSpinEdit*)Sender)->Properties->MaxValue;
  215. }
  216. //---------------------------------------------------------------------------
  217. void __fastcall TIDB0060M::TvListCellClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo, TMouseButton AButton,
  218. TShiftState AShift, bool &AHandled)
  219. {
  220. #if 0
  221. if (ACellViewInfo->Item->Index == Column11->Index)
  222. {
  223. if (ColorDialog->Execute())
  224. {
  225. //m_pColor[0]->Color = ColorDialog->Color;
  226. //m_pGDC->Values[m_pGDC->FocusedRow->Index-1][Column11->Index] = ColorDialog->Color;
  227. m_pGDC->Values[m_pGDC->GetFocusedRecordIndex()][Column11->Index] = ColorDialog->Color;
  228. }
  229. }
  230. #endif
  231. }
  232. //---------------------------------------------------------------------------
  233. void __fastcall TIDB0060M::TvListMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
  234. {
  235. try
  236. {
  237. if (!BtnEdit->Down) return;
  238. TcxGridSite *ASite = (TcxGridSite *)Sender;
  239. //Screen->Cursor = crDefault;
  240. //TcxCustomGridHitTest *AHitTest = tvSel->GetHitTest(X, Y);
  241. TcxCustomGridHitTest *AHitTest = dynamic_cast<TcxGridRecordHitTest*>(ASite->ViewInfo->GetHitTest(X, Y));
  242. if (dynamic_cast<TcxGridRecordHitTest*>(ASite->ViewInfo->GetHitTest(X, Y)))
  243. {
  244. int ARow = ((TcxGridRecordCellHitTest*)AHitTest)->GridRecord->Index;
  245. if (((TcxGridRecordCellHitTest*)AHitTest)->Item == NULL) return;
  246. int ACol = ((TcxGridRecordCellHitTest*)AHitTest)->Item->Index;
  247. #if 0
  248. if (ACol == Column11->Index &&
  249. ARow < ASite->GridView->DataController->RecordCount-1)
  250. {
  251. Screen->Cursor = crHandPoint;
  252. }
  253. else
  254. #endif
  255. if (ACol == Column07->Index &&
  256. ARow < ASite->GridView->DataController->RecordCount-1)
  257. {
  258. Screen->Cursor = crIBeam;
  259. }
  260. else
  261. if (ACol == Column09->Index &&
  262. ARow < ASite->GridView->DataController->RecordCount-1)
  263. {
  264. Screen->Cursor = crIBeam;
  265. }
  266. else
  267. if (ACol == Column13->Index &&
  268. ARow < ASite->GridView->DataController->RecordCount-1)
  269. {
  270. Screen->Cursor = crHandPoint;
  271. }
  272. }
  273. else
  274. {
  275. Screen->Cursor = crDefault;
  276. }
  277. }
  278. catch(...)
  279. {
  280. }
  281. }
  282. //---------------------------------------------------------------------------
  283. void __fastcall TIDB0060M::FormClose(TObject *Sender, TCloseAction &Action)
  284. {
  285. CommClose();
  286. IDB0060M = NULL;
  287. Action = caFree;
  288. }
  289. //---------------------------------------------------------------------------
  290. void __fastcall TIDB0060M::BtnEditClick(TObject *Sender)
  291. {
  292. TListFocus tvFocus(TvList);
  293. if (BtnEdit->Caption == FrmLang->lblCancel->Caption)//"취소")
  294. {
  295. CxList->SetFocus();
  296. Application->ProcessMessages();
  297. SaveData();
  298. }
  299. FrmLang->ITSSkin_ButtonClick(BtnSearch, BtnEdit, BtnInsert, BtnDelete, BtnApply);
  300. ChangeEditMode(BtnEdit->Down);
  301. //RefreshData(); //정보변경을 알려야 하므로 저장하는 곳에서 읽도록 처리함.
  302. }
  303. //---------------------------------------------------------------------------
  304. void __fastcall TIDB0060M::ChangeEditMode(bool AEdit)
  305. {
  306. bool bEditing = AEdit;
  307. try
  308. {
  309. TvList->BeginUpdate();
  310. Column00->Visible = bEditing;
  311. Column07->Options->Editing = bEditing;
  312. Column09->Options->Editing = bEditing;
  313. Column13->Options->Editing = bEditing;
  314. }
  315. __finally
  316. {
  317. TvList->EndUpdate();
  318. if (bEditing)
  319. {
  320. BtnEdit->Caption = FrmLang->lblCancel->Caption;//"취소";
  321. BtnEdit->Hint = FrmLang->lblCancel->Hint;//데이터 편집 취소";
  322. }
  323. else
  324. {
  325. BtnEdit->Caption = FrmLang->lblEdit->Caption;//"편집";
  326. BtnEdit->Hint = FrmLang->lblEdit->Hint;//데이터 편집";
  327. Screen->Cursor = crDefault;
  328. }
  329. }
  330. }
  331. //---------------------------------------------------------------------------
  332. void __fastcall TIDB0060M::BtnApplyClick(TObject *Sender)
  333. {
  334. FUpdate = true;
  335. BtnEdit->Down = false;
  336. BtnEdit->Click();
  337. }
  338. //---------------------------------------------------------------------------
  339. bool __fastcall TIDB0060M::IsUpdate()
  340. {
  341. int nMemPtr;
  342. int nMinSpd, nMaxSpd;
  343. String sGradYn;
  344. TItsTrafficSubGrade *pSubGrade;
  345. int nUpdateCnt = 0;
  346. int nRows = m_pGDC->RecordCount;
  347. try
  348. {
  349. for (int ii = 0; ii < nRows; ii++)
  350. {
  351. m_pGDC->Values[ii][Column88->Index] = 0;
  352. nMemPtr = m_pGDC->Values[ii][Column99->Index];
  353. pSubGrade = (TItsTrafficSubGrade *)nMemPtr;
  354. nMinSpd = m_pGDC->Values[ii][Column07->Index];
  355. nMaxSpd = m_pGDC->Values[ii][Column09->Index];
  356. sGradYn = m_pGDC->Values[ii][Column13->Index];
  357. if (nMinSpd != pSubGrade->LWST_TRVL_SPED ||
  358. nMaxSpd != pSubGrade->HGHS_TRVL_SPED ||
  359. sGradYn != pSubGrade->CNGS_GRAD_YN)
  360. {
  361. m_pGDC->Values[ii][Column88->Index] = 1;
  362. nUpdateCnt++;
  363. }
  364. }
  365. }
  366. catch(...)
  367. {
  368. }
  369. if (nUpdateCnt == 0)
  370. {
  371. return false;
  372. }
  373. return true;
  374. }
  375. //---------------------------------------------------------------------------
  376. void __fastcall TIDB0060M::RollbackListData()
  377. {
  378. int nStateVal;
  379. int nMinSpd, nMaxSpd, nColor;
  380. try
  381. {
  382. try
  383. {
  384. int nRows = m_pGDC->RecordCount;
  385. TvList->BeginUpdate();
  386. for (int ii = 0; ii < nRows; ii++)
  387. {
  388. nStateVal = m_pGDC->Values[ii][Column88->Index];
  389. if (nStateVal == 0) continue;
  390. nMinSpd = m_pGDC->Values[ii][Column08->Index];
  391. nMaxSpd = m_pGDC->Values[ii][Column10->Index];
  392. nColor = m_pGDC->Values[ii][Column12->Index];
  393. m_pGDC->Values[ii][Column88->Index] = 0;
  394. m_pGDC->Values[ii][Column07->Index] = nMinSpd;
  395. m_pGDC->Values[ii][Column09->Index] = nMaxSpd;
  396. m_pGDC->Values[ii][Column11->Index] = nColor;
  397. }
  398. }
  399. catch (Exception &exception)
  400. {
  401. throw Exception(String(exception.ClassName()) + exception.Message);
  402. }
  403. }
  404. __finally
  405. {
  406. TvList->EndUpdate();
  407. }
  408. }
  409. //---------------------------------------------------------------------------
  410. void __fastcall TIDB0060M::SaveData()
  411. {
  412. this->Update();
  413. if (!IsUpdate()) return;
  414. if (!FUpdate)
  415. {
  416. if (Application->MessageBox(FrmLang->lblEidtConfirm->Caption.c_str(),//L"변경된 정보가 있습니다.\r\n변경된 정보를 저장 하시겠습니까?",
  417. FTitle.c_str(), MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL) != IDYES)
  418. {
  419. RollbackListData();
  420. return;
  421. }
  422. }
  423. int nStateVal;
  424. int nMemPtr;
  425. TItsTrafficGrade *pGrade;
  426. TItsTrafficSubGrade *pSubGrade;
  427. int nMinSpd, nMaxSpd;
  428. String sGradYn;
  429. bool bSave = false;
  430. int nUpdateCnt = 0;
  431. int nRows = m_pGDC->RecordCount;
  432. TADOQuery *pADO = NULL;
  433. String sQry;
  434. try
  435. {
  436. try
  437. {
  438. pADO = new TADOQuery(NULL);
  439. pADO->Close();
  440. pADO->Connection = ITSDb_GetConnection();
  441. TvList->BeginUpdate();
  442. ITSDb_GetConnection()->BeginTrans();
  443. {
  444. sQry = "UPDATE TB_SECT_GRAD_STUP \r\n"
  445. " SET LWST_TRVL_SPED = :p01, \r\n"
  446. " HGHS_TRVL_SPED = :p02, \r\n"
  447. " CNGS_GRAD_YN = :p03 \r\n"
  448. " WHERE SECT_GRAD_CD = :p04 \r\n"
  449. " AND CMTR_GRAD_CD = :p05 \r\n";
  450. ITSDb_SQLText(pADO, sQry);
  451. for (int ii = 0; ii < nRows; ii++)
  452. {
  453. TSqlCursor sqlCrs;
  454. nStateVal = m_pGDC->Values[ii][Column88->Index];
  455. if (nStateVal == 0) continue;
  456. nMemPtr = m_pGDC->Values[ii][Column98->Index];
  457. pGrade = (TItsTrafficGrade *)nMemPtr;
  458. nMemPtr = m_pGDC->Values[ii][Column99->Index];
  459. pSubGrade = (TItsTrafficSubGrade *)nMemPtr;
  460. nMinSpd = m_pGDC->Values[ii][Column07->Index];
  461. nMaxSpd = m_pGDC->Values[ii][Column09->Index];
  462. sGradYn = m_pGDC->Values[ii][Column13->Index];
  463. ITSDb_SQLBind(pADO, "p01", nMinSpd);
  464. ITSDb_SQLBind(pADO, "p02", nMaxSpd);
  465. ITSDb_SQLBind(pADO, "p03", sGradYn);
  466. ITSDb_SQLBind(pADO, "p04", pGrade->SECT_GRAD_CD);
  467. ITSDb_SQLBind(pADO, "p05", pSubGrade->CMTR_GRAD_CD);
  468. ITSDb_SQLExec(pADO);
  469. m_pGDC->Values[ii][Column88->Index] = 0;
  470. pSubGrade->LWST_TRVL_SPED = nMinSpd;
  471. pSubGrade->HGHS_TRVL_SPED = nMaxSpd;
  472. pSubGrade->CNGS_GRAD_YN = sGradYn;
  473. m_pGDC->Values[ii][Column08->Index] = nMinSpd;
  474. m_pGDC->Values[ii][Column10->Index] = nMaxSpd;
  475. m_pGDC->Values[ii][Column14->Index] = pSubGrade->CNGS_GRAD_YN;
  476. }
  477. ITSDb_GetConnection()->CommitTrans();
  478. bSave = true;
  479. }
  480. }
  481. catch(EDatabaseError &E)
  482. {
  483. ITSDb_GetConnection()->RollbackTrans();
  484. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  485. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQry);
  486. throw Exception(String(E.ClassName()) + E.Message);
  487. }
  488. catch(Exception &e)
  489. {
  490. ITSDb_GetConnection()->RollbackTrans();
  491. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  492. DBERRORMSG(Caption, String(e.ClassName()), e.Message, sQry);
  493. throw Exception(String(e.ClassName()) + e.Message);
  494. }
  495. }
  496. __finally
  497. {
  498. TvList->EndUpdate();
  499. if (pADO)
  500. {
  501. pADO->Close();
  502. delete pADO;
  503. }
  504. if (bSave)
  505. {
  506. Application->ProcessMessages();
  507. Application->MessageBox(FrmLang->lblDbSave->Caption.c_str(),//L"변경된 소통등급 정보를 저장하였습니다.",
  508. FTitle.c_str(), MB_OK|MB_ICONQUESTION|MB_APPLMODAL);
  509. RefreshData(); //소통정보 변경을 알리기 위해 먼저 다시 읽어 놓는다.
  510. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_01, 0);
  511. Sleep(500);
  512. POST_MSG(Application->MainForm->Handle, WM_DATABASE_REFRESH, WP_MSG_06, 0); //가공서버로 보내는 메시지
  513. }
  514. }
  515. }
  516. //---------------------------------------------------------------------------
  517. void __fastcall TIDB0060M::FormCloseQuery(TObject *Sender, bool &CanClose)
  518. {
  519. SaveData();
  520. }
  521. //---------------------------------------------------------------------------