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

对话框与窗口

开发平台:

Visual C++

  1. // XTPPropertyGridInplaceButton.h interface for the CXTPPropertyGridInplaceButton class.
  2. //
  3. // This file is a part of the XTREME PROPERTYGRID 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(__XTPPROPERTYGRIDINPLACEBUTTON_H__)
  22. #define __XTPPROPERTYGRIDINPLACEBUTTON_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. // class forwards
  28. class CXTPPropertyGridView;
  29. class CXTPPropertyGridItem;
  30. class CXTPImageManagerIcon;
  31. const UINT XTP_ID_PROPERTYGRID_EXPANDBUTTON = 100; //<ALIAS CXTPPropertyGridInplaceButton::CXTPPropertyGridInplaceButton@UINT>
  32. const UINT XTP_ID_PROPERTYGRID_COMBOBUTTON = 101; //<ALIAS CXTPPropertyGridInplaceButton::CXTPPropertyGridInplaceButton@UINT>
  33. //===========================================================================
  34. // Summary:
  35. //     CXTPPropertyGridInplaceButton is a CCmdTarget derived class.
  36. //     It represents inplace button in Property Grid control.
  37. //===========================================================================
  38. class _XTP_EXT_CLASS CXTPPropertyGridInplaceButton : public CXTPCmdTarget
  39. {
  40. public:
  41. //-----------------------------------------------------------------------
  42. // Summary:
  43. //     Constructs a CXTPPropertyGridInplaceButton object
  44. // Parameters:
  45. //     nID - Identifier of button
  46. //-----------------------------------------------------------------------
  47. CXTPPropertyGridInplaceButton(UINT nID);
  48. //-----------------------------------------------------------------------
  49. // Summary:
  50. //     Destroys a CXTPPropertyGridInplaceButton object, handles cleanup
  51. //     and deallocation.
  52. //-----------------------------------------------------------------------
  53. virtual ~CXTPPropertyGridInplaceButton();
  54. //-----------------------------------------------------------------------
  55. // Summary:
  56. //     Retrieves width of the button
  57. // See Also: SetWidth
  58. //-----------------------------------------------------------------------
  59. int GetWidth();
  60. //-----------------------------------------------------------------------
  61. // Summary:
  62. //     Call this method to set width of the button
  63. // Parameters:
  64. //     nWidth - New width to be set
  65. // See Also: GetWidth
  66. //-----------------------------------------------------------------------
  67. void SetWidth(int nWidth);
  68. //-----------------------------------------------------------------------
  69. // Summary:
  70. //     Retrieves caption of the button
  71. // See Also: SetCaption
  72. //-----------------------------------------------------------------------
  73. CString GetCaption() const;
  74. //-----------------------------------------------------------------------
  75. // Summary:
  76. //     Call this method to set caption text of the button
  77. // Parameters:
  78. //     lpszCaption - New caption to be set
  79. // See Also: GetCaption
  80. //-----------------------------------------------------------------------
  81. void SetCaption(LPCTSTR lpszCaption);
  82. //-----------------------------------------------------------------------
  83. // Summary:
  84. //     Retrieves image index of the button.
  85. // See Also: SetIconIndex
  86. //-----------------------------------------------------------------------
  87. int GetIconIndex() const;
  88. //-----------------------------------------------------------------------
  89. // Summary:
  90. //     Associates ToolTip text with the item.
  91. // Parameters:
  92. //     lpstrTooltip - The ToolTip text to display when the mouse cursor is over the item.
  93. //-----------------------------------------------------------------------
  94. void SetTooltip(LPCTSTR lpstrTooltip);
  95. //-----------------------------------------------------------------------
  96. // Summary:
  97. //     Call this member to retrieve the item's tooltip
  98. // Returns:
  99. //     The ToolTip text for the item.
  100. //-----------------------------------------------------------------------
  101. CString GetTooltip() const;
  102. //-----------------------------------------------------------------------
  103. // Summary:
  104. //     Call this method to assign icon index for the button. Add icons first to
  105. //     Image manager of Property Grid
  106. // Parameters:
  107. //     nIconIndex - Image index to be set.
  108. // See Also: GetImage, GetIconIndex, CXTPPropertyGrid::GetImageManager
  109. //-----------------------------------------------------------------------
  110. void SetIconIndex(int nIconIndex);
  111. //-----------------------------------------------------------------------
  112. // Summary:
  113. //     Call this method to retrieve image assigned for the button
  114. // See Also: SetIconIndex, CXTPPropertyGrid::GetImageManager
  115. //-----------------------------------------------------------------------
  116. virtual CXTPImageManagerIcon* GetImage() const;
  117. //-----------------------------------------------------------------------
  118. // Summary:
  119. //     This member function retrieves the parent property grid item
  120. // Returns:
  121. //     A pointer to a CXTPPropertyGridItem object
  122. //-----------------------------------------------------------------------
  123. CXTPPropertyGridItem* GetItem() const;
  124. //-----------------------------------------------------------------------
  125. // Summary:
  126. //     Retrieves identifier of the button
  127. // Remarks:
  128. //     Default identifier for expand button is XTP_ID_PROPERTYGRID_EXPANDBUTTON;
  129. //     Default identifier for combo button is XTP_ID_PROPERTYGRID_COMBOBUTTON
  130. //-----------------------------------------------------------------------
  131. UINT GetID() const;
  132. //-----------------------------------------------------------------------
  133. // Summary:
  134. //     Retrieves bounding rectangle of the button.
  135. //-----------------------------------------------------------------------
  136. CRect GetRect() const;
  137. //-----------------------------------------------------------------------
  138. // Summary:
  139. //     Determines if button has focus
  140. //-----------------------------------------------------------------------
  141. BOOL IsFocused() const;
  142. //-----------------------------------------------------------------------
  143. // Summary:
  144. //     Determines if cursor under button
  145. //-----------------------------------------------------------------------
  146. BOOL IsHot()  const;
  147. //-----------------------------------------------------------------------
  148. // Summary:
  149. //     Determines if user push the button
  150. //-----------------------------------------------------------------------
  151. BOOL IsPressed() const;
  152. //-----------------------------------------------------------------------
  153. // Summary:
  154. //     Retrieves index of button in array of item's buttons
  155. //-----------------------------------------------------------------------
  156. int GetIndex() const;
  157. //-----------------------------------------------------------------------
  158. // Summary:
  159. //     This method is called to draw the button
  160. //     Override this method to draw custom button
  161. // Parameters:
  162. //     pDC - Pointer to valid device context
  163. //     rc  - Bounding rectangle of the button
  164. //-----------------------------------------------------------------------
  165. virtual void OnDraw(CDC* pDC, CRect rc);
  166. //-----------------------------------------------------------------------
  167. // Summary:
  168. //     This method is called when user press the button
  169. // Parameters:
  170. //     nFlags - Indicates whether various virtual keys are down
  171. //     point  - Specifies the x- and y-coordinate of the cursor
  172. //-----------------------------------------------------------------------
  173. virtual void OnLButtonDown(UINT nFlags, CPoint point);
  174. //-----------------------------------------------------------------------
  175. // Summary:
  176. //     This method is called when user press key while button has focus
  177. // Parameters:
  178. //     nChar - Specifies the virtual-key code of the given key.
  179. //-----------------------------------------------------------------------
  180. virtual void OnKeyDown(UINT nChar);
  181. //-----------------------------------------------------------------------
  182. // Summary:
  183. //     Retrieves parent grid object
  184. // Returns:
  185. //     Pointer to parent CXTPPropertyGridView object
  186. //-----------------------------------------------------------------------
  187. CXTPPropertyGridView* GetGrid() const;
  188. BOOL GetEnabled() const;
  189. void SetEnabled(BOOL bEnabled);
  190. protected:
  191. //{{AFX_CODEJOCK_PRIVATE
  192. BOOL  m_bPressed;    // TRUE if the button is pressed.
  193. int m_nIndex;
  194. CXTPPropertyGridView* m_pGrid;
  195. CXTPPropertyGridItem* m_pItem;
  196. UINT m_nID;
  197. CRect m_rcButton;
  198. int m_nWidth;
  199. CString m_strCaption;
  200. int m_nIconIndex;
  201. BOOL m_bEnabled;
  202. CString m_strTooltip;
  203. //}}AFX_CODEJOCK_PRIVATE
  204. protected:
  205. private:
  206. friend class CXTPPropertyGridItem;
  207. friend class CXTPPropertyGridItems;
  208. friend class CXTPPropertyGridInplaceButtons;
  209. };
  210. //===========================================================================
  211. // Summary:
  212. //     CXTPPropertyGridInplaceButtons is a CCmdTarget derived class.
  213. //     It represents collection of inplace buttons for specified grid item
  214. //===========================================================================
  215. class _XTP_EXT_CLASS CXTPPropertyGridInplaceButtons : public CXTPCmdTarget
  216. {
  217. public:
  218. //-----------------------------------------------------------------------
  219. // Summary:
  220. //     Constructs a CXTPPropertyGridInplaceButtons object
  221. // Parameters:
  222. //     pItem - Parent Item of buttons
  223. //-----------------------------------------------------------------------
  224. CXTPPropertyGridInplaceButtons(CXTPPropertyGridItem* pItem);
  225. //-----------------------------------------------------------------------
  226. // Summary:
  227. //     Destroys a CXTPPropertyGridInplaceButtons object, handles cleanup
  228. //     and deallocation.
  229. //-----------------------------------------------------------------------
  230. ~CXTPPropertyGridInplaceButtons();
  231. public:
  232. //-----------------------------------------------------------------------
  233. // Summary:
  234. //     Call this method to add standard combo button
  235. //-----------------------------------------------------------------------
  236. void AddComboButton();
  237. //-----------------------------------------------------------------------
  238. // Summary:
  239. //     Call this method to add standard expand button
  240. //-----------------------------------------------------------------------
  241. void AddExpandButton();
  242. //-----------------------------------------------------------------------
  243. // Summary:
  244. //     Call this method to add custom button.
  245. // Parameters:
  246. //     pButton - Pointer to button to add
  247. // Example:
  248. //     <code>pItem->GetInplaceButtons()->AddButton(new CXTPPropertyGridInplaceButton(1));</code>
  249. //-----------------------------------------------------------------------
  250. CXTPPropertyGridInplaceButton* AddButton(CXTPPropertyGridInplaceButton* pButton);
  251. public:
  252. //-----------------------------------------------------------------------
  253. // Summary:
  254. //     Retrieves count of buttons in collection
  255. //-----------------------------------------------------------------------
  256. int GetCount() const;
  257. //-----------------------------------------------------------------------
  258. // Summary:
  259. //     Retrieves button by its index
  260. // Parameters:
  261. //     nIndex - Index to retrieve button
  262. //-----------------------------------------------------------------------
  263. CXTPPropertyGridInplaceButton* GetAt(int nIndex) const;
  264. //-----------------------------------------------------------------------
  265. // Summary:
  266. //     Call this method to remove all buttons
  267. //-----------------------------------------------------------------------
  268. void RemoveAll();
  269. //-----------------------------------------------------------------------
  270. // Summary:
  271. //     Call this method to remove specified button
  272. // Parameters:
  273. //     pButton - Button to remove
  274. //-----------------------------------------------------------------------
  275. void Remove(CXTPPropertyGridInplaceButton* pButton);
  276. //-----------------------------------------------------------------------
  277. // Summary:
  278. //     Call this method to remove button by its identifier
  279. // Parameters:
  280. //     nID - identifier of the button to remove
  281. //-----------------------------------------------------------------------
  282. void Remove(UINT nID);
  283. void RemoveAt(long nIndex);
  284. //-----------------------------------------------------------------------
  285. // Summary:
  286. //     Determines which button, if any, is at a specified position.
  287. // Parameters:
  288. //     point - Point to test.
  289. // Returns:
  290. //     The button at the specified position, if any,
  291. //     or NULL otherwise.
  292. //-----------------------------------------------------------------------
  293. CXTPPropertyGridInplaceButton* HitTest(CPoint point) const;
  294. //-----------------------------------------------------------------------
  295. // Summary:
  296. //     Finds button by its identifier
  297. // Parameters:
  298. //     nID - Identifier to find
  299. // Returns:
  300. //     The button with specified identifier, if any,
  301. //     or NULL otherwise.
  302. //-----------------------------------------------------------------------
  303. CXTPPropertyGridInplaceButton* Find(UINT nID) const;
  304. private:
  305. void UpdateIndexes();
  306. private:
  307. CArray<CXTPPropertyGridInplaceButton*, CXTPPropertyGridInplaceButton*> m_arrButtons;
  308. CXTPPropertyGridItem* m_pItem;
  309. };
  310. AFX_INLINE CXTPPropertyGridItem* CXTPPropertyGridInplaceButton::GetItem() const {
  311. return m_pItem;
  312. }
  313. AFX_INLINE UINT CXTPPropertyGridInplaceButton::GetID() const {
  314. return m_nID;
  315. }
  316. AFX_INLINE CRect CXTPPropertyGridInplaceButton::GetRect() const {
  317. return m_rcButton;
  318. }
  319. AFX_INLINE CString CXTPPropertyGridInplaceButton::GetCaption() const {
  320. return m_strCaption;
  321. }
  322. AFX_INLINE int CXTPPropertyGridInplaceButton::GetIconIndex() const {
  323. return m_nIconIndex;
  324. }
  325. AFX_INLINE void CXTPPropertyGridInplaceButton::SetIconIndex(int nIconIndex) {
  326. m_nIconIndex = nIconIndex;
  327. }
  328. AFX_INLINE CXTPPropertyGridView* CXTPPropertyGridInplaceButton::GetGrid() const {
  329. return m_pGrid;
  330. }
  331. AFX_INLINE void CXTPPropertyGridInplaceButton::SetTooltip(LPCTSTR lpstrTooltip) {
  332. m_strTooltip = lpstrTooltip;
  333. }
  334. AFX_INLINE CString CXTPPropertyGridInplaceButton::GetTooltip() const {
  335. return m_strTooltip;
  336. }
  337. AFX_INLINE int CXTPPropertyGridInplaceButtons::GetCount() const {
  338. return (int)m_arrButtons.GetSize();
  339. }
  340. AFX_INLINE CXTPPropertyGridInplaceButton* CXTPPropertyGridInplaceButtons::GetAt(int nIndex) const {
  341. return nIndex >= 0 && nIndex < GetCount() ? m_arrButtons.GetAt(nIndex) : NULL;
  342. }
  343. #endif //#if !defined(__XTPPROPERTYGRIDINPLACEBUTTON_H__)