TAS00601F.cpp 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660
  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. #include "ITS_OPLibF.h"
  10. #pragma hdrstop
  11. #include "TAS00601F.h"
  12. //---------------------------------------------------------------------------
  13. #pragma package(smart_init)
  14. #pragma link "cxButtons"
  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 "cxEdit"
  23. #pragma link "cxFilter"
  24. #pragma link "cxGraphics"
  25. #pragma link "cxGrid"
  26. #pragma link "cxGridBandedTableView"
  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 "cxSpinEdit"
  35. #pragma link "cxSplitter"
  36. #pragma link "cxStyles"
  37. #pragma link "dxSkinBlack"
  38. #pragma link "dxSkinBlue"
  39. #pragma link "dxSkinsCore"
  40. #pragma link "dxSkinscxPCPainter"
  41. #pragma link "dxSkinMcSkin"
  42. #pragma resource "*.dfm"
  43. TTAS00601 *TAS00601 = NULL;
  44. //---------------------------------------------------------------------------
  45. __fastcall TTAS00601::TTAS00601(TComponent* Owner, HWND hHandle,
  46. String AStDay, String AEdDay, String AStHour, String AEdHour, String AWeek, String ADir, String AAtrdNm, int ATable, int AQryType)
  47. : TForm(Owner)
  48. {
  49. LangTrans->Translate(this, ITSDb_GetConnection());
  50. ITSSkin_Load(this);
  51. CMM_LoadForm(g_sFormsDir, this);
  52. FParent = hHandle;
  53. FStDay = AStDay;
  54. FEdDay = AEdDay;
  55. FStHour = AStHour;
  56. FEdHour = AEdHour;
  57. FWeek = AWeek;
  58. FDir = ADir;
  59. FAtrdNm = AAtrdNm;
  60. FTable = ATable;
  61. FQryType = AQryType;
  62. }
  63. //---------------------------------------------------------------------------
  64. __fastcall TTAS00601::~TTAS00601(void)
  65. {
  66. }
  67. //--------------------------------------------------------------------------
  68. void __fastcall TTAS00601::FormInit()
  69. {
  70. ADOQry->Connection = ITSDb_GetConnection();
  71. m_pGDC = TvList->DataController;
  72. TvList->OptionsView->NoDataToDisplayInfoText = FrmLang->lblNoInfo->Caption;//"<노선별속도분석 정보>";
  73. LblSearch->Caption = FrmLang->lblQryCond->Caption + FStDay + " ~ " + FEdDay;
  74. }
  75. //---------------------------------------------------------------------------
  76. void __fastcall TTAS00601::FormShow(TObject *Sender)
  77. {
  78. FormInit();
  79. Refresh();
  80. TmrShow->Enabled = true;
  81. }
  82. //---------------------------------------------------------------------------
  83. void __fastcall TTAS00601::CommClose()
  84. {
  85. CMM_SaveForm(g_sFormsDir, this);
  86. //TAS00601 = NULL;
  87. }
  88. //---------------------------------------------------------------------------
  89. void __fastcall TTAS00601::TmrShowTimer(TObject *Sender)
  90. {
  91. TmrShow->Enabled = false;
  92. Application->ProcessMessages();
  93. if (FTable == 0)
  94. {
  95. Col04->Visible = true;
  96. SelHistory1();
  97. }
  98. else
  99. if (FTable == 1)
  100. {
  101. Col04->Visible = false;
  102. SelHistory2();
  103. }
  104. }
  105. //---------------------------------------------------------------------------
  106. void __fastcall TTAS00601::ChkExpandClick(TObject *Sender)
  107. {
  108. CMM_ExpandCollapseChk(TvList, ChkExpand->Checked);
  109. }
  110. //---------------------------------------------------------------------------
  111. String __fastcall TTAS00601::GetDayWeekCode(String ADay)
  112. {
  113. TDateTime dt;
  114. System::Word Year = (System::Word)ADay.SubString( 1, 4).ToIntDef(2018);
  115. System::Word Month = (System::Word)ADay.SubString( 5, 2).ToIntDef(1);
  116. System::Word Day = (System::Word)ADay.SubString( 7, 2).ToIntDef(1);
  117. dt = EncodeDate(Year, Month, Day);
  118. System::Word week = DayOfWeek(dt);
  119. //const days: array[1..7] of string = ('일','월','화','수','목','금','토');
  120. String sWeek[8] = { "", "DTW7", "DTW1", "DTW2", "DTW3", "DTW4", "DTW5", "DTW6" };
  121. return sWeek[week];
  122. }
  123. //---------------------------------------------------------------------------
  124. void __fastcall TTAS00601::SelHistory1()
  125. {
  126. TSqlCursor sqlCrs;
  127. String sQry;
  128. TADOQuery *pADO = ADOQry;
  129. String SQLAtrd = "";
  130. String SQLDrct = "";
  131. String SQLWeek = "";
  132. if (FAtrdNm != "")
  133. {
  134. SQLAtrd = " AND ATRD_NM IN (" + FAtrdNm + ") \r\n";
  135. }
  136. if (FDir != "")
  137. {
  138. SQLDrct = " AND DRCT_CD IN (" + FDir + ") \r\n";
  139. }
  140. if (FWeek != "")
  141. {
  142. SQLWeek = " AND A.DAY_TYPE_CD IN (" + FWeek + ") \r\n";
  143. }
  144. sQry = "SELECT Y.ATRD_NM, Y.DRCT_CD_NM, \r\n"
  145. " Y.IFSC_STRT_NM||' → '||Y.IFSC_END_NM AS IFSC_NM, \r\n"
  146. " Y.LINK_STRT_NM||' → '||Y.LINK_END_NM AS LINK_NM, \r\n"
  147. " X.* \r\n"
  148. " FROM (SELECT /*+ INDEX(A PK_TAS_LINK_SPED_HH) */ \r\n"
  149. " A.LINK_ID, \r\n"
  150. " ROUND(AVG(H00), 0) AS H00, \r\n"
  151. " ROUND(AVG(H01), 0) AS H01, \r\n"
  152. " ROUND(AVG(H02), 0) AS H02, \r\n"
  153. " ROUND(AVG(H03), 0) AS H03, \r\n"
  154. " ROUND(AVG(H04), 0) AS H04, \r\n"
  155. " ROUND(AVG(H05), 0) AS H05, \r\n"
  156. " ROUND(AVG(H06), 0) AS H06, \r\n"
  157. " ROUND(AVG(H07), 0) AS H07, \r\n"
  158. " ROUND(AVG(H08), 0) AS H08, \r\n"
  159. " ROUND(AVG(H09), 0) AS H09, \r\n"
  160. " ROUND(AVG(H10), 0) AS H10, \r\n"
  161. " ROUND(AVG(H11), 0) AS H11, \r\n"
  162. " ROUND(AVG(H12), 0) AS H12, \r\n"
  163. " ROUND(AVG(H13), 0) AS H13, \r\n"
  164. " ROUND(AVG(H14), 0) AS H14, \r\n"
  165. " ROUND(AVG(H15), 0) AS H15, \r\n"
  166. " ROUND(AVG(H16), 0) AS H16, \r\n"
  167. " ROUND(AVG(H17), 0) AS H17, \r\n"
  168. " ROUND(AVG(H18), 0) AS H18, \r\n"
  169. " ROUND(AVG(H19), 0) AS H19, \r\n"
  170. " ROUND(AVG(H20), 0) AS H20, \r\n"
  171. " ROUND(AVG(H21), 0) AS H21, \r\n"
  172. " ROUND(AVG(H22), 0) AS H22, \r\n"
  173. " ROUND(AVG(H23), 0) AS H23, \r\n"
  174. " ROUND(AVG(SPD), 0) AS SPD \r\n"
  175. " FROM TB_TAS_LINK_SPED_HH A \r\n"
  176. " WHERE A.STAT_DAY BETWEEN :p01 AND :p02 \r\n"
  177. " AND A.LINK_ID IN (SELECT DISTINCT LINK_ID AS LINK_ID \r\n"
  178. " FROM MV_ATRD_LINK \r\n"
  179. " WHERE 1=1 \r\n"
  180. + SQLAtrd + SQLDrct +
  181. " ) \r\n"
  182. + SQLWeek +
  183. " GROUP BY A.LINK_ID \r\n"
  184. " ) X, \r\n"
  185. " MV_ATRD_LINK Y \r\n"
  186. " WHERE 1=1 \r\n"
  187. " AND Y.LINK_ID = X.LINK_ID \r\n"
  188. + SQLAtrd + SQLDrct +
  189. " ORDER BY Y.ATRD_NM, Y.DRCT_CD_NM, Y.LINK_SEQ \r\n";
  190. m_pGDC = TvList->DataController;
  191. CMM_ClearGridTableView(TvList);
  192. int nRow = 0;
  193. int nIdxSped, ii;
  194. String colName;
  195. TvList->BeginUpdate(lsimImmediate);
  196. try
  197. {
  198. try
  199. {
  200. ITSDb_SQLText(pADO, sQry);
  201. ITSDb_SQLBind(pADO, "p01", FStDay);
  202. ITSDb_SQLBind(pADO, "p02", FEdDay);
  203. ITSDb_SQLOpen(pADO);
  204. for( ; !pADO->Eof; pADO->Next(), nRow++)
  205. {
  206. nRow = m_pGDC->AppendRecord();
  207. m_pGDC->Values[nRow][Col01->Index] = pADO->FieldByName("ATRD_NM")->AsString;
  208. m_pGDC->Values[nRow][Col02->Index] = pADO->FieldByName("DRCT_CD_NM")->AsString;
  209. m_pGDC->Values[nRow][Col03->Index] = pADO->FieldByName("IFSC_NM")->AsString;
  210. m_pGDC->Values[nRow][Col04->Index] = pADO->FieldByName("LINK_NM")->AsString;
  211. m_pGDC->Values[nRow][Col05->Index] = pADO->FieldByName("SPD")->AsString;
  212. nIdxSped = ColSped->Index;
  213. for (ii = 0; ii < DAY_HOUR; ii++)
  214. {
  215. colName.printf(L"h%02d", ii);
  216. m_pGDC->Values[nRow][nIdxSped] = pADO->FieldByName(colName)->AsInteger;
  217. nIdxSped++;
  218. }
  219. }
  220. pADO->Close();
  221. }
  222. catch(EDatabaseError &E)
  223. {
  224. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  225. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQry);
  226. throw Exception(String(E.ClassName()) + E.Message);
  227. }
  228. catch(Exception &e)
  229. {
  230. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  231. DBERRORMSG(Caption, String(e.ClassName()), e.Message, sQry);
  232. throw Exception(String(e.ClassName()) + e.Message);
  233. }
  234. }
  235. __finally
  236. {
  237. TvList->EndUpdate();
  238. LblRecords->Caption = FormatFloat("##,##0", m_pGDC->RecordCount) + FrmLang->lblEA->Caption;//" 건";
  239. String sEnd = FrmLang->lblQrySel->Caption + " [" + LblRecords->Caption + "]";//"데이터 " + LblRecords->Caption + " 이 조회 되었습니다.";
  240. Application->MessageBox(sEnd.c_str(),
  241. FrmLang->lblQryEnd->Caption.c_str(),//L"데이터 조회 완료",
  242. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  243. }
  244. }
  245. //---------------------------------------------------------------------------
  246. void __fastcall TTAS00601::SelHistory2()
  247. {
  248. TSqlCursor sqlCrs;
  249. String sQry;
  250. TADOQuery *pADO = ADOQry;
  251. String SQLAtrd = "";
  252. String SQLDrct = "";
  253. String SQLWeek = "";
  254. if (FAtrdNm != "")
  255. {
  256. SQLAtrd = " AND ATRD_NM IN (" + FAtrdNm + ") \r\n";
  257. }
  258. if (FDir != "")
  259. {
  260. SQLDrct = " AND DRCT_CD IN (" + FDir + ") \r\n";
  261. }
  262. if (FWeek != "")
  263. {
  264. SQLWeek = " AND A.DAY_TYPE_CD IN (" + FWeek + ") \r\n";
  265. }
  266. sQry = "SELECT Y.ATRD_NM, Y.DRCT_CD_NM, \r\n"
  267. " Y.IFSC_STRT_NM||' → '||Y.IFSC_END_NM AS IFSC_NM, \r\n"
  268. " Y.IFSC_STRT_NM||' → '||Y.IFSC_END_NM AS LINK_NM, \r\n"
  269. " X.* \r\n"
  270. " FROM (SELECT /*+ INDEX(A PK_TAS_IFSC_SPED_HH) */ \r\n"
  271. " A.IFSC_ID, \r\n"
  272. " ROUND(AVG(H00), 0) AS H00, \r\n"
  273. " ROUND(AVG(H01), 0) AS H01, \r\n"
  274. " ROUND(AVG(H02), 0) AS H02, \r\n"
  275. " ROUND(AVG(H03), 0) AS H03, \r\n"
  276. " ROUND(AVG(H04), 0) AS H04, \r\n"
  277. " ROUND(AVG(H05), 0) AS H05, \r\n"
  278. " ROUND(AVG(H06), 0) AS H06, \r\n"
  279. " ROUND(AVG(H07), 0) AS H07, \r\n"
  280. " ROUND(AVG(H08), 0) AS H08, \r\n"
  281. " ROUND(AVG(H09), 0) AS H09, \r\n"
  282. " ROUND(AVG(H10), 0) AS H10, \r\n"
  283. " ROUND(AVG(H11), 0) AS H11, \r\n"
  284. " ROUND(AVG(H12), 0) AS H12, \r\n"
  285. " ROUND(AVG(H13), 0) AS H13, \r\n"
  286. " ROUND(AVG(H14), 0) AS H14, \r\n"
  287. " ROUND(AVG(H15), 0) AS H15, \r\n"
  288. " ROUND(AVG(H16), 0) AS H16, \r\n"
  289. " ROUND(AVG(H17), 0) AS H17, \r\n"
  290. " ROUND(AVG(H18), 0) AS H18, \r\n"
  291. " ROUND(AVG(H19), 0) AS H19, \r\n"
  292. " ROUND(AVG(H20), 0) AS H20, \r\n"
  293. " ROUND(AVG(H21), 0) AS H21, \r\n"
  294. " ROUND(AVG(H22), 0) AS H22, \r\n"
  295. " ROUND(AVG(H23), 0) AS H23, \r\n"
  296. " ROUND(AVG(SPD), 0) AS SPD \r\n"
  297. " FROM TB_TAS_IFSC_SPED_HH A \r\n"
  298. " WHERE A.STAT_DAY BETWEEN :p01 AND :p02 \r\n"
  299. " AND A.IFSC_ID IN (SELECT DISTINCT IFSC_ID AS IFSC_ID \r\n"
  300. " FROM MV_ATRD_IFSC \r\n"
  301. " WHERE 1=1 \r\n"
  302. + SQLAtrd + SQLDrct +
  303. " ) \r\n"
  304. + SQLWeek +
  305. " GROUP BY A.IFSC_ID \r\n"
  306. " ) X, \r\n"
  307. " MV_ATRD_IFSC Y \r\n"
  308. " WHERE 1=1 \r\n"
  309. " AND Y.IFSC_ID = X.IFSC_ID \r\n"
  310. + SQLAtrd + SQLDrct +
  311. " ORDER BY Y.ATRD_NM, Y.DRCT_CD_NM, Y.IFSC_SEQ \r\n";
  312. m_pGDC = TvList->DataController;
  313. CMM_ClearGridTableView(TvList);
  314. int nRow = 0;
  315. int nIdxSped, ii;
  316. String colName;
  317. TvList->BeginUpdate(lsimImmediate);
  318. try
  319. {
  320. try
  321. {
  322. ITSDb_SQLText(pADO, sQry);
  323. ITSDb_SQLBind(pADO, "p01", FStDay);
  324. ITSDb_SQLBind(pADO, "p02", FEdDay);
  325. ITSDb_SQLOpen(pADO);
  326. for( ; !pADO->Eof; pADO->Next(), nRow++)
  327. {
  328. nRow = m_pGDC->AppendRecord();
  329. m_pGDC->Values[nRow][Col01->Index] = pADO->FieldByName("ATRD_NM")->AsString;
  330. m_pGDC->Values[nRow][Col02->Index] = pADO->FieldByName("DRCT_CD_NM")->AsString;
  331. m_pGDC->Values[nRow][Col03->Index] = pADO->FieldByName("IFSC_NM")->AsString;
  332. m_pGDC->Values[nRow][Col04->Index] = pADO->FieldByName("LINK_NM")->AsString;
  333. m_pGDC->Values[nRow][Col05->Index] = pADO->FieldByName("SPD")->AsString;
  334. nIdxSped = ColSped->Index;
  335. for (ii = 0; ii < DAY_HOUR; ii++)
  336. {
  337. colName.printf(L"h%02d", ii);
  338. m_pGDC->Values[nRow][nIdxSped] = pADO->FieldByName(colName)->AsInteger;
  339. nIdxSped++;
  340. }
  341. }
  342. pADO->Close();
  343. }
  344. catch(EDatabaseError &E)
  345. {
  346. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  347. DBERRORMSG(Caption, String(E.ClassName()), E.Message, sQry);
  348. throw Exception(String(E.ClassName()) + E.Message);
  349. }
  350. catch(Exception &e)
  351. {
  352. ::PostMessage(Application->MainForm->Handle, (UINT)(WM_USER+0xF4), (WPARAM)0xB2, (LPARAM)0xB2);
  353. DBERRORMSG(Caption, String(e.ClassName()), e.Message, sQry);
  354. throw Exception(String(e.ClassName()) + e.Message);
  355. }
  356. }
  357. __finally
  358. {
  359. TvList->EndUpdate();
  360. LblRecords->Caption = FormatFloat("##,##0", m_pGDC->RecordCount) + FrmLang->lblEA->Caption;//" 건";
  361. String sEnd = FrmLang->lblQrySel->Caption + " [" + LblRecords->Caption + "]";//"데이터 " + LblRecords->Caption + " 이 조회 되었습니다.";
  362. Application->MessageBox(sEnd.c_str(),
  363. FrmLang->lblQryEnd->Caption.c_str(),//L"데이터 조회 완료",
  364. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  365. }
  366. }
  367. //---------------------------------------------------------------------------
  368. void __fastcall TTAS00601::DspHistory()
  369. {
  370. #if 0
  371. m_pGDC = TvList->DataController;
  372. try
  373. {
  374. CMM_ClearGridTableView(TvList);
  375. int nRow1 = 0;
  376. int nRow2 = 0;
  377. int nDataCnt = 0;
  378. int ii;
  379. try
  380. {
  381. TvList->BeginUpdate(lsimImmediate);
  382. nDataCnt = FAtrdManager->FLists.Size();
  383. int nIdxSped, nIdxGrad;
  384. FOR_STL(TAtrdInfo*, pObj, FAtrdManager->FLists)
  385. {
  386. nRow1 = m_pGDC->AppendRecord();
  387. nRow2 = m_pGDC->AppendRecord();
  388. m_pGDC->Values[nRow1][Col01->Index] = pObj->ATRD_NM;
  389. m_pGDC->Values[nRow1][Col02->Index] = pObj->DRCT_CD_NM;
  390. m_pGDC->Values[nRow1][Col03->Index] = pObj->STRT_NM + " → " + pObj->END_NM;
  391. m_pGDC->Values[nRow1][Col04->Index] = "현재";
  392. m_pGDC->Values[nRow2][Col01->Index] = pObj->ATRD_NM;
  393. m_pGDC->Values[nRow2][Col02->Index] = pObj->DRCT_CD_NM;
  394. m_pGDC->Values[nRow2][Col03->Index] = pObj->STRT_NM + " → " + pObj->END_NM;
  395. m_pGDC->Values[nRow2][Col04->Index] = "패턴";
  396. TIfscTrf *pTrf = FTrfManager->FLists.Find(pObj->IFSC_ID);
  397. if (pTrf == NULL)
  398. {
  399. continue;
  400. }
  401. nIdxSped = ColSped->Index;
  402. nIdxGrad = ColGrad->Index;
  403. for (ii = 0; ii < DAY_HOUR; ii++)
  404. {
  405. m_pGDC->Values[nRow1][nIdxSped] = pTrf->INFO[ii].C_SPED;
  406. m_pGDC->Values[nRow1][nIdxGrad] = pTrf->INFO[ii].C_GRAD;
  407. m_pGDC->Values[nRow2][nIdxSped] = pTrf->INFO[ii].P_SPED;
  408. m_pGDC->Values[nRow2][nIdxGrad] = pTrf->INFO[ii].P_GRAD;
  409. nIdxSped++;
  410. nIdxGrad++;
  411. }
  412. }
  413. }
  414. __finally
  415. {
  416. TvList->EndUpdate();
  417. //CxList->SetFocus();
  418. DrawChart(FAtrdNm + " " + FQryDay);
  419. LblRecords->Caption = FormatFloat("##,##0", m_pGDC->RecordCount) + FrmLang->lblEA->Caption;//" 건";
  420. String sEnd = FrmLang->lblQrySel->Caption + " [" + LblRecords->Caption + "]";//"데이터 " + LblRecords->Caption + " 이 조회 되었습니다.";
  421. Application->MessageBox(sEnd.c_str(),
  422. FrmLang->lblQryEnd->Caption.c_str(),//L"데이터 조회 완료",
  423. MB_OK|MB_ICONINFORMATION|MB_APPLMODAL);
  424. }
  425. }
  426. catch(EDatabaseError &E)
  427. {
  428. throw Exception(String(E.ClassName()) + E.Message);
  429. }
  430. catch(Exception &e)
  431. {
  432. throw Exception(String(e.ClassName()) + e.Message);
  433. }
  434. #endif
  435. }
  436. //---------------------------------------------------------------------------
  437. void __fastcall TTAS00601::DrawChart(String ATitle)
  438. {
  439. TcxGridBandedTableView *pView = NULL;
  440. String sAxisX, sAxisY;
  441. int nAxisY1, nAxisY2, nStColIdx, nEdColIdx, nTotColIdx;
  442. nEdColIdx = 0;
  443. nTotColIdx = -1;
  444. pView = TvList;
  445. nAxisY1 = Col03->Index; //구간명
  446. nAxisY2 = Col04->Index; //구분
  447. nEdColIdx = TvListColumn29->Index; // 23시
  448. nStColIdx = ColSped->Index; // 00시
  449. /*
  450. * Chart draw
  451. */
  452. try
  453. {
  454. m_pFrmChart->Clear();
  455. if (pView->DataController->RecordCount == 0)
  456. {
  457. return;
  458. }
  459. m_pFrmChart->BeginDraw("", "", "");
  460. m_pFrmChart->DrawChart5_1((TcxGridTableView *)pView, nAxisY1, nAxisY2, nStColIdx, nEdColIdx, nTotColIdx);
  461. m_pFrmChart->EndDraw();
  462. }
  463. catch(...)
  464. {
  465. }
  466. }
  467. //---------------------------------------------------------------------------
  468. void __fastcall TTAS00601::OnMessage(TMessage &Msg)
  469. {
  470. switch (Msg.Msg)
  471. {
  472. case WM_PARAM_DATABASE:
  473. if (WP_DB_SELECT_OK == Msg.WParam)
  474. {
  475. //ShowMessage("Select Ok");
  476. }
  477. break;
  478. }
  479. }
  480. //---------------------------------------------------------------------------
  481. void __fastcall TTAS00601::BtnExlSaveClick(TObject *Sender)
  482. {
  483. TcxGrid *pGrid = CxList;
  484. TcxGridTableView *pView = TvList;
  485. String sTitle= Caption;//"노선별속도분석";
  486. CMM_ExportToExcelFile(sTitle, pGrid, pView, this);
  487. }
  488. //---------------------------------------------------------------------------
  489. void __fastcall TTAS00601::FormClose(TObject *Sender, TCloseAction &Action)
  490. {
  491. POST_MSG(FParent, WM_SUBFORM_CLOSE, 0, 0);
  492. CommClose();
  493. //TAS00601 = NULL;
  494. }
  495. //---------------------------------------------------------------------------
  496. void __fastcall TTAS00601::FormDestroy(TObject *Sender)
  497. {
  498. CommClose();
  499. }
  500. //---------------------------------------------------------------------------
  501. void __fastcall TTAS00601::FormCreate(TObject *Sender)
  502. {
  503. m_pFrmChart = new TPlugInChart(this);
  504. m_pFrmChart->Parent = PnlChart;
  505. m_pFrmChart->SetChartInfo("", "시간", "속도");
  506. m_pFrmChart->Show();
  507. }
  508. //---------------------------------------------------------------------------
  509. void __fastcall TTAS00601::ColSpedCustomDrawCell(TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
  510. TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone)
  511. {
  512. TColor tColor = ACanvas->Brush->Color;
  513. TColor tFont = clBlack;
  514. try
  515. {
  516. if (!VarIsNull(AViewInfo->Value))
  517. {
  518. int nSpd = AViewInfo->Value;
  519. if (nSpd == 0)
  520. {
  521. tFont = tColor;
  522. tColor = tFont;
  523. }
  524. else
  525. {
  526. if (nSpd <= 10)
  527. {
  528. tFont = clWhite;
  529. tColor = (TColor)0x333333;
  530. }
  531. else
  532. if (nSpd <= 20)
  533. {
  534. tFont = tFont;
  535. tColor = (TColor)0x575757;
  536. }
  537. else
  538. if (nSpd <= 30)
  539. {
  540. tFont = tFont;
  541. tColor = (TColor)0x7B7B7B;
  542. }
  543. else
  544. if (nSpd <= 40)
  545. {
  546. tFont = tFont;
  547. tColor = (TColor)0x9F9F9F;
  548. }
  549. else
  550. if (nSpd <= 50)
  551. {
  552. tFont = clBlue;
  553. tColor = (TColor)0xC3C3C3;
  554. }
  555. else
  556. if (nSpd <= 60)
  557. {
  558. tFont = clBlue;
  559. tColor = (TColor)0xE7E7E7;
  560. }
  561. else
  562. {
  563. tFont = clBlue;
  564. tColor = (TColor)0xF3F3F3;
  565. }
  566. }
  567. }
  568. else
  569. {
  570. tColor = clSilver;
  571. tFont = tColor;
  572. }
  573. ACanvas->Font->Color = tFont;
  574. ACanvas->SetBrushColor(tColor);
  575. }
  576. catch(...)
  577. {
  578. }
  579. }
  580. //---------------------------------------------------------------------------