PageLog.cpp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. // PageLog.cpp : 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "OGCAssistTool.h"
  5. #include "PageLog.h"
  6. // CPageLog 对话框
  7. IMPLEMENT_DYNAMIC(CPageLog, CDialogEx)
  8. CPageLog::CPageLog(CWnd* pParent /*=NULL*/)
  9. : CDialogEx(CPageLog::IDD, pParent)
  10. {
  11. }
  12. CPageLog::~CPageLog()
  13. {
  14. }
  15. void CPageLog::DoDataExchange(CDataExchange* pDX)
  16. {
  17. CDialogEx::DoDataExchange(pDX);
  18. DDX_Control(pDX, IDC_DATETIMEPICKER1, m_dtStartTime);
  19. DDX_Control(pDX, IDC_DATETIMEPICKER2, m_dtEndTime);
  20. DDX_Control(pDX, IDC_LIST1, m_ctrlList);
  21. }
  22. BEGIN_MESSAGE_MAP(CPageLog, CDialogEx)
  23. ON_WM_CTLCOLOR()
  24. ON_BN_CLICKED(BTN_QUERY, &CPageLog::OnBnClickedQuery)
  25. ON_NOTIFY(NM_CUSTOMDRAW, IDC_LIST1, &CPageLog::OnNMCustomdrawList1)
  26. END_MESSAGE_MAP()
  27. // CDlgDebug 消息处理程序
  28. BOOL CPageLog::OnInitDialog()
  29. {
  30. CDialogEx::OnInitDialog();
  31. // TODO: 在此添加额外的初始化
  32. SetBackgroundColor(RGB(200,200,200));
  33. m_dtStartTime.SetFormat(_T("MM/dd HH:mm"));
  34. m_dtEndTime.SetFormat(_T("MM/dd HH:mm"));
  35. // 设置开始时间为前一天;
  36. CTime tm1 = CTime::GetCurrentTime();
  37. CTimeSpan tsp = CTimeSpan(3,0,0,0);
  38. tm1 -= tsp;
  39. m_dtStartTime.SetTime(&tm1);
  40. m_ctrlList.SetListFont(_T("新宋体"), 11, TRUE);
  41. m_ctrlList.SetHeadings(
  42. _T("批次号,90"),
  43. _T("SN,90"),
  44. _T("调试时间,190"),
  45. _T("调试耗时,90"),
  46. _T("调试结果,90"),
  47. _T("▲E实际值,90"),
  48. _T("▲E标准值,90"),
  49. _T("32组RGB▲E值,300"),
  50. NULL
  51. );
  52. // 默认Check_test_date勾选;
  53. ((CButton*)GetDlgItem(CHECK_TEST_TIME))->SetCheck(TRUE);
  54. return TRUE; // return TRUE unless you set the focus to a control
  55. // 异常: OCX 属性页应返回 FALSE
  56. }
  57. HBRUSH CPageLog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  58. {
  59. HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
  60. // TODO: 在此更改 DC 的任何属性
  61. switch ( pWnd->GetDlgCtrlID() )
  62. {
  63. case CHECK_TEST_TIME:
  64. case CHECK_TEST_RESULT:
  65. case CHECK_SN:
  66. case CHECK_BATCH_NUM:
  67. {
  68. #if 1 // 透明控件处理;
  69. pDC->SetBkMode(TRANSPARENT);
  70. CRect rc;
  71. pWnd->GetWindowRect(&rc);
  72. ScreenToClient(&rc);
  73. CDC* dc = GetDC();
  74. pDC->BitBlt(0,0,rc.Width(),rc.Height(),dc,rc.left,rc.top,SRCCOPY); //把父窗口背景图片先画到按钮上
  75. ReleaseDC(dc);
  76. hbr = (HBRUSH) ::GetStockObject(NULL_BRUSH);
  77. #endif
  78. }
  79. break;
  80. default:
  81. break;
  82. }
  83. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  84. return hbr;
  85. }
  86. void CPageLog::OnBnClickedQuery()
  87. {
  88. // TODO: 在此添加控件通知处理程序代码
  89. BOOL bCheckDate = ((CButton*)GetDlgItem(CHECK_TEST_TIME))->GetCheck();
  90. BOOL bCheckBatchNum = ((CButton*)GetDlgItem(CHECK_BATCH_NUM))->GetCheck();
  91. BOOL bCheckSN = ((CButton*)GetDlgItem(CHECK_SN))->GetCheck();
  92. BOOL bCheckResult = ((CButton*)GetDlgItem(CHECK_TEST_RESULT))->GetCheck();
  93. if ( !(bCheckDate || bCheckBatchNum || bCheckSN || bCheckResult) )
  94. {
  95. MessageBox(_T("必须勾选某一项才能查询数据!"), _T("提示"), MB_ICONWARNING);
  96. return;
  97. }
  98. std::string strWhere;
  99. if ( bCheckDate )
  100. {
  101. CTime tStart;
  102. CTime tEnd;
  103. m_dtStartTime.GetTime(tStart);
  104. m_dtEndTime.GetTime(tEnd);
  105. strWhere.append("TestTime >= '");
  106. strWhere.append(CharEncoding::UNICODE2ASCII((LPWCH)tStart.Format(_T("%Y-%m-%d %H:%M:%S")).GetString()));
  107. strWhere.append("' and TestTime <='");
  108. strWhere.append(CharEncoding::UNICODE2ASCII((LPWCH)tEnd.Format(_T("%Y-%m-%d %H:%M:%S")).GetString()));
  109. strWhere.append("'");
  110. }
  111. if ( bCheckBatchNum )
  112. {
  113. CString strOrder;
  114. GetDlgItemText(EDIT_BATCH_NUM, strOrder);
  115. if ( strWhere.size() )
  116. strWhere.append(" and OrderID='");
  117. else
  118. strWhere.append(" OrderID='");
  119. strWhere.append(CharEncoding::UNICODE2ASCII((LPWCH)strOrder.GetString()));
  120. strWhere.append("'");
  121. }
  122. if ( bCheckSN )
  123. {
  124. CString strSN;
  125. GetDlgItemText(EDIT_SN, strSN);
  126. if ( strWhere.size() )
  127. strWhere.append(" and SN='");
  128. else
  129. strWhere.append(" SN='");
  130. strWhere.append(CharEncoding::UNICODE2ASCII((LPWCH)strSN.GetString()));
  131. strWhere.append("'");
  132. }
  133. if ( bCheckResult )
  134. {
  135. CComboBox *pCb = (CComboBox*)GetDlgItem(IDC_COMBO1);
  136. if ( pCb )
  137. {
  138. int nCurSel = pCb->GetCurSel();
  139. if ( nCurSel != CB_ERR )
  140. {
  141. if ( strWhere.size() )
  142. strWhere.append(" and TestResult='");
  143. else
  144. strWhere.append(" TestResult='");
  145. strWhere.append(nCurSel ? "1" : "0");
  146. strWhere.append("'");
  147. }
  148. }
  149. }
  150. std::vector<TB_SN> vtSNData;
  151. if ( GLOBAL::g_db.QuerySNData(vtSNData, strWhere) != -1 )
  152. {
  153. UpdateList(vtSNData);
  154. }
  155. }
  156. void CPageLog::UpdateList(std::vector<TB_SN> &vtSNData)
  157. {
  158. int nIndex = 0;
  159. CString strValue;
  160. m_ctrlList.RemoveAll();
  161. m_ctrlList.m_AryList.SetSize(vtSNData.size(), 1);
  162. for (std::vector<TB_SN>::iterator it = vtSNData.begin(); it != vtSNData.end(); it++)
  163. {
  164. CStringArray arryString;
  165. arryString.Add(CharEncoding::ASCII2UNICODE(it->strOrder.c_str()));
  166. arryString.Add(CharEncoding::ASCII2UNICODE(it->strSN.c_str()));
  167. arryString.Add(CharEncoding::ASCII2UNICODE(it->strTestTime.c_str()));
  168. arryString.Add(CharEncoding::ASCII2UNICODE(it->strElapsed.c_str()));
  169. arryString.Add(it->strTestResult == "1" ? _T("PASS") : _T("FAIL"));
  170. arryString.Add(CharEncoding::ASCII2UNICODE(it->strDeltaAVGEValue.c_str()));
  171. arryString.Add(CharEncoding::ASCII2UNICODE(it->strDeltaEValue.c_str()));
  172. arryString.Add(CharEncoding::ASCII2UNICODE(it->strDetails.c_str()));
  173. //arryString.Add(strValue);
  174. m_ctrlList.m_AryList.ElementAt(nIndex++).Copy(arryString);
  175. }
  176. //m_ctrlList.m_AryList.SetSize(vtRGB.size(), 1);
  177. m_ctrlList.SetItemCountEx(vtSNData.size());
  178. }
  179. void CPageLog::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult)
  180. {
  181. NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
  182. *pResult = 0;
  183. if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
  184. {
  185. *pResult = CDRF_NOTIFYITEMDRAW;
  186. }
  187. else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
  188. {
  189. if ( m_ctrlList.m_AryList.ElementAt(pLVCD->nmcd.dwItemSpec).ElementAt(4) == _T("FAIL") )
  190. {
  191. pLVCD->clrText = RGB(235,10,10);
  192. }
  193. if ( pLVCD->nmcd.dwItemSpec % 2 )
  194. pLVCD->clrTextBk = RGB(204,204,204);
  195. else
  196. pLVCD->clrTextBk = RGB(190,190,190);
  197. *pResult = CDRF_DODEFAULT;
  198. }
  199. }