IDB0010MF.cpp 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include "ITSSkinF.h"
  4. #include "ITSUtilF.h"
  5. #include "ITSDbF.h"
  6. #include "AppGlobalF.h"
  7. #include "CDSNodeF.h"
  8. #include "ITSLangTransF.h"
  9. #pragma hdrstop
  10. #include "IDB0010MF.h"
  11. #include "IDB00101F.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 "cxEdit"
  24. #pragma link "cxFilter"
  25. #pragma link "cxGraphics"
  26. #pragma link "cxGrid"
  27. #pragma link "cxGridCustomTableView"
  28. #pragma link "cxGridCustomView"
  29. #pragma link "cxGridLevel"
  30. #pragma link "cxGridTableView"
  31. #pragma link "cxLabel"
  32. #pragma link "cxLookAndFeelPainters"
  33. #pragma link "cxLookAndFeels"
  34. #pragma link "cxStyles"
  35. #pragma link "cxTextEdit"
  36. #pragma link "dxSkinBlack"
  37. #pragma link "dxSkinBlue"
  38. #pragma link "dxSkinsCore"
  39. #pragma link "dxSkinscxPCPainter"
  40. #pragma link "dxSkinMcSkin"
  41. #pragma resource "*.dfm"
  42. TIDB0010M *IDB0010M = NULL;
  43. //---------------------------------------------------------------------------
  44. __fastcall TIDB0010M::TIDB0010M(TComponent* Owner)
  45. : TForm(Owner)
  46. {
  47. LangTrans->Translate(this, ITSDb_GetConnection());
  48. ITSSkin_Load(this);
  49. CMM_LoadForm(g_sFormsDir, this);
  50. }
  51. //---------------------------------------------------------------------------
  52. void __fastcall TIDB0010M::CommClose()
  53. {
  54. try
  55. {
  56. CMM_SaveForm(g_sFormsDir, this);
  57. }
  58. catch(...)
  59. {
  60. }
  61. }
  62. //---------------------------------------------------------------------------
  63. void __fastcall TIDB0010M::FormShow(TObject *Sender)
  64. {
  65. Refresh();
  66. FormInit();
  67. TmrShow->Enabled = true;
  68. }
  69. //---------------------------------------------------------------------------
  70. void __fastcall TIDB0010M::FormInit()
  71. {
  72. m_pGDC = TvList->DataController;
  73. TvList->OptionsView->NoDataToDisplayInfoText = lblNoInfo->Caption;//"<노드 정보가 없습니다>";
  74. FCodeTurnP = ItsCodeManager->FLists.Find("TLE"); //회전제한
  75. FCodeNodeT = ItsCodeManager->FLists.Find("NDT"); //노드유형
  76. }
  77. //---------------------------------------------------------------------------
  78. void __fastcall TIDB0010M::TmrShowTimer(TObject *Sender)
  79. {
  80. TmrShow->Enabled = false;
  81. BtnSearchClick((TObject*)BtnSearch);
  82. }
  83. //---------------------------------------------------------------------------
  84. void __fastcall TIDB0010M::RefreshData()
  85. {
  86. SelListData();
  87. }
  88. //---------------------------------------------------------------------------
  89. void __fastcall TIDB0010M::SelListData()
  90. {
  91. TItsSubCode *pSubCode;
  92. CMM_ClearGridTableView(TvList);
  93. int nRow = 0;
  94. try
  95. {
  96. TvList->BeginUpdate();
  97. try
  98. {
  99. ItsNodeManager->FLists.Lock();
  100. FOR_STL(TItsNode *, pNode, ItsNodeManager->FLists)
  101. {
  102. nRow = m_pGDC->AppendRecord();
  103. m_pGDC->Values[nRow][Column00->Index] = pNode->NODE_ID; //노드ID
  104. m_pGDC->Values[nRow][Column01->Index] = pNode->NODE_ID; //노드ID
  105. String sNodeType = "[" + pNode->NODE_TYPE + "] ";
  106. if (FCodeNodeT)
  107. {
  108. pSubCode = FCodeNodeT->FSubLists.Find(pNode->NODE_TYPE);
  109. if (pSubCode) sNodeType = sNodeType + pSubCode->CMMN_CD_KOR_NM;
  110. }
  111. m_pGDC->Values[nRow][Column02->Index] = sNodeType; //노드유형
  112. m_pGDC->Values[nRow][Column03->Index] = pNode->NODE_NAME; //교차로명칭
  113. String sTurnP = "[" + pNode->TURN_P + "] ";
  114. if (FCodeTurnP)
  115. {
  116. pSubCode = FCodeTurnP->FSubLists.Find(pNode->TURN_P);
  117. if (pSubCode) sTurnP = sTurnP + pSubCode->CMMN_CD_KOR_NM;
  118. }
  119. m_pGDC->Values[nRow][Column04->Index] = sTurnP; //회전제한유무
  120. m_pGDC->Values[nRow][Column05->Index] = pNode->RMRK; //비고
  121. m_pGDC->Values[nRow][Column06->Index] = String(pNode->X_CRDN); //X 좌표
  122. m_pGDC->Values[nRow][Column07->Index] = String(pNode->Y_CRDN); //Y 좌표
  123. m_pGDC->Values[nRow][Column08->Index] = (int)pNode;
  124. }
  125. }
  126. __finally
  127. {
  128. ItsNodeManager->FLists.UnLock();
  129. }
  130. }
  131. __finally
  132. {
  133. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  134. TvList->EndUpdate();
  135. TvList->DataController->GotoFirst();
  136. TvList->DataController->FocusedRecordIndex = 0;
  137. CxList->SetFocus();
  138. }
  139. }
  140. //---------------------------------------------------------------------------
  141. void __fastcall TIDB0010M::BtnSearchClick(TObject *Sender)
  142. {
  143. Application->ProcessMessages();
  144. TSqlCursor sqlCrs((TControl*)BtnSearch);
  145. RefreshData();
  146. CxList->SetFocus();
  147. }
  148. //---------------------------------------------------------------------------
  149. void __fastcall TIDB0010M::BtnCloseClick(TObject *Sender)
  150. {
  151. Close();
  152. }
  153. //---------------------------------------------------------------------------
  154. void __fastcall TIDB0010M::ChkExpandClick(TObject *Sender)
  155. {
  156. CMM_ExpandCollapseChk(TvList, ChkExpand->Checked);
  157. }
  158. //---------------------------------------------------------------------------
  159. void __fastcall TIDB0010M::BtnExlSaveClick(TObject *Sender)
  160. {
  161. TcxGrid *pGrid = CxList;
  162. TcxGridTableView *pView = TvList;
  163. String sTitle= lblInfo->Caption;//"노드정보";
  164. CMM_ExportToExcelFile(sTitle, pGrid, pView, this);
  165. }
  166. //---------------------------------------------------------------------------
  167. void __fastcall TIDB0010M::BtnInsertClick(TObject *Sender)
  168. {
  169. //
  170. }
  171. //---------------------------------------------------------------------------
  172. void __fastcall TIDB0010M::BtnEditClick(TObject *Sender)
  173. {
  174. if (TvList->ViewData->RecordCount <= 0) return;
  175. int nRow = m_pGDC->FocusedRecordIndex;
  176. if( nRow < 0 )
  177. return;
  178. String sNodeId = m_pGDC->Values[nRow][Column01->Index]; //노드ID
  179. String sNodeNm = m_pGDC->Values[nRow][Column03->Index]; //교차로명칭
  180. //String sRemark = m_pGDC->Values[nRow][Column05->Index]; //비고
  181. //String sPosX = VarToStrDef(m_pGDC->Values[nRow][Column06->Index], "0");
  182. //String sPosY = VarToStrDef(m_pGDC->Values[nRow][Column07->Index], "0");
  183. try {
  184. TIDB00101 *pDlg = new TIDB00101(this);
  185. pDlg->EdId->Text = sNodeId;
  186. pDlg->EdNm->Text = sNodeNm;
  187. pDlg->ShowModal();
  188. if (pDlg->FUpdated)
  189. {
  190. sNodeNm = pDlg->EdNm->Text.Trim();
  191. m_pGDC->Values[nRow][Column03->Index] = sNodeNm;
  192. int nMemPtr = m_pGDC->Values[nRow][Column08->Index];
  193. TItsNode *pObj = (TItsNode*)nMemPtr;
  194. pObj->NODE_NAME = sNodeNm;
  195. }
  196. delete pDlg;
  197. } catch(...) { }
  198. }
  199. //---------------------------------------------------------------------------
  200. void __fastcall TIDB0010M::BtnDeleteClick(TObject *Sender)
  201. {
  202. //
  203. }
  204. //---------------------------------------------------------------------------
  205. void __fastcall TIDB0010M::FormClose(TObject *Sender, TCloseAction &Action)
  206. {
  207. CommClose();
  208. IDB0010M = NULL;
  209. Action = caFree;
  210. }
  211. //---------------------------------------------------------------------------
  212. void __fastcall TIDB0010M::BtnApplyClick(TObject *Sender)
  213. {
  214. //
  215. }
  216. //---------------------------------------------------------------------------
  217. void __fastcall TIDB0010M::ChkAutoWidthPropertiesChange(TObject *Sender)
  218. {
  219. try
  220. {
  221. TvList->BeginUpdate();
  222. TvList->OptionsView->ColumnAutoWidth = ChkAutoWidth->Checked;
  223. BtnBestFit->Visible = !ChkAutoWidth->Checked;
  224. }
  225. __finally
  226. {
  227. TvList->EndUpdate();
  228. }
  229. }
  230. //---------------------------------------------------------------------------
  231. void __fastcall TIDB0010M::BtnBestFitClick(TObject *Sender)
  232. {
  233. try
  234. {
  235. TvList->BeginUpdate();
  236. TvList->ApplyBestFit(NULL, false, false);
  237. }
  238. __finally
  239. {
  240. TvList->EndUpdate();
  241. }
  242. }
  243. //---------------------------------------------------------------------------
  244. void __fastcall TIDB0010M::TvListCellDblClick(TcxCustomGridTableView *Sender, TcxGridTableDataCellViewInfo *ACellViewInfo,
  245. TMouseButton AButton, TShiftState AShift, bool &AHandled)
  246. {
  247. DisplayListData();
  248. BtnEditClick((TObject*)BtnEdit);
  249. }
  250. //---------------------------------------------------------------------------
  251. void __fastcall TIDB0010M::DisplayListData()
  252. {
  253. if (TvList->ViewData->RecordCount <= 0) return;
  254. int nIndex = m_pGDC->FocusedRecordIndex;
  255. if( nIndex < 0 )
  256. return;
  257. String sPosX = VarToStrDef(m_pGDC->Values[nIndex][Column06->Index], "0");
  258. String sPosY = VarToStrDef(m_pGDC->Values[nIndex][Column07->Index], "0");
  259. //ShowMessage(sPosX + " " + sPosY);
  260. #if 0
  261. double dTempX = strTempX.ToDouble();
  262. unsigned int nTempX = dTempX * 10000000;
  263. double dTempY = cxGrid_DataTV->DataController->Values[nIndex][enGridPosition_Y_CRDN];
  264. unsigned int nTempY = dTempY * 100000000;
  265. #endif
  266. }
  267. //---------------------------------------------------------------------------
  268. void __fastcall TIDB0010M::TvListDataControllerFilterChanged(TObject *Sender)
  269. {
  270. CMM_SetFilterLike(TvList);
  271. LblRecords->Caption = "("+FormatFloat("##,##0", m_pGDC->FilteredRecordCount) +"/"+FormatFloat("##,##0", m_pGDC->RecordCount) + ")";
  272. }
  273. //---------------------------------------------------------------------------