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

对话框与窗口

开发平台:

Visual C++

  1. // MessageRecord.h: interface for 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. #if !defined(AFX_MESSAGERECORD_H__86DCA43B_6A9C_40CD_B814_A625E68850CA__INCLUDED_)
  21. #define AFX_MESSAGERECORD_H__86DCA43B_6A9C_40CD_B814_A625E68850CA__INCLUDED_
  22. #if _MSC_VER > 1000
  23. #pragma once
  24. #endif // _MSC_VER > 1000
  25. #include "XTPReportRecordItemProgress.h"
  26. //////////////////////////////////////////////////////////////////////////
  27. // Customized record item, used for displaying group of checkboxes.
  28. class CMessageRecordItemCheckGroup : public CXTPReportRecordItem
  29. {
  30. DECLARE_SERIAL(CMessageRecordItemCheckGroup)
  31. public:
  32. // Default constructor.
  33. CMessageRecordItemCheckGroup();
  34. // Constructs record item with the initial value.
  35. CMessageRecordItemCheckGroup(unsigned int unCheckboxes, ULONG ulValue = 0);
  36. // Provides custom group captions depending on the item value.
  37. virtual CString GetGroupCaption(CXTPReportColumn* pColumn);
  38. // Provides custom group values comparison based on item value, 
  39. // instead of based on captions.
  40. virtual int CompareGroupCaption(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  41. // Provides custom records comparison by this item based on item value, 
  42. // instead of based on captions.
  43. int Compare(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  44. // Gets radio buttons number.
  45. unsigned int GetControlsNumber()
  46. {
  47. return m_unCheckboxes;
  48. }
  49. // Sets new radio buttons number.
  50. void SetControlsNumber(unsigned int unCheckboxes)
  51. {
  52. m_unCheckboxes = unCheckboxes;
  53. }
  54. // Gets item value.
  55. ULONG GetValue()
  56. {
  57. return m_ulValue;
  58. }
  59. // Sets new item value.
  60. void SetValue(ULONG ulValue)
  61. {
  62. m_ulValue = ulValue;
  63. }
  64. // Sets a bit by the specified bit number.
  65. void SetBit(unsigned int unBitNumber)
  66. {
  67. m_ulValue |= (1 << unBitNumber);
  68. }
  69. // Clears a bit by the specified bit number.
  70. void ClearBit(unsigned int unBitNumber)
  71. {
  72. m_ulValue &= ~(1 << unBitNumber);
  73. }
  74. // Toggles a bit by the specified bit number.
  75. void ToggleBit(unsigned int unBitNumber)
  76. {
  77. if(m_ulValue & (1 << unBitNumber))
  78. m_ulValue &= ~(1 << unBitNumber);
  79. else
  80. m_ulValue |= (1 << unBitNumber);
  81. }
  82. virtual void DoPropExchange(CXTPPropExchange* pPX);
  83. protected:
  84. unsigned int m_unCheckboxes; // number of checkboxes
  85. ULONG m_ulValue; // checkboxes value
  86. };
  87. //////////////////////////////////////////////////////////////////////////
  88. // Customized record item, used for displaying group of radio buttons.
  89. class CMessageRecordItemRadioGroup : public CXTPReportRecordItem
  90. {
  91. DECLARE_SERIAL(CMessageRecordItemRadioGroup)
  92. public:
  93. // Default constructor.
  94. CMessageRecordItemRadioGroup();
  95. // Constructs record item with the initial value.
  96. CMessageRecordItemRadioGroup(unsigned int unRadioButtons, ULONG ulValue = 0);
  97. // Provides custom group captions depending on the item value.
  98. virtual CString GetGroupCaption(CXTPReportColumn* pColumn);
  99. // Provides custom group values comparison based on item value, 
  100. // instead of based on captions.
  101. virtual int CompareGroupCaption(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  102. // Provides custom records comparison by this item based on item value, 
  103. // instead of based on captions.
  104. int Compare(CXTPReportColumn* pColumn, CXTPReportRecordItem* pItem);
  105. // Gets radio buttons number.
  106. unsigned int GetControlsNumber()
  107. {
  108. return m_unRadioButtons;
  109. }
  110. // Sets new radio buttons number.
  111. void SetControlsNumber(unsigned int unRadioButtons)
  112. {
  113. m_unRadioButtons = unRadioButtons;
  114. }
  115. // Gets item value.
  116. ULONG GetValue()
  117. {
  118. return m_ulValue;
  119. }
  120. // Sets new item value.
  121. void SetValue(ULONG ulValue)
  122. {
  123. m_ulValue = ulValue;
  124. }
  125. virtual void DoPropExchange(CXTPPropExchange* pPX);
  126. protected:
  127. unsigned int m_unRadioButtons; // number of radio buttons
  128. ULONG m_ulValue; // radio buttons selection value
  129. };
  130. //////////////////////////////////////////////////////////////////////////
  131. // This class is your main custom Record class which you'll manipulate with.
  132. // It contains any kind of specific methods like different types of constructors,
  133. // any additional custom data as class members, any data manipulation methods.
  134. class CMessageRecord : public CXTPReportRecord
  135. {
  136. DECLARE_SERIAL(CMessageRecord)
  137. public:
  138. // Construct record object using empty values on each field
  139. CMessageRecord();
  140. // Construct record object from detailed values on each field
  141. CMessageRecord(CString strName, unsigned int unCheckboxes, unsigned int unCheckValue,
  142. unsigned int unRadioButtons, unsigned int unRadioValue,
  143. CString strProgressText, COLORREF clrProgress, int nProgressWidth, int nProgressLower, int nProgressUpper, int nProgressStep, int nProgressPos);
  144. // Clean up internal objects
  145. virtual ~CMessageRecord();
  146. // Create record fields using empty values
  147. virtual void CreateItems();
  148. // Overridden callback method, where we can customize any drawing item metrics.
  149. virtual void GetItemMetrics(XTP_REPORTRECORDITEM_DRAWARGS* pDrawArgs, XTP_REPORTRECORDITEM_METRICS* pItemMetrics);
  150. virtual void DoPropExchange(CXTPPropExchange* pPX);
  151. CMessageRecordItemCheckGroup* m_pItemAttr1; // Contains message attribute 1.
  152. CMessageRecordItemRadioGroup* m_pItemAttr2; // Contains message attribute 2.
  153. CXTPReportRecordItemProgress* m_pItemAttr3; // Contains message attribute 3.
  154. };
  155. #endif // !defined(AFX_MESSAGERECORD_H__86DCA43B_6A9C_40CD_B814_A625E68850CA__INCLUDED_)