XTPReportFilterEditControl.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:4k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPReportFilterEditControl.cpp : implementation of the CXTPReportFilterEditControl class.
  2. //
  3. // This file is a part of the XTREME REPORTCONTROL MFC class library.
  4. // (c)1998-2008 Codejock Software, All Rights Reserved.
  5. //
  6. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  7. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  8. // CONSENT OF CODEJOCK SOFTWARE.
  9. //
  10. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  11. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  12. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  13. // SINGLE COMPUTER.
  14. //
  15. // CONTACT INFORMATION:
  16. // support@codejock.com
  17. // http://www.codejock.com
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "stdafx.h"
  21. #include "Resource.h"
  22. #include "Common/XTPResourceManager.h"
  23. #include "Common/XTPDrawHelpers.h"
  24. #include "XTPReportControl.h"
  25. #include "XTPReportColumn.h"
  26. #include "XTPReportColumns.h"
  27. #include "XTPReportFilterEditControl.h"
  28. #ifdef _DEBUG
  29. #define new DEBUG_NEW
  30. #undef THIS_FILE
  31. static char THIS_FILE[] = __FILE__;
  32. #endif
  33. /////////////////////////////////////////////////////////////////////////////
  34. // CXTPReportFilterEditControl
  35. CXTPReportFilterEditControl::CXTPReportFilterEditControl()
  36. {
  37. m_pReportCtrl = NULL;
  38. m_strHint = XTPResourceManager()->LoadString(XTP_IDS_REPORT_FILERT_TEXT_HINT) ;
  39. }
  40. CXTPReportFilterEditControl::~CXTPReportFilterEditControl()
  41. {
  42. }
  43. BEGIN_MESSAGE_MAP(CXTPReportFilterEditControl, CEdit)
  44. //{{AFX_MSG_MAP(CXTPReportFilterEditControl)
  45. ON_CONTROL_REFLECT_EX(EN_CHANGE, OnChange)
  46. ON_WM_PAINT()
  47. //}}AFX_MSG_MAP
  48. END_MESSAGE_MAP()
  49. /////////////////////////////////////////////////////////////////////////////
  50. // CXTPReportFilterEditControl attributes
  51. BOOL CXTPReportFilterEditControl::SetReportCtrl(CXTPReportControl* pReportCtrl)
  52. {
  53. if (pReportCtrl == NULL)
  54. return FALSE;
  55. ASSERT_KINDOF(CXTPReportControl, pReportCtrl);
  56. m_pReportCtrl = pReportCtrl;
  57. return TRUE;
  58. }
  59. CXTPReportControl* CXTPReportFilterEditControl::GetReportCtrl()
  60. {
  61. return m_pReportCtrl;
  62. }
  63. /////////////////////////////////////////////////////////////////////////////
  64. // CXTPReportFilterEditControl operations
  65. /////////////////////////////////////////////////////////////////////////////
  66. // CXTPReportFilterEditControl message handlers
  67. void CXTPReportFilterEditControl::SetHint(LPCTSTR lpszHint)
  68. {
  69. m_strHint = lpszHint;
  70. }
  71. CString CXTPReportFilterEditControl::GetHint() const
  72. {
  73. return m_strHint;
  74. }
  75. // Handles the EN_CHANGE message
  76. BOOL CXTPReportFilterEditControl::OnChange()
  77. {
  78. if (!m_pReportCtrl)
  79. return FALSE;
  80. // Get text
  81. CString strNewFilter;
  82. GetWindowText(strNewFilter);
  83. // Apply new filter
  84. if (m_pReportCtrl->GetFilterText() != strNewFilter)
  85. {
  86. m_pReportCtrl->SetFilterText(strNewFilter);
  87. // refresh control
  88. m_pReportCtrl->Populate();
  89. }
  90. // Returning FALSE allows the parent window to also handle the EN_CHANGE message
  91. return FALSE;
  92. }
  93. void CXTPReportFilterEditControl::OnPaint()
  94. {
  95. if (GetWindowTextLength() == 0 && ::GetFocus() != m_hWnd)
  96. {
  97. CPaintDC dc(this); // device context for painting
  98. CXTPFontDC autoFont(&dc, GetFont(), GetXtremeColor(COLOR_GRAYTEXT));
  99. // show hint text
  100. CString  strText = GetHint();
  101. CRect rc;
  102. GetClientRect(&rc);
  103. dc.FillSolidRect(rc, GetXtremeColor(COLOR_WINDOW));
  104. CRect rcText;
  105. GetRect(&rcText);
  106. dc.DrawText(strText, rcText, DT_SINGLELINE | DT_VCENTER | DT_NOPREFIX | DT_EDITCONTROL);
  107. }
  108. else
  109. {
  110. Default();
  111. }
  112. }