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

对话框与窗口

开发平台:

Visual C++

  1. // MessageRecord.cpp: implementation of the CMessageRecord class.
  2. //
  3. // This file is a part of the XTREME TOOLKIT PRO 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 "CustomDrawReport.h"
  22. #include "MessageRecord.h"
  23. #ifdef _DEBUG
  24. #undef THIS_FILE
  25. static char THIS_FILE[]=__FILE__;
  26. #define new DEBUG_NEW
  27. #endif
  28. IMPLEMENT_SERIAL(CMessageRecord, CXTPReportRecord, VERSIONABLE_SCHEMA | _XTP_SCHEMA_CURRENT)
  29. IMPLEMENT_SERIAL(CMessageRecordItemCheckGroup, CXTPReportRecordItem, VERSIONABLE_SCHEMA | _XTP_SCHEMA_CURRENT)
  30. IMPLEMENT_SERIAL(CMessageRecordItemRadioGroup, CXTPReportRecordItem, VERSIONABLE_SCHEMA | _XTP_SCHEMA_CURRENT)
  31. //////////////////////////////////////////////////////////////////////////
  32. // CMessageRecordItemCheckGroup
  33. CMessageRecordItemCheckGroup::CMessageRecordItemCheckGroup()
  34. : m_unCheckboxes(0), m_ulValue(0)
  35. {
  36. }
  37. CMessageRecordItemCheckGroup::CMessageRecordItemCheckGroup(unsigned int unCheckboxes, ULONG ulValue)
  38. : m_unCheckboxes(unCheckboxes), m_ulValue(ulValue)
  39. {
  40. }
  41. int CMessageRecordItemCheckGroup::Compare(CXTPReportColumn* /*pColumn*/, CXTPReportRecordItem* pItem)
  42. {
  43. return int(m_ulValue) - int(((CMessageRecordItemCheckGroup*)pItem)->m_ulValue);
  44. }
  45. CString CMessageRecordItemCheckGroup::GetGroupCaption(CXTPReportColumn* /*pColumn*/)
  46. {
  47. CString strGroupCaption;
  48. strGroupCaption.Format(_T("%d"), m_ulValue);
  49. return strGroupCaption;
  50. }
  51. int CMessageRecordItemCheckGroup::CompareGroupCaption(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem)
  52. {
  53. return GetGroupCaption(pColumn).Compare(pItem->GetGroupCaption(pColumn));
  54. }
  55. void CMessageRecordItemCheckGroup::DoPropExchange(CXTPPropExchange* pPX)
  56. {
  57. CXTPReportRecordItem::DoPropExchange(pPX);
  58. PX_ULong(pPX, _T("Attr1"), m_ulValue);
  59. }
  60. //////////////////////////////////////////////////////////////////////////
  61. // CMessageRecordItemRadioGroup
  62. CMessageRecordItemRadioGroup::CMessageRecordItemRadioGroup()
  63. : m_unRadioButtons(0), m_ulValue(0)
  64. {
  65. }
  66. CMessageRecordItemRadioGroup::CMessageRecordItemRadioGroup(unsigned int unRadioButtons, ULONG ulValue)
  67. : m_unRadioButtons(unRadioButtons), m_ulValue(ulValue)
  68. {
  69. }
  70. int CMessageRecordItemRadioGroup::Compare(CXTPReportColumn* /*pColumn*/, CXTPReportRecordItem* pItem)
  71. {
  72. return int(m_ulValue) - int(((CMessageRecordItemRadioGroup*)pItem)->m_ulValue);
  73. }
  74. CString CMessageRecordItemRadioGroup::GetGroupCaption(CXTPReportColumn* /*pColumn*/)
  75. {
  76. CString strGroupCaption;
  77. strGroupCaption.Format(_T("%d"), m_ulValue);
  78. return strGroupCaption;
  79. }
  80. int CMessageRecordItemRadioGroup::CompareGroupCaption(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem)
  81. {
  82. return GetGroupCaption(pColumn).Compare(pItem->GetGroupCaption(pColumn));
  83. }
  84. void CMessageRecordItemRadioGroup::DoPropExchange(CXTPPropExchange* pPX)
  85. {
  86. CXTPReportRecordItem::DoPropExchange(pPX);
  87. PX_ULong(pPX, _T("Attr2"), m_ulValue);
  88. }
  89. //////////////////////////////////////////////////////////////////////
  90. // CMessageRecord class
  91. //////////////////////////////////////////////////////////////////////
  92. // Construction/Destruction
  93. //////////////////////////////////////////////////////////////////////
  94. CMessageRecord::CMessageRecord()
  95. {
  96. m_pItemAttr1 = NULL;
  97. m_pItemAttr2 = NULL;
  98. CreateItems();
  99. }
  100. CMessageRecord::CMessageRecord(CString strName, unsigned int unCheckboxes, unsigned int unCheckValue,
  101. unsigned int unRadioButtons, unsigned int unRadioValue,
  102. CString strProgressText, COLORREF clrProgress, int nProgressWidth, int nProgressLower, int nProgressUpper, int nProgressStep, int nProgressPos)
  103. {
  104. AddItem(new CXTPReportRecordItemText(strName));
  105. m_pItemAttr1 = (CMessageRecordItemCheckGroup*)AddItem(new CMessageRecordItemCheckGroup(unCheckboxes, unCheckValue));
  106. m_pItemAttr2 = (CMessageRecordItemRadioGroup*)AddItem(new CMessageRecordItemRadioGroup(unRadioButtons, unRadioValue));
  107. m_pItemAttr3 = (CXTPReportRecordItemProgress*)AddItem(new CXTPReportRecordItemProgress(strProgressText, clrProgress, nProgressWidth, nProgressLower, nProgressUpper, nProgressStep, nProgressPos));
  108. // SetPreviewItem(new CXTPReportRecordItemPreview(strPreview));
  109. }
  110. void CMessageRecord::CreateItems()
  111. {
  112. // Initialize record items with empty values
  113. // 0 
  114. AddItem(new CXTPReportRecordItemText(_T("")));
  115. // 1 ***
  116. m_pItemAttr1 = (CMessageRecordItemCheckGroup*)AddItem(new CMessageRecordItemCheckGroup(1, 0));
  117. // 2 ***
  118. m_pItemAttr2 = (CMessageRecordItemRadioGroup*)AddItem(new CMessageRecordItemRadioGroup(1, 0));
  119. // 3 ***
  120. m_pItemAttr3 = (CXTPReportRecordItemProgress*)AddItem(new CXTPReportRecordItemProgress(_T("Test string"), RGB(0, 0, 150), 15, 5, 105, 15, 25));
  121. SetPreviewItem(new CXTPReportRecordItemPreview(_T("")));
  122. }
  123. CMessageRecord::~CMessageRecord()
  124. {
  125. }
  126. void CMessageRecord::GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pItemMetrics)
  127. {
  128. CXTPReportRecord::GetItemMetrics(pDrawArgs, pItemMetrics);
  129. }
  130. void CMessageRecord::DoPropExchange(CXTPPropExchange* pPX)
  131. {
  132. CXTPReportRecord::DoPropExchange(pPX);
  133. if (pPX->IsLoading())
  134. {
  135. // 1 - m_pItemAttr1 = (CMessageRecordItemCheckGroup*)AddItem(new CMessageRecordItemCheckGroup(1, 0));
  136. ASSERT_KINDOF(CMessageRecordItemCheckGroup, GetItem(1));
  137. m_pItemAttr1 = DYNAMIC_DOWNCAST(CMessageRecordItemCheckGroup, GetItem(1));
  138. ASSERT(m_pItemAttr1);
  139. // 2 - m_pItemAttr2 = (CMessageRecordItemRadioGroup*)AddItem(new CMessageRecordItemRadioGroup(1, 0));
  140. ASSERT_KINDOF(CMessageRecordItemRadioGroup, GetItem(2));
  141. m_pItemAttr2 = DYNAMIC_DOWNCAST(CMessageRecordItemRadioGroup, GetItem(2));
  142. ASSERT(m_pItemAttr2);
  143. }
  144. }