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

对话框与窗口

开发平台:

Visual C++

  1. // XTPReportGroupRow.cpp : implementation of the CXTPReportGroupRow 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/XTPDrawHelpers.h"
  23. #include "Common/XTPToolTipContext.h"
  24. #include "XTPReportControl.h"
  25. #include "XTPReportPaintManager.h"
  26. #include "XTPReportRecordItemText.h"
  27. #include "XTPReportInplaceControls.h"
  28. #include "XTPReportGroupRow.h"
  29. #ifdef _DEBUG
  30. #define new DEBUG_NEW
  31. #undef THIS_FILE
  32. static char THIS_FILE[] = __FILE__;
  33. #endif
  34. //////////////////////////////////////////////////////////////////////////
  35. // CXTPReportGroupItem
  36. CXTPReportGroupRow::CXTPReportGroupRow()
  37. {
  38. m_bExpanded = TRUE;
  39. }
  40. void CXTPReportGroupRow::SetCaption(LPCTSTR lpszCaption)
  41. {
  42. m_strGroupText = lpszCaption;
  43. }
  44. CString CXTPReportGroupRow::GetCaption()
  45. {
  46. return m_strGroupText;
  47. }
  48. void CXTPReportGroupRow::Draw(CDC* pDC, CRect rcRow, int nLeftOffset)
  49. {
  50. CXTPReportPaintManager* pPaintManager = m_pControl->GetPaintManager();
  51. pDC->SetBkMode(TRANSPARENT);
  52. m_rcRow = rcRow;
  53. if (GetControl()->m_nFreezeColumnsCount == 0)
  54. {
  55. m_rcRow.left -= nLeftOffset;
  56. m_rcRow.right -= nLeftOffset;
  57. }
  58. XTP_REPORTRECORDITEM_DRAWARGS drawArgs;
  59. drawArgs.pDC = pDC;
  60. drawArgs.nTextAlign = DT_LEFT;
  61. drawArgs.pControl = m_pControl;
  62. drawArgs.pRow = this;
  63. drawArgs.pColumn = NULL;
  64. drawArgs.pItem = NULL;
  65. drawArgs.rcItem = m_rcRow;
  66. XTP_REPORTRECORDITEM_METRICS* pDrawMetrics = new XTP_REPORTRECORDITEM_METRICS;
  67. pDrawMetrics->strText = GetCaption();
  68. pPaintManager->FillGroupRowMetrics(this, pDrawMetrics, pDC->IsPrinting());
  69. ASSERT(m_pControl);
  70. if (m_pControl)
  71. {
  72. m_pControl->GetItemMetrics(&drawArgs, pDrawMetrics);
  73. }
  74. pPaintManager->DrawGroupRow(pDC, this, m_rcRow, pDrawMetrics);
  75. pDrawMetrics->InternalRelease();
  76. }
  77. void CXTPReportGroupRow::OnClick(CPoint ptClicked)
  78. {
  79. // expand/collapse on single click at the collapse bitmap
  80. if (m_rcCollapse.PtInRect(ptClicked))
  81. {
  82. SetExpanded(!IsExpanded());
  83. }
  84. }
  85. void CXTPReportGroupRow::OnDblClick(CPoint ptClicked)
  86. {
  87. // do not expand if double clicked on the collapse bitmap
  88. if (!m_rcCollapse.PtInRect(ptClicked))
  89. {
  90. // otherwise expand on double click
  91. SetExpanded(!IsExpanded());
  92. }
  93. // process parent
  94. CXTPReportRow::OnDblClick(ptClicked);
  95. }
  96. INT_PTR CXTPReportGroupRow::OnToolHitTest(CPoint /*point*/, TOOLINFO* pTI)
  97. {
  98. INT_PTR nHit = (INT_PTR)this;
  99. CString strTip = GetTooltip();
  100. if (strTip.IsEmpty())
  101. return -1;
  102. CXTPToolTipContext::FillInToolInfo(pTI, m_pControl->m_hWnd, m_rcRow,
  103. nHit, strTip);
  104. return nHit;
  105. }