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

对话框与窗口

开发平台:

Visual C++

  1. // XTSortClass.h interface for the CXTSortClass  class.
  2. //
  3. // This file is a part of the XTREME CONTROLS 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. //{{AFX_CODEJOCK_PRIVATE
  21. #if !defined(__XTSORTCLASS_H__)
  22. #define __XTSORTCLASS_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. // ----------------------------------------------------------------------
  28. // Summary:
  29. //     Enumeration used to determine sort type.
  30. // Remarks:
  31. //     XTSortType type defines the constants used by the CXTSortClass
  32. //     to determine for what type of sorting to perform.
  33. // See Also:
  34. //     CXTSortClass::Sort
  35. //
  36. // <KEYWORDS xtSortInt, xtSortString, xtSortDateTime, xtSortDecimal>
  37. // ----------------------------------------------------------------------
  38. enum XTSortType
  39. {
  40. xtSortInt = 1,  // Sort type integer.
  41. xtSortString,   // Sort type string.
  42. xtSortDateTime, // Sort type date / time.
  43. xtSortDecimal   // Sort type decimal.
  44. };
  45. //===========================================================================
  46. // Summary:
  47. //     CXTSortClass is a stand alone class. This class will sort a list control
  48. //     by a column of text, integer, float or date/time type. It could be
  49. //     easily extended for other data types. To use this class, instantiate
  50. //     a CXTSortClass object, passing in a pointer to the list control as
  51. //     the first argument and the column index as the second argument.
  52. //
  53. // Example:
  54. //     The following example demonstrates how to use CXTSortClass.
  55. // <code>
  56. // CXTSortClass sortClass(pListCtrl, 0);
  57. // </code>
  58. //
  59. //     Then call the sort method setting ascending as the first argument either
  60. //     TRUE or FALSE, and the type of sort to perform in the second argument.
  61. //
  62. //      The following example demonstrates how to use the sortClass.Sort member functin.
  63. // <code>
  64. // sortClass.Sort(TRUE, xtSortString);
  65. // </code>
  66. //===========================================================================
  67. class _XTP_EXT_CLASS CXTSortClass
  68. {
  69. private:
  70. struct SORT_ITEM;
  71. public:
  72. //-----------------------------------------------------------------------
  73. // Summary:
  74. //     Constructs a CXTSortClass object
  75. // Parameters:
  76. //     pListCtrl - Pointer to a CListCtrl object.
  77. //     nCol - Index of the column to be sorted.
  78. //-----------------------------------------------------------------------
  79. CXTSortClass(CListCtrl* pListCtrl, const int nCol);
  80. //-----------------------------------------------------------------------
  81. // Summary:
  82. //     Destroys a CXTSortClass object, handles cleanup and deallocation
  83. //-----------------------------------------------------------------------
  84. virtual ~CXTSortClass();
  85. public:
  86. //-----------------------------------------------------------------------
  87. // Summary:
  88. //     This member function is called to perform the actual sort procedure.
  89. // Parameters:
  90. //     bAsc  - true to sort ascending.
  91. //     eType - The type of sort to perform can be one of the values listed in the Remarks section.
  92. // Remarks:
  93. //     Sort type can be one of the following.<p/>
  94. //     * <b>xtSortInt</b> Sort type int.
  95. //     * <b>xtSortString</b> Sort type string.
  96. //     * <b>xtSortDateTime</b> Sort type date / time.
  97. //     * <b>xtSortDecimal</b> Sort type decimal.
  98. //-----------------------------------------------------------------------
  99. virtual void Sort(bool bAsc, XTSortType eType);
  100. protected:
  101. //-----------------------------------------------------------------------
  102. // Summary:
  103. //     This callback member function is called to compare two data items during
  104. //     sorting operations.
  105. // Parameters:
  106. //     lParam1    - Specify the item data for the two items being compared.
  107. //     lParam2    - Specify the item data for the two items being compared.
  108. //     lParamSort - Specifies the application defined value that is passed to the
  109. //     comparison function.
  110. // Returns:
  111. //     The comparison function must return a negative
  112. //     value if the first item should precede the second, a positive value
  113. //     if the first item should follow the second, or zero if the two items
  114. //     are equivalent.
  115. //-----------------------------------------------------------------------
  116. static int CALLBACK Compare(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
  117. //-----------------------------------------------------------------------
  118. // Summary:
  119. //     This member function is called by the sort class to remove non-numeric
  120. //     characters from the specified source string.
  121. // Parameters:
  122. //     csSource - String to remove non-numeric characters from.
  123. // Returns:
  124. //     The length of the specified string after non-numeric characters
  125. //     have been removed.
  126. //-----------------------------------------------------------------------
  127. static int AFX_CDECL RemoveNonNumeric(CString& csSource);
  128. CListCtrl* m_pListCtrl; // Pointer to the CListCtrl object to perform the sort on
  129. };
  130. #endif // #if !defined(__XTSORTCLASS_H__)