ITSSEL5MF.cpp 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "AppGlobalF.h"
  6. #include "ITSLangTransF.h"
  7. #pragma hdrstop
  8. #include "ITSSEL5MF.h"
  9. #include "ITS_OPLibF.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 "cxLookAndFeelPainters"
  19. #pragma link "cxLookAndFeels"
  20. #pragma link "dxSkinBlack"
  21. #pragma link "dxSkinBlue"
  22. #pragma link "dxSkinsCore"
  23. #pragma link "cxCalc"
  24. #pragma link "cxCheckBox"
  25. #pragma link "cxClasses"
  26. #pragma link "cxCustomData"
  27. #pragma link "cxData"
  28. #pragma link "cxDataStorage"
  29. #pragma link "cxFilter"
  30. #pragma link "cxGrid"
  31. #pragma link "cxGridCustomTableView"
  32. #pragma link "cxGridCustomView"
  33. #pragma link "cxGridLevel"
  34. #pragma link "cxGridTableView"
  35. #pragma link "cxLabel"
  36. #pragma link "cxStyles"
  37. #pragma link "cxTextEdit"
  38. #pragma link "dxSkinscxPCPainter"
  39. #pragma link "dxSkinMcSkin"
  40. #pragma resource "*.dfm"
  41. TITSSEL5M *ITSSEL5M = NULL;
  42. //---------------------------------------------------------------------------
  43. __fastcall TITSSEL5M::TITSSEL5M(TComponent* Owner, TVdsCtlrManager* AVdsCtlrManager)
  44. : TForm(Owner)
  45. {
  46. LangTrans->Translate(this, ITSDb_GetConnection());
  47. ITSSkin_Load(this);
  48. CMM_LoadForm(g_sFormsDir, this);
  49. m_bSelected = false;
  50. m_pGDC = TvList->DataController;
  51. MyVdsCtlrManager = AVdsCtlrManager;
  52. }
  53. //---------------------------------------------------------------------------
  54. void __fastcall TITSSEL5M::CommClose()
  55. {
  56. try
  57. {
  58. CMM_SaveForm(g_sFormsDir, this);
  59. }
  60. catch(...)
  61. {
  62. }
  63. }
  64. //---------------------------------------------------------------------------
  65. void __fastcall TITSSEL5M::FormShow(TObject *Sender)
  66. {
  67. Refresh();
  68. TmrShow->Enabled = true;
  69. }
  70. //---------------------------------------------------------------------------
  71. void __fastcall TITSSEL5M::TmrShowTimer(TObject *Sender)
  72. {
  73. TmrShow->Enabled = false;
  74. BtnSearchClick((TObject*)BtnSearch);
  75. }
  76. //---------------------------------------------------------------------------
  77. void __fastcall TITSSEL5M::BtnSearchClick(TObject *Sender)
  78. {
  79. Application->ProcessMessages();
  80. TSqlCursor sqlCrs((TControl*)BtnSearch);
  81. RefreshData();
  82. }
  83. //---------------------------------------------------------------------------
  84. void __fastcall TITSSEL5M::RefreshData()
  85. {
  86. // 검색조건에 의한 링크 데이터 조회
  87. try
  88. {
  89. SelListData();
  90. }
  91. __finally
  92. {
  93. //TvList->ApplyBestFit(NULL, false, false);
  94. }
  95. }
  96. //---------------------------------------------------------------------------
  97. void __fastcall TITSSEL5M::SelListData()
  98. {
  99. String sQry;
  100. TADOQuery *pADO = NULL;
  101. sQry = "SELECT A.LINK_ID, C.NODE_NAME AS STR_NAME, D.NODE_NAME AS END_NAME, \r\n"
  102. " F.VDS_CTLR_NMBR, F.VDS_NM \r\n"
  103. " FROM TB_VDS_DTCT_RLTN_LINK A, \r\n"
  104. " TB_LINK B, \r\n"
  105. " TB_NODE C, \r\n"
  106. " TB_NODE D, \r\n"
  107. " TB_VDS_DTCT E, \r\n"
  108. " TB_VDS_CTLR F \r\n"
  109. " WHERE A.LINK_ID = B.LINK_ID \r\n"
  110. " AND B.F_NODE_ID = C.NODE_ID \r\n"
  111. " AND B.T_NODE_ID = D.NODE_ID \r\n"
  112. " AND A.VDS_DTCT_NMBR = E.VDS_DTCT_NMBR \r\n"
  113. " AND E.VDS_CTLR_NMBR = F.VDS_CTLR_NMBR \r\n"
  114. " AND F.VDS_TYPE_CD = 'I' \r\n"
  115. " GROUP BY A.LINK_ID, C.NODE_NAME, D.NODE_NAME, F.VDS_CTLR_NMBR, F.VDS_NM \r\n"
  116. " ORDER BY F.VDS_CTLR_NMBR, A.LINK_ID \r\n";
  117. CMM_ClearGridTableView(TvList);
  118. int nRow = 0;
  119. TvList->BeginUpdate();
  120. try
  121. {
  122. try
  123. {
  124. #if 0
  125. pADO = new TADOQuery(NULL);
  126. pADO->Close();
  127. pADO->Connection = ITSDb_GetConnection();
  128. pADO->SQL->Clear();
  129. pADO->SQL->Text = sQry;
  130. pADO->Prepared = true;
  131. pADO->Open();
  132. for( ; !pADO->Eof; pADO->Next())
  133. {
  134. nRow = m_pGDC->AppendRecord();
  135. m_pGDC->Values[nRow][ColumnSel->Index] = false;
  136. m_pGDC->Values[nRow][Column01->Index] = pADO->FieldByName("VDS_CTLR_NMBR")->AsString;
  137. m_pGDC->Values[nRow][Column02->Index] = pADO->FieldByName("VDS_NM")->AsString;
  138. m_pGDC->Values[nRow][Column03->Index] = pADO->FieldByName("LINK_ID")->AsString;
  139. m_pGDC->Values[nRow][Column04->Index] = pADO->FieldByName("STR_NAME")->AsString;
  140. m_pGDC->Values[nRow][Column05->Index] = pADO->FieldByName("END_NAME")->AsString;
  141. }
  142. #else
  143. FOR_STL(TVdsLink*, pObj, MyVdsCtlrManager->FLinkLists)
  144. {
  145. nRow = m_pGDC->AppendRecord();
  146. m_pGDC->Values[nRow][ColumnSel->Index] = pObj->IsSelected;
  147. m_pGDC->Values[nRow][Column01->Index] = pObj->VDS_CTLR_NMBR;
  148. m_pGDC->Values[nRow][Column02->Index] = pObj->VDS_NM;
  149. m_pGDC->Values[nRow][Column03->Index] = pObj->LINK_ID;
  150. m_pGDC->Values[nRow][Column04->Index] = pObj->STR_NAME;
  151. m_pGDC->Values[nRow][Column05->Index] = pObj->END_NAME;
  152. }
  153. #endif
  154. }
  155. catch(EDatabaseError &E)
  156. {
  157. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  158. DBERRORMSG("TITSSEL5M::SelListData", String(E.ClassName()), E.Message, sQry);
  159. throw Exception(String(E.ClassName()) + E.Message);
  160. }
  161. catch(Exception &exception)
  162. {
  163. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  164. DBERRORMSG("TITSSEL5M::SelListData", String(exception.ClassName()), exception.Message, sQry);
  165. throw Exception(String(exception.ClassName()) + exception.Message);
  166. }
  167. }
  168. __finally
  169. {
  170. if (pADO)
  171. {
  172. pADO->Close();
  173. delete pADO;
  174. }
  175. TvList->EndUpdate();
  176. }
  177. }
  178. //---------------------------------------------------------------------------
  179. void __fastcall TITSSEL5M::BtnCloseClick(TObject *Sender)
  180. {
  181. FIdList = "";
  182. Close();
  183. }
  184. //---------------------------------------------------------------------------
  185. void __fastcall TITSSEL5M::BtnSelectClick(TObject *Sender)
  186. {
  187. FIdList = "";
  188. int nSelects = CMM_GetSelectCount(TvList, ColumnSel->Index, Column02->Index, FIdList);
  189. if (0 == nSelects)
  190. {
  191. Application->MessageBox(FrmLang->lblSelErr->Caption.c_str(),//L"목록에서 도로를 먼저 선택 하세요.",
  192. cxGroupBox1->Caption.c_str(), MB_OK|MB_ICONWARNING|MB_APPLMODAL);
  193. return;
  194. }
  195. MyVdsCtlrManager->FLinkSelCnt = 0;
  196. FOR_STL(TVdsLink*, pObj, MyVdsCtlrManager->FLinkLists)
  197. {
  198. pObj->IsSelected = false;
  199. }
  200. TvList->BeginUpdate();
  201. try
  202. {
  203. int nRowCnt = TvList->ViewData->RecordCount;
  204. for (int ii = 0; ii < nRowCnt; ii++)
  205. {
  206. TcxCustomGridRow* ARow = TvList->ViewData->Rows[ii];
  207. if (!ARow->IsData) continue;
  208. if (((bool)ARow->Values[ColumnSel->Index]))
  209. {
  210. String LINK_ID = ARow->Values[Column03->Index];
  211. TVdsLink *pObj = MyVdsCtlrManager->FLinkLists.Find(LINK_ID);
  212. if (pObj)
  213. {
  214. pObj->IsSelected = true;
  215. MyVdsCtlrManager->FLinkSelCnt++;
  216. }
  217. }
  218. }
  219. }
  220. __finally
  221. {
  222. TvList->EndUpdate();
  223. }
  224. m_bSelected = true;
  225. Close();
  226. }
  227. //---------------------------------------------------------------------------
  228. void __fastcall TITSSEL5M::FormClose(TObject *Sender, TCloseAction &Action)
  229. {
  230. CommClose();
  231. ITSSEL5M = NULL;
  232. //Action = caFree;
  233. }
  234. //---------------------------------------------------------------------------
  235. void __fastcall TITSSEL5M::SetMultiSelect(bool AMultiSelect)
  236. {
  237. TvList->OptionsSelection->MultiSelect = AMultiSelect;
  238. }
  239. //---------------------------------------------------------------------------
  240. bool __fastcall TITSSEL5M::GetMultiSelect()
  241. {
  242. return TvList->OptionsSelection->MultiSelect;
  243. }
  244. //---------------------------------------------------------------------------
  245. void __fastcall TITSSEL5M::BtnAllSelectClick(TObject *Sender)
  246. {
  247. TcxButton *pBtn = (TcxButton*)Sender;
  248. CMM_CheckAllListItem(TvList, ColumnSel->Index, pBtn->Tag);
  249. }
  250. //---------------------------------------------------------------------------