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

对话框与窗口

开发平台:

Visual C++

  1. // XTPPropertyGridItem.h interface for the CXTPPropertyGridItem 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(__XTPPROPERTYGRIDITEM_H__)
  22. #define __XTPPROPERTYGRIDITEM_H__
  23. //}}AFX_CODEJOCK_PRIVATE
  24. #if _MSC_VER > 1000
  25. #pragma once
  26. #endif // _MSC_VER > 1000
  27. #include "Common/XTPSystemHelpers.h"
  28. // class forwards.
  29. class CXTPPropertyGridView;
  30. class CXTPPropertyGridItem;
  31. class CXTPPropertyGridItemMetrics;
  32. class CXTPImageManagerIcon;
  33. class CXTPPropertyGridInplaceButtons;
  34. class CXTPPropertyGridInplaceSlider;
  35. class CXTPPropertyGridInplaceSpinButton;
  36. class CXTPPropertyGridInplaceControls;
  37. class CXTPMarkupUIElement;
  38. //-----------------------------------------------------------------------
  39. // Summary:
  40. //     This constant is used to determine the "gutter" width of the property
  41. //     grid.  This is the area on the left of the grid that the
  42. //     expand buttons are drawn in.
  43. // Remarks:
  44. //     This is useful when drawing owner drawn controls such as buttons
  45. //     and drop-down menus.
  46. // Example:
  47. //     The following example illustrates using XTP_PGI_EXPAND_BORDER:
  48. // <code>
  49. // void CDelphiGridPage::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
  50. // {
  51. //     // code snip ...
  52. //
  53. //     CRect rcText(rc);
  54. //     rcText.left = max(1, pItem->GetIndent()) * XTP_PGI_EXPAND_BORDER + 3;
  55. //     rcText.right = rcCaption.right - 1;
  56. //     rcText.bottom -= 1;
  57. //     dc.DrawText(pItem->GetCaption(), rcText, DT_SINGLELINE | DT_VCENTER);
  58. // }
  59. // </code>
  60. //-----------------------------------------------------------------------
  61. const int XTP_PGI_EXPAND_BORDER = 14;
  62. //-----------------------------------------------------------------------
  63. // Summary:
  64. //     Flags that indicate what styles to set for the grid item.
  65. // Example:
  66. //     <code>pItem->SetFlags(xtpGridItemHasEdit | xtpGridItemHasComboButton);</code>
  67. // See Also: CXTPPropertyGridItem::SetFlags, OnInplaceButtonDown
  68. //
  69. // <KEYWORDS xtpGridItemHasEdit, xtpGridItemHasExpandButton, xtpGridItemHasComboButton>
  70. //-----------------------------------------------------------------------
  71. enum XTPPropertyGridItemFlags
  72. {
  73. xtpGridItemHasEdit         = 1, // Item has an edit control.
  74. xtpGridItemHasExpandButton = 2, // Item has an expand button.
  75. xtpGridItemHasComboButton  = 4  // Item has a combo button.
  76. };
  77. //===========================================================================
  78. // Summary:
  79. //     CXTPPropertyGridItems is a CList derived class. It represents the items
  80. //     collection with some internal functionality.
  81. //===========================================================================
  82. class _XTP_EXT_CLASS CXTPPropertyGridItems : public CXTPCmdTarget
  83. {
  84. public:
  85. //-----------------------------------------------------------------------
  86. // Summary:
  87. //     Call this member function to find an item.
  88. // Parameters:
  89. //     strCaption - Caption for the item to find.
  90. //     nID - Identifier for the item to find.
  91. // Returns:
  92. //     A pointer to a CXTPPropertyGridItem object or NULL if item was not found.
  93. //-----------------------------------------------------------------------
  94. CXTPPropertyGridItem* FindItem(UINT nID) const;
  95. CXTPPropertyGridItem* FindItem(LPCTSTR strCaption) const; // <COMBINE CXTPPropertyGridItems::FindItem@UINT@const>
  96. //-----------------------------------------------------------------------
  97. // Summary:
  98. //     Call this member to determine the index of a CXTPPropertyGridItem.
  99. // Parameters:
  100. //     pItem - Pointer to the CXTPPropertyGridItem you want to know
  101. //             the index of.
  102. // Returns:
  103. //     The index of the item within the collection of items, -1 if
  104. //     the item is not found.
  105. //-----------------------------------------------------------------------
  106. int Find(CXTPPropertyGridItem* pItem) const;
  107. //-----------------------------------------------------------------------
  108. // Summary:
  109. //     Call this member to clear all the items in a list.
  110. //-----------------------------------------------------------------------
  111. void Clear();
  112. //-----------------------------------------------------------------------
  113. // Summary:
  114. //     Call this member to get count of the items in a list.
  115. // Returns:
  116. //     Count of the items in a list.
  117. //-----------------------------------------------------------------------
  118. long GetCount() const;
  119. //-----------------------------------------------------------------------
  120. // Summary:
  121. //     Call this member to determine if any items have been added
  122. //     to the property grid.
  123. // Returns:
  124. //     TRUE if there are no items in the grid, FALSE if at least
  125. //     one item has been added to the grid.
  126. //-----------------------------------------------------------------------
  127. BOOL IsEmpty() const;
  128. //-----------------------------------------------------------------------
  129. // Summary:
  130. //     Call this member to get an item by its index.
  131. // Parameters:
  132. //     nIndex - Item's index.
  133. // Returns:
  134. //     A pointer to a CXTPPropertyGridItem object.
  135. //-----------------------------------------------------------------------
  136. CXTPPropertyGridItem* GetAt(int nIndex) const;
  137. //-----------------------------------------------------------------------
  138. // Summary:
  139. //     Call this member to remove an item by its index.
  140. // Parameters:
  141. //     nIndex - Item's index.
  142. //-----------------------------------------------------------------------
  143. void RemoveAt (int nIndex);
  144. //-------------------------------------------------------------------------
  145. // Summary:
  146. //     This member sorts the collection of items in alphabetical order.
  147. // Remarks:
  148. //     This method uses Visual C++ run-time library (MSVCRT)
  149. //     implementation of the quick-sort function, qsort, for sorting
  150. //     stored CXTPPropertyGridItem objects.
  151. //-------------------------------------------------------------------------
  152. void Sort();
  153. protected:
  154. //-------------------------------------------------------------------------
  155. // Summary:
  156. //     Constructs a CXTPPropertyGridItems object.
  157. //-------------------------------------------------------------------------
  158. CXTPPropertyGridItems();
  159. //-----------------------------------------------------------------------
  160. // Summary:
  161. //     This member adds a new item to the end (tail) of the
  162. //     Property Grid's collection of items. The collection can be empty
  163. //     before the operation.
  164. // Parameters:
  165. //     pItem - Pointer to the CXTPPropertyGridItem to add to the collection.
  166. //     pItems - Pointer to the collection of CXTPPropertyGridItems to
  167. //              add to the collection.
  168. // Remarks:
  169. //     The pItems version adds a collection of items to the end (tail) of the
  170. //     Property Grid's collection of items. The collection can be empty
  171. //     before the operation.
  172. //-----------------------------------------------------------------------
  173. void AddTail(CXTPPropertyGridItem* pItem);
  174. void AddTail(CXTPPropertyGridItems* pItems); //<combine CXTPPropertyGridItems::AddTail@CXTPPropertyGridItem*>
  175. //-----------------------------------------------------------------------
  176. // Summary:
  177. //     This member is called to insert a CXTPPropertyGridItem object
  178. //     into the collections of items at a specific location specified
  179. //     by nIndex.
  180. // Parameters:
  181. //     nIndex - Position in the collection of items to insert pItem.
  182. //     pItem  - Pointer to the CXTPPropertyGridItem to add to the collection.
  183. //-----------------------------------------------------------------------
  184. void InsertAt(int nIndex, CXTPPropertyGridItem* pItem);
  185. private:
  186. static int _cdecl CompareFunc(const CXTPPropertyGridItem** ppItem1, const CXTPPropertyGridItem** ppItem2);
  187. private:
  188. CArray<CXTPPropertyGridItem*, CXTPPropertyGridItem*> m_arrItems;
  189. //CXTPPropertyGridView* m_pGrid;
  190. friend class CXTPPropertyGridItem;
  191. friend class CXTPPropertyGridView;
  192. friend class CXTPPropertyGrid;
  193. };
  194. //===========================================================================
  195. // Summary:
  196. //     CXTPPropertyGridItemConstraint is a CCmdTarget derived class. It
  197. //     represents a single item constraints.
  198. //===========================================================================
  199. class _XTP_EXT_CLASS CXTPPropertyGridItemConstraint : public CXTPCmdTarget
  200. {
  201. public:
  202. //-------------------------------------------------------------------------
  203. // Summary:
  204. //     Constructs a CXTPPropertyGridItemConstraint object.
  205. //-------------------------------------------------------------------------
  206. CXTPPropertyGridItemConstraint();
  207. //-----------------------------------------------------------------------
  208. // Summary:
  209. //     Call this member to retrieve the index of this constraint
  210. //     within the collection of constraints.
  211. // Returns:
  212. //     Index of this constraint.
  213. //-----------------------------------------------------------------------
  214. virtual int GetIndex() const;
  215. //-----------------------------------------------------------------------
  216. // Summary: Retrieves the image of the constraint so it can be used outside of Codejock components.
  217. // Returns: CXTPImageManagerIcon object containing the image of the constraint.
  218. //-----------------------------------------------------------------------
  219. virtual CXTPImageManagerIcon* GetImage() const;
  220. public:
  221. CString m_strConstraint;    // Caption text of constraint.  This is the
  222.                             // text displayed for this constraint.
  223. DWORD_PTR   m_dwData;       // The 32-bit value associated with the item.
  224. int     m_nImage;           // Image index
  225. protected:
  226. int m_nIndex;               // Index of constraint.
  227. CXTPPropertyGridItem*  m_pItem; // Parent item
  228. friend class CXTPPropertyGridItemConstraints;
  229. };
  230. //===========================================================================
  231. // Summary:
  232. //     CXTPPropertyGridItemConstraints is a CCmdTarget derived class. It represents the item
  233. //     constraints collection.
  234. // Remarks:
  235. //     Each PropertyGridItem has it's own collection of constraints.
  236. //     CXTPPropertyGridItem::GetConstraints allows to access the constraints
  237. //     of a given item.
  238. //     If a combo button is added to the property grid item, all
  239. //     the constraints in the item's constraint collection will be displayed
  240. //     in the drop-down list.  The AddConstraint method is used to add
  241. //     constraints to the collection.
  242. // See Also: CXTPPropertyGridItem::GetConstraints, CXTPPropertyGridItem::SetConstraintEdit, AddConstraint
  243. //===========================================================================
  244. class _XTP_EXT_CLASS CXTPPropertyGridItemConstraints : public CXTPCmdTarget
  245. {
  246. protected:
  247. //-------------------------------------------------------------------------
  248. // Summary:
  249. //     Constructs a CXTPPropertyGridItemConstraints object.
  250. // Parameters:
  251. //     pItem - Pointer to the CXTPPropertyGridItem that the constraints are
  252. //             added to.
  253. //-------------------------------------------------------------------------
  254. CXTPPropertyGridItemConstraints(CXTPPropertyGridItem* pItem);
  255. //-------------------------------------------------------------------------
  256. // Summary:
  257. //     Destroys a CXTPPropertyGridItemConstraints object, handles
  258. //     cleanup and deallocation
  259. //-------------------------------------------------------------------------
  260. ~CXTPPropertyGridItemConstraints();
  261. public:
  262. //-----------------------------------------------------------------------
  263. // Summary:
  264. //     Call this member function to add a new item constraint.
  265. // Parameters:
  266. //     str    - New constraint.
  267. //     dwData - Data associated with the constraint.
  268. //     nImage - Image of constraint
  269. // Returns:
  270. //     A pointer to the newly added constraint.
  271. // See Also: CXTPPropertyGridItem::OnConstraintsChanged
  272. //-----------------------------------------------------------------------
  273. virtual CXTPPropertyGridItemConstraint* AddConstraint(LPCTSTR str, DWORD_PTR dwData = 0, int nImage = -1);
  274. //-------------------------------------------------------------------------
  275. // Summary:
  276. //     Call this member to retrieve the total number of constraints
  277. //     in the collection.
  278. //-------------------------------------------------------------------------
  279. int GetCount() const;
  280. //-----------------------------------------------------------------------
  281. // Summary:
  282. //     Call this member to determine if the list of constraints is empty.
  283. // Returns:
  284. //     TRUE if there are no constraints in the collection, FALSE is
  285. //     at least 1 constraint is in the collection.
  286. //-----------------------------------------------------------------------
  287. BOOL IsEmpty() const;
  288. //-------------------------------------------------------------------------
  289. // Summary:
  290. //     Removes all the constraints from the collection.
  291. // See Also: RemoveAt
  292. //-------------------------------------------------------------------------
  293. void RemoveAll();
  294. //-----------------------------------------------------------------------
  295. // Summary:
  296. //     Call this member to remove a constraint by its index.
  297. // Parameters:
  298. //     nIndex - Index of a constraint.
  299. // See Also: RemoveAll
  300. //-----------------------------------------------------------------------
  301. void RemoveAt (int nIndex);
  302. //-----------------------------------------------------------------------
  303. // Summary:
  304. //     This method sets the current constraint.
  305. // Parameters:
  306. //     nIndex - Index of the needed constraint.
  307. //-----------------------------------------------------------------------
  308. void SetCurrent(int nIndex);
  309. //-----------------------------------------------------------------------
  310. // Summary:
  311. //     Call this member function to get the current constraint.
  312. // Returns:
  313. //     The index of the current constraint.
  314. //-----------------------------------------------------------------------
  315. int GetCurrent() const;
  316. //-----------------------------------------------------------------------
  317. // Summary:
  318. //     Call this member function to find a constraint in the list.
  319. // Parameters:
  320. //     str   - A constraint to search for.
  321. //     dwData - A constraint to search for.
  322. // Returns:
  323. //     The zero-based index of the located constraint or -1 if the constraint
  324. //     is not found.
  325. //-----------------------------------------------------------------------
  326. int FindConstraint(LPCTSTR str) const;
  327. int FindConstraint(DWORD_PTR dwData) const; // <COMBINE CXTPPropertyGridItemConstraints::FindConstraint@LPCTSTR@const>
  328. //-----------------------------------------------------------------------
  329. // Summary:
  330. //     Call this member to get a constraint by its index.
  331. // Parameters:
  332. //     nIndex - Index of a constraint.
  333. // Returns:
  334. //     Caption of constraint if found, otherwise it will return "".
  335. // Remarks:
  336. //     This will only return the caption text of a constraint, to
  337. //     return the entire constraint, use GetConstraintAt.
  338. // See Also: GetConstraintAt
  339. //-----------------------------------------------------------------------
  340. CString GetAt(int nIndex) const;
  341. //-----------------------------------------------------------------------
  342. // Summary:
  343. //     Call this member to get a constraint by its index.
  344. // Parameters:
  345. //     nIndex - Index of a constraint.
  346. // Returns:
  347. //     Pointer to CXTPPropertyGridItemConstraint object.
  348. // Remarks:
  349. //     This will only the entire constraint object, to return only
  350. //     the caption text of a constraint, use GetAt.
  351. // See Also: GetAt
  352. //-----------------------------------------------------------------------
  353. CXTPPropertyGridItemConstraint* GetConstraintAt(int nIndex) const;
  354. //-----------------------------------------------------------------------
  355. // Summary:
  356. //     Call this member to sort constraints alphabetically.
  357. //-----------------------------------------------------------------------
  358. virtual void Sort();
  359. private:
  360. static int _cdecl CompareFunc(const CXTPPropertyGridItemConstraint** ppConstraint1, const CXTPPropertyGridItemConstraint** ppConstraint2);
  361. private:
  362. CArray<CXTPPropertyGridItemConstraint*, CXTPPropertyGridItemConstraint*>  m_arrConstraints;
  363. int m_nCurrent;
  364. CXTPPropertyGridItem* m_pItem;
  365. friend class CXTPPropertyGridItem;
  366. };
  367. //===========================================================================
  368. // Summary:
  369. //     CXTPPropertyGridItem is the base class representing an item of the
  370. //     Property Grid Control.
  371. //===========================================================================
  372. class _XTP_EXT_CLASS CXTPPropertyGridItem : public CXTPCmdTarget, public CXTPAccessible
  373. {
  374. public:
  375. //-----------------------------------------------------------------------
  376. // Summary:
  377. //     Constructs a CXTPPropertyGridItem object
  378. // Parameters:  lpszCaption   - Caption of the item.
  379. //              nID           - Identifier of the item.
  380. //              strValue      - Initial value.
  381. //              pBindString   - If not NULL, then the value of this item
  382. //                              is bound the value of this variable.
  383. // Remarks:
  384. //     Class CXTPPropertyGridItem has no default constructor.
  385. //
  386. //          When using the second constructor, the Identifier (nID) of the
  387. //          second constructor can be linked with a STRINGTABLE resource
  388. //           with the same id in such form "Caption\nDescription".
  389. //
  390. //          BINDING:
  391. //            Variables can be bound to an item in two ways, the first is
  392. //            to pass in a variable at the time of creation, the second allows
  393. //            variables to be bound to an item after creation with the
  394. //            BindToString member.
  395. //
  396. //            Bound variables store the values of the property grid items
  397. //            and can be accessed without using the property grid methods
  398. //            and properties.  Bound variables allow the property grid to
  399. //            store data in variables.  When the value of a PropertyGridItem
  400. //            is changed, the value of the bound variable will be changed to
  401. //            the PropertyGridItem value.  The advantage of binding is that
  402. //            the variable can be used and manipulated without using
  403. //            PropertyGridItem methods and properties.
  404. //
  405. //            NOTE:  If the value of the variable is changed without using
  406. //            the PropertyGrid, the PropertyGridItem value will not be
  407. //            updated until you call CXTPPropertyGrid::Refresh.
  408. // See Also: BindToString
  409. //-----------------------------------------------------------------------
  410. CXTPPropertyGridItem(LPCTSTR lpszCaption, LPCTSTR strValue = NULL, CString* pBindString = NULL);
  411. CXTPPropertyGridItem(UINT nID, LPCTSTR strValue = NULL, CString* pBindString = NULL);  // <COMBINE CXTPPropertyGridItem::CXTPPropertyGridItem@LPCTSTR@LPCTSTR@CString*>
  412. //-----------------------------------------------------------------------
  413. // Summary:
  414. //     Destroys a CXTPPropertyGridItem object, handles cleanup and
  415. //     deallocation
  416. //-----------------------------------------------------------------------
  417. virtual ~CXTPPropertyGridItem();
  418. public:
  419. //-----------------------------------------------------------------------
  420. // Summary:
  421. //     Call this method to set the caption of the item.
  422. // Parameters:
  423. //     lpszCaption - The new caption of the item.
  424. // See Also: SetPrompt
  425. //-----------------------------------------------------------------------
  426. void SetCaption(LPCTSTR lpszCaption);
  427. //-----------------------------------------------------------------------
  428. // Summary:
  429. //     Call this member to load a string from a STRINGTABLE resource
  430. //     to set the caption and description.
  431. // Parameters:
  432. //     lpszPrompt - String from resource file that contains the
  433. //                  caption and description of the item.  Caption
  434. //                  and description must be separated by "n" if both
  435. //                  are included.  You can omit the description and
  436. //                  only the caption will be set.
  437. // Remarks:
  438. //     Resource strings are in the format "Caption\nDescription".
  439. // See Also: SetCaption, SetDescription
  440. //-----------------------------------------------------------------------
  441. void SetPrompt(LPCTSTR lpszPrompt);
  442. //-----------------------------------------------------------------------
  443. // Summary:
  444. //     Call this method to set the description of the item.  This is
  445. //     the text displayed in the help panel.
  446. // Parameters:
  447. //     lpszDescription - The new description of the item.
  448. // See Also: SetPrompt
  449. //-----------------------------------------------------------------------
  450. void SetDescription(LPCTSTR lpszDescription);
  451. //-----------------------------------------------------------------------
  452. // Summary:
  453. //     Associates ToolTip text with the item.
  454. // Parameters:
  455. //     lpstrTooltip - The ToolTip text to display when the mouse cursor is over the item.
  456. //-----------------------------------------------------------------------
  457. void SetTooltip(LPCTSTR lpstrTooltip);
  458. //-----------------------------------------------------------------------
  459. // Summary:
  460. //     Call this member to retrieve the item's tooltip
  461. // Returns:
  462. //     The ToolTip text for the item.
  463. //-----------------------------------------------------------------------
  464. CString GetTooltip() const;
  465. //-----------------------------------------------------------------------
  466. // Summary:
  467. //     Call this method to set the read-only state of the item.
  468. // Parameters:
  469. //     bReadOnly - Specifies whether to set or remove the read-only state of the
  470. //     item. A value of TRUE sets the state to read-only. A value of FALSE sets
  471. //     the state to read/write.
  472. //-----------------------------------------------------------------------
  473. void SetReadOnly(BOOL bReadOnly = TRUE);
  474. //-----------------------------------------------------------------------
  475. // Summary:
  476. //     Call this method to set the identifier of the item.
  477. // Parameters:
  478. //     nID - The new identifier of the item.
  479. //-----------------------------------------------------------------------
  480. void SetID(UINT nID);
  481. //-----------------------------------------------------------------------
  482. // Summary:
  483. //     This member function is called to set a specific flag for the item.
  484. // Parameters:
  485. //     nFlags - Flag to set. Can be any of the values listed in the Remarks section.
  486. // Remarks:
  487. //     nFlags value can be one or more of the following:
  488. //      * <b>xtpGridItemHasEdit</b> Item has edit control.
  489. //      * <b>xtpGridItemHasExpandButton</b> Item has expand button.
  490. //      * <b>xtpGridItemHasComboButton</b> Item has combo button.
  491. // See Also: XTPPropertyGridItemFlags, OnInplaceButtonDown
  492. //-----------------------------------------------------------------------
  493. void SetFlags(UINT nFlags);
  494. //-----------------------------------------------------------------------
  495. // Summary:
  496. //     Call this method to get the caption of the item.
  497. // Returns:
  498. //     A CString object containing the caption of the item.
  499. //-----------------------------------------------------------------------
  500. CString GetCaption() const;
  501. //-----------------------------------------------------------------------
  502. // Summary:
  503. //     Call this method to get the description of the item.
  504. // Returns:
  505. //     A CString object containing the description of the item.
  506. //-----------------------------------------------------------------------
  507. CString GetDescription() const;
  508. //-----------------------------------------------------------------------
  509. // Summary:
  510. //     Call this method to get the read-only state of the item.
  511. // Returns:
  512. //     TRUE if the item is read only, otherwise returns FALSE.
  513. //-----------------------------------------------------------------------
  514. virtual BOOL GetReadOnly() const;
  515. //-----------------------------------------------------------------------
  516. // Summary:
  517. //     Call this method to get the identifier of the item.
  518. // Returns:
  519. //     An integer value that represents the identifier of the item.
  520. //-----------------------------------------------------------------------
  521. UINT GetID() const;
  522. //-----------------------------------------------------------------------
  523. // Summary:
  524. //     Call this method to get the index of the item in property grid list
  525. // Returns:
  526. //     An integer value that represents the index of the item.
  527. //-----------------------------------------------------------------------
  528. int GetIndex() const;
  529. //-----------------------------------------------------------------------
  530. // Summary:
  531. //     Call this method to get the current value of the item.
  532. // Returns:
  533. //     A CString object containing the value of the item.
  534. //-----------------------------------------------------------------------
  535. CString GetValue() const;
  536. //-----------------------------------------------------------------------
  537. // Summary:
  538. //     Call this method to get the XTPPropertyGridItemFlags of the item.
  539. // Returns:
  540. //     A integer value that represents item's flags.  Value will
  541. //     be a member of XTPPropertyGridItemFlags.
  542. // See Also: XTPPropertyGridItemFlags
  543. //-----------------------------------------------------------------------
  544. UINT GetFlags() const;
  545. //-----------------------------------------------------------------------
  546. // Summary:
  547. //     The IsCategory function determines whether or not the item is
  548. //     a category.
  549. // Returns:
  550. //     TRUE if the item is a category, otherwise returns FALSE.
  551. //-----------------------------------------------------------------------
  552. BOOL IsCategory() const;
  553. //-----------------------------------------------------------------------
  554. // Summary:
  555. //     Call this method to add a child item.
  556. // Parameters:
  557. //     pItem - The item to be added as a child.
  558. // Returns:
  559. //     A pointer to a CXTPPropertyGridItem object.
  560. //-----------------------------------------------------------------------
  561. CXTPPropertyGridItem* AddChildItem(CXTPPropertyGridItem* pItem);
  562. void Move(CXTPPropertyGridItem* pParent, int nIndex = -1);
  563. //-----------------------------------------------------------------------
  564. // Summary:
  565. //     Call this method to insert a child item.
  566. // Parameters:
  567. //     pItem - The item to be added as a child.
  568. //     nIndex - Index of item to be added as a child.
  569. // Returns:
  570. //     A pointer to a CXTPPropertyGridItem object.
  571. //-----------------------------------------------------------------------
  572. CXTPPropertyGridItem* InsertChildItem(int nIndex, CXTPPropertyGridItem* pItem);
  573. //-----------------------------------------------------------------------
  574. // Summary:
  575. //     The HasChilds function determines whether or not the item has children.
  576. // Returns:
  577. //     TRUE if the item has children, otherwise returns FALSE.
  578. //-----------------------------------------------------------------------
  579. BOOL HasChilds() const;
  580. //-----------------------------------------------------------------------
  581. // Summary:
  582. //     The HasChilds function determines whether or not the item has visible children.
  583. // Returns:
  584. //     TRUE if the item has visible children, otherwise returns FALSE.
  585. //-----------------------------------------------------------------------
  586. BOOL HasVisibleChilds() const;
  587. //-----------------------------------------------------------------------
  588. // Summary:
  589. //     Returns a list of the children
  590. // Returns:
  591. //     A pointer to a CXTPPropertyGridItems object.
  592. //-----------------------------------------------------------------------
  593. CXTPPropertyGridItems* GetChilds() const;
  594. //-----------------------------------------------------------------------
  595. // Summary:
  596. //     The HasParent function determines whether or not the item has a pParent item
  597. //     as a parent.
  598. // Parameters:
  599. //     pParent - Item to be tested.
  600. // Returns:
  601. //     TRUE if pParent is a parent of the item.
  602. //-----------------------------------------------------------------------
  603. BOOL HasParent(CXTPPropertyGridItem* pParent);
  604. //-----------------------------------------------------------------------
  605. // Summary:
  606. //     Call this method to get the constraints list.
  607. // Returns:
  608. //     A pointer to a CXTPPropertyGridItemConstraints object.
  609. // Example: <code> CXTPPropertyGridItemConstraints* pList = pItem->GetConstraints(); </code>
  610. // See Also: CXTPPropertyGridItemConstraints::AddConstraint, OnConstraintsChanged
  611. //-----------------------------------------------------------------------
  612. CXTPPropertyGridItemConstraints* GetConstraints() const;
  613. //-----------------------------------------------------------------------
  614. // Summary:
  615. //     Call this method to edit only values from constraint list.
  616. // Parameters:
  617. //     bConstraintEdit - TRUE to constraint edit.
  618. //-----------------------------------------------------------------------
  619. void SetConstraintEdit(BOOL bConstraintEdit = TRUE);
  620. //-----------------------------------------------------------------------
  621. // Summary:
  622. //     Call this method to use enable auto complete from constraint list.
  623. // Parameters:
  624. //     bAutoComplete - TRUE to enable auto complete.
  625. //-----------------------------------------------------------------------
  626. void SetAutoComplete(BOOL bAutoComplete = TRUE);
  627. //-----------------------------------------------------------------------
  628. // Summary:
  629. //     Retrieves constraint edit state.
  630. // Returns:
  631. //     TRUE if item is constraint edit.
  632. //-----------------------------------------------------------------------
  633. BOOL GetConstraintEdit() const;
  634. //-----------------------------------------------------------------------
  635. // Summary:
  636. //     Call this method to expand the item.
  637. //-----------------------------------------------------------------------
  638. void Expand();
  639. //-----------------------------------------------------------------------
  640. // Summary:
  641. //     Call this method to collapse the item.
  642. //-----------------------------------------------------------------------
  643. void Collapse();
  644. //-----------------------------------------------------------------------
  645. // Summary:
  646. //     Call this method to enable/disable expanding by users
  647. // Parameters:
  648. //     bExpandable - TRUE to allow expand.
  649. //-----------------------------------------------------------------------
  650. void SetExpandable(BOOL bExpandable);
  651. //-----------------------------------------------------------------------
  652. // Summary:
  653. //     Call this method to check if item can be expanded.
  654. //-----------------------------------------------------------------------
  655. BOOL IsExpandable() const;
  656. //-----------------------------------------------------------------------
  657. // Summary:
  658. //     Call this method to select the item.
  659. //-----------------------------------------------------------------------
  660. void Select();
  661. //-----------------------------------------------------------------------
  662. // Summary:
  663. //     Retrieves the bounding rectangle of the item
  664. // Returns:
  665. //     A CRect object that represents the bounding rectangle of the item.
  666. //-----------------------------------------------------------------------
  667. CRect GetItemRect() const;
  668. //-----------------------------------------------------------------------
  669. // Summary:
  670. //     Retrieves the bounding rectangle of the item value's text.
  671. //     Override this member function to change it.
  672. // Returns:
  673. //     A CRect object that represents the bounding rectangle of the
  674. //     item value's text.
  675. //-----------------------------------------------------------------------
  676. virtual CRect GetValueRect();
  677. //-----------------------------------------------------------------------
  678. // Summary:
  679. //     Call this method to change an item's value.
  680. //     Override this method to add new functionality.
  681. //     You should call the base class version of this function from your
  682. //     override.
  683. // Parameters:
  684. //     strValue - New value of the item.
  685. //-----------------------------------------------------------------------
  686. virtual void SetValue(CString strValue);
  687. //-----------------------------------------------------------------------
  688. // Summary:
  689. //     Call this method to hide/unhide item
  690. // Parameters:
  691. //     bHidden - TRUE to hide item
  692. //-----------------------------------------------------------------------
  693. void SetHidden(BOOL bHidden);
  694. //-----------------------------------------------------------------------
  695. // Summary:
  696. //     Call this member function to determine if the item is hidden.
  697. // Returns:
  698. //     TRUE if the item is hidden, otherwise returns FALSE.
  699. //-----------------------------------------------------------------------
  700. BOOL IsHidden() const;
  701. //-----------------------------------------------------------------------
  702. // Summary:
  703. //     This method is called when an item's value is changed. Override this
  704. //     function if needed.
  705. // Parameters:
  706. //     strValue - New value of the item.
  707. //-----------------------------------------------------------------------
  708. virtual void OnValueChanged(CString strValue);
  709. //-----------------------------------------------------------------------
  710. // Summary:
  711. //     Call this member to return the parent window
  712. // Returns:
  713. //     The parent window.
  714. //-----------------------------------------------------------------------
  715. CXTPPropertyGridView* GetGrid() const;
  716. //-----------------------------------------------------------------------
  717. // Summary:
  718. //     Call this member function to determine if the item is visible.
  719. // Returns:
  720. //     TRUE if the item is visible, otherwise returns FALSE.
  721. //-----------------------------------------------------------------------
  722. BOOL IsVisible() const;
  723. //-----------------------------------------------------------------------
  724. // Summary:
  725. //     Call this member function to determine if the item is expanded.
  726. // Returns:
  727. //     TRUE if the item is expanded, otherwise returns FALSE.
  728. //-----------------------------------------------------------------------
  729. BOOL IsExpanded() const;
  730. //-----------------------------------------------------------------------
  731. // Summary:
  732. //     Call this member function to retrieve the parent property grid item.
  733. // Returns:
  734. //     A CXTPPropertyGridItem pointer that represents the parent item, can be
  735. //     NULL.
  736. //-----------------------------------------------------------------------
  737. CXTPPropertyGridItem* GetParentItem() const;
  738. //-----------------------------------------------------------------------
  739. // Summary:
  740. //     Call this member function to retrieve the item's indent.
  741. // Returns:
  742. //     Item's indent.
  743. //-----------------------------------------------------------------------
  744. int GetIndent() const;
  745. //-----------------------------------------------------------------------
  746. // Summary:
  747. //     This method is called when an item is drawn. Override this function if
  748. //     needed.
  749. // Parameters:
  750. //     dc - Reference to the device context to be used for rendering an image
  751. //     of the item.
  752. //     rcValue - Bounding rectangle of the item.
  753. // Returns:
  754. //     TRUE if item is self-drawn.
  755. //-----------------------------------------------------------------------
  756. virtual BOOL OnDrawItemValue(CDC& dc, CRect rcValue);
  757. //-----------------------------------------------------------------------
  758. // Summary:
  759. //     This method is called when an constraint in inplace list is drawn. Override this function if
  760. //     needed.
  761. // Parameters:
  762. //     pDC - Reference to the device context to be used for rendering an image
  763. //     of the item.
  764. //     pConstraint - Constraint to be drawn
  765. //     rc - Bounding rectangle of the constraint.
  766. //     bSelected - TRUE if item is selected.
  767. //-----------------------------------------------------------------------
  768. virtual void OnDrawItemConstraint(CDC* pDC, CXTPPropertyGridItemConstraint* pConstraint, CRect rc, BOOL bSelected);
  769. //-----------------------------------------------------------------------
  770. // Summary:
  771. //     This method is called to get size of constraint in inplace list. Override this function if
  772. //     needed.
  773. // Parameters:
  774. //     pDC - Reference to the device context to be used for rendering an image
  775. //     of the item.
  776. //     pConstraint - Constraint to be drawn
  777. //-----------------------------------------------------------------------
  778. virtual CSize OnMergeItemConstraint(CDC* pDC, CXTPPropertyGridItemConstraint* pConstraint);
  779. //-----------------------------------------------------------------------
  780. // Summary:
  781. //     Override this method and fill in the MEASUREITEMSTRUCT structure
  782. //     to inform Windows of the list-box dimensions.
  783. // Parameters:
  784. //     lpMeasureItemStruct - Specifies a long pointer to a MEASUREITEMSTRUCT
  785. //     structure.
  786. //-----------------------------------------------------------------------
  787. virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
  788. //-----------------------------------------------------------------------
  789. // Summary:
  790. //     Retrieves if the item is selected.
  791. // Returns:
  792. //     TRUE if the item is selected, FALSE otherwise.
  793. //-----------------------------------------------------------------------
  794. BOOL IsSelected() const;
  795. //-----------------------------------------------------------------------
  796. // Summary:
  797. //     Call this method to bind an item to a CString object.
  798. // Parameters:
  799. //     pBindString - CString object to bind to item.
  800. // Remarks:
  801. //     Variables can be bound to an item in two ways, the first is
  802. //     to pass in a variable at the time of creation, the second allows
  803. //     variables to be bound to an item after creation with the
  804. //     BindToString member.
  805. //
  806. //     Bound variables store the values of the property grid items
  807. //     and can be accessed without using the property grid methods
  808. //     and properties.  Bound variables allow the property grid to
  809. //     store data in variables.  When the value of a PropertyGridItem
  810. //     is changed, the value of the bound variable will be changed to
  811. //     the PropertyGridItem value.  The advantage of binding is that
  812. //     the variable can be used and manipulated without using
  813. //     PropertyGridItem methods and properties.
  814. //
  815. //     NOTE:  If the value of the variable is changed without using
  816. //     the PropertyGrid, the PropertyGridItem value will not be
  817. //     updated until you call CXTPPropertyGrid::Refresh.
  818. //-----------------------------------------------------------------------
  819. void BindToString(CString* pBindString);
  820. //-----------------------------------------------------------------------
  821. // Summary:
  822. //     Removes this item.
  823. //-----------------------------------------------------------------------
  824. void Remove();
  825. //-----------------------------------------------------------------------
  826. // Summary:
  827. //     Applies the specified Mask to a CXTPPropertyGridItem data field
  828. //     to to create a restrictive field for text entry.
  829. // Parameters:
  830. //     strMask    - Mask of the item
  831. //     strLiteral - Defines the prompt area of the mask where text entry
  832. //                  is allowed.  This should match the areas that you
  833. //                  have already defined as mask fields.  By default
  834. //                  the prompt character is '_'.
  835. //
  836. //                  Phone No: (___) ___-____
  837. //
  838. //
  839. //     chPrompt   - This value is optional, this is the prompt character
  840. //                  used in strLiteral to indicate a place holder.  By
  841. //                  default this is the underscore '_' character.
  842. // Remarks:
  843. //     You can use any of these characters for defining your edit mask:
  844. //     <TABLE>
  845. //          <b>Mask Character</b>  <b>Description</b>
  846. //          ---------------------  ------------------------
  847. //          0                      Numeric (0-9)
  848. //          9                      Numeric (0-9) or space (' ')
  849. //          #                      Numeric (0-9) or space (' ') or ('+') or ('-')
  850. //          L                      Alpha (a-Z)
  851. //          ?                      Alpha (a-Z) or space (' ')
  852. //          A                      Alpha numeric (0-9 and a-Z)
  853. //          a                      Alpha numeric (0-9 and a-Z) or space (' ')
  854. //          &                      All print character only
  855. //          H                      Hex digit (0-9 and A-F)
  856. //          X                      Hex digit (0-9 and A-F) and space (' ')
  857. //          >                      Forces characters to upper case (A-Z)
  858. //          <                      Forces characters to lower case (a-z)
  859. //     </TABLE>
  860. //
  861. //      Any of these characters can be combined with additional
  862. //      characters to create a restrictive field for text entry.
  863. //      For example, if you wanted to display a prompt for a
  864. //      telephone number and wanted to restrict only numeric
  865. //      values, but wanted to display the area code inside of
  866. //      parentheses '(' and ')' then you could define your
  867. //      mask as:
  868. //
  869. //      Phone No: (000) 000-0000
  870. //
  871. // See Also: GetMaskedText, SetMaskedText
  872. //-----------------------------------------------------------------------
  873. void SetMask(LPCTSTR strMask, LPCTSTR strLiteral, TCHAR chPrompt = _T('_'));
  874. //-----------------------------------------------------------------------
  875. // Summary:
  876. //     Call this method to set a password mask for this item.  By
  877. //     default, all characters will be replaced by an asterisk (*).
  878. // Parameters:
  879. //     chMask - Character to use as the password mask.
  880. // Remarks:
  881. //     The Value will not contain any asterisk (*) or mask, you can
  882. //     return the actual text with the GetMaskedText member.
  883. //     You can specify which character will be used as the password
  884. //     mask.
  885. //-----------------------------------------------------------------------
  886. void SetPasswordMask(TCHAR chMask = _T('*'));
  887. //-----------------------------------------------------------------------
  888. // Summary:
  889. //     Call this member to get the actual text value for the property
  890. //     grid item without the "edit mask" characters added by the
  891. //     SetMask member.
  892. // Returns:
  893. //     Actual text value of the item without mask characters.
  894. // See Also: SetMaskedText, SetMask
  895. //-----------------------------------------------------------------------
  896. CString GetMaskedText() const;
  897. //-----------------------------------------------------------------------
  898. // Summary:
  899. //     This member called to determine if value was changed by user.
  900. // Remarks:
  901. //     Call CXTPPropertyGrid::HighlightChangedItems to highlight all items with changed values
  902. // Returns:
  903. //     TRUE if value was changed
  904. // See Also: CXTPPropertyGrid::HighlightChangedItems, ResetValue, SetDefaultValue
  905. //-----------------------------------------------------------------------
  906. virtual BOOL IsValueChanged() const;
  907. //-----------------------------------------------------------------------
  908. // Summary:
  909. //     Call this member to rest value to its default
  910. // See Also: SetDefaultValue, IsValueChanged
  911. //-----------------------------------------------------------------------
  912. virtual void ResetValue();
  913. //-----------------------------------------------------------------------
  914. // Summary:
  915. //     Call this member to set default value of the item
  916. // Parameters:
  917. //     lpszDefaultValue - Value to be set as default.
  918. // See Also: ResetValue, IsValueChanged
  919. //-----------------------------------------------------------------------
  920. void SetDefaultValue(LPCTSTR lpszDefaultValue);
  921. //-----------------------------------------------------------------------
  922. // Summary:
  923. //     Call this member to set the actual text value for the property
  924. //     grid item without the "edit mask" characters added by the
  925. //     SetMask member.
  926. // Parameters:
  927. //     lpszMaskedText - Text string without mask.
  928. // Remarks:
  929. //     If a mask is used, then the mask will be applied to the text
  930. //     in lpszMaskedText.
  931. // See Also: GetMaskedText, SetMask
  932. //-----------------------------------------------------------------------
  933. void SetMaskedText(LPCTSTR lpszMaskedText);
  934. //-----------------------------------------------------------------------
  935. // Summary:
  936. //     Call this member to retrieve the value of the item that the
  937. //     user is viewing.
  938. // Returns:
  939. //     CString value of the data the user is currently seeing.
  940. //     I.e. If a password mask it used, then the string returned
  941. //     will be filled with asterisks (*).  If no password mask is used,
  942. //     it will return the same thing as GetValue.
  943. //-----------------------------------------------------------------------
  944. virtual CString GetViewValue();
  945. //-----------------------------------------------------------------------
  946. // Summary:
  947. //     This method sets the 32-bit value associated with the item.
  948. // Parameters:
  949. //     dwData - Contains the new value to associate with the item.
  950. //-----------------------------------------------------------------------
  951. void SetItemData(DWORD_PTR dwData);
  952. //-----------------------------------------------------------------------
  953. // Summary:
  954. //     This method retrieves the application-supplied 32-bit value
  955. //     associated with the item
  956. // Returns:
  957. //     The 32-bit value associated with the item
  958. //-----------------------------------------------------------------------
  959. DWORD_PTR GetItemData() const;
  960. //-----------------------------------------------------------------------
  961. // Summary:
  962. //     Call this member function to return in-place edit control of
  963. //     the item
  964. // Returns:
  965. //     A reference to an in-place edit control.
  966. //-----------------------------------------------------------------------
  967. virtual CXTPPropertyGridInplaceEdit& GetInplaceEdit();
  968. //-----------------------------------------------------------------------
  969. // Summary:
  970. //     This method is called to set focus to item in-place control.
  971. //-----------------------------------------------------------------------
  972. virtual void SetFocusToInplaceControl();
  973. //-----------------------------------------------------------------------
  974. // Summary:
  975. //     Determines if in-place buttons are visible for item
  976. // See Also: CXTPPropertyGrid::SetShowInplaceButtonsAlways
  977. //-----------------------------------------------------------------------
  978. virtual BOOL IsInplaceButtonsVisible() const;
  979. //-----------------------------------------------------------------------
  980. // Summary:
  981. //     Retrieves collection of in-place buttons for the item
  982. //-----------------------------------------------------------------------
  983. CXTPPropertyGridInplaceButtons* GetInplaceButtons() const;
  984. //-----------------------------------------------------------------------
  985. // Summary:
  986. //     Retrieves collection of in-place controls for the item
  987. //-----------------------------------------------------------------------
  988. CXTPPropertyGridInplaceControls* GetInplaceControls() const;
  989. //-----------------------------------------------------------------------
  990. // Summary:
  991. //     Call this method to add standard combo button
  992. //-----------------------------------------------------------------------
  993. void AddComboButton();
  994. //-----------------------------------------------------------------------
  995. // Summary:
  996. //     Call this method to add standard expand button
  997. //-----------------------------------------------------------------------
  998. void AddExpandButton();
  999. //-----------------------------------------------------------------------
  1000. // Summary:
  1001. //     Call this method to add slider control
  1002. //-----------------------------------------------------------------------
  1003. CXTPPropertyGridInplaceSlider* AddSliderControl();
  1004. //-----------------------------------------------------------------------
  1005. // Summary:
  1006. //     Call this method to add spin control
  1007. //-----------------------------------------------------------------------
  1008. CXTPPropertyGridInplaceSpinButton* AddSpinButton();
  1009. //-----------------------------------------------------------------------
  1010. // Summary:
  1011. //     Call this method to get metrics of value part
  1012. // Returns:
  1013. //     Pointer to CXTPPropertyGridItemMetrics contained metrics (color, style) of value part
  1014. // See Also: CXTPPropertyGridItemMetrics, GetCaptionMetrics
  1015. //-----------------------------------------------------------------------
  1016. CXTPPropertyGridItemMetrics* GetValueMetrics() const;
  1017. //-----------------------------------------------------------------------
  1018. // Summary:
  1019. //     Call this method to get metrics of caption part
  1020. // Returns:
  1021. //     Pointer to CXTPPropertyGridItemMetrics contained metrics (color, style) of caption part
  1022. // See Also: CXTPPropertyGridItemMetrics, GetValueMetrics
  1023. //-----------------------------------------------------------------------
  1024. CXTPPropertyGridItemMetrics* GetCaptionMetrics() const;
  1025. //-----------------------------------------------------------------------
  1026. // Summary:
  1027. //     Call this method to get metrics of caption part or value part
  1028. // Parameters:
  1029. //     bValueMetrics - TRUE to retrieve the value metrics
  1030. //     bCreate - TRUE to call GetCaptionMetrics or GetValueMetrics to get metrics
  1031. // Returns:
  1032. //     Pointer to CXTPPropertyGridItemMetrics contained metrics (color, style) of caption part
  1033. // See Also: CXTPPropertyGridItemMetrics, GetValueMetrics
  1034. //-----------------------------------------------------------------------
  1035. CXTPPropertyGridItemMetrics* GetMetrics(BOOL bValueMetrics, BOOL bCreate = TRUE) const;
  1036. //-----------------------------------------------------------------------
  1037. // Summary:
  1038. //     Call this member to get variable height of the item.
  1039. // Returns:
  1040. //     Height of the item or -1 if default values used.
  1041. //-----------------------------------------------------------------------
  1042. int GetHeight() const;
  1043. //-----------------------------------------------------------------------
  1044. // Summary:
  1045. //     Call this member to set variable height of the item.
  1046. // Parameters:
  1047. //     nHeight - Height of item or -1 to use default value
  1048. // Remarks:
  1049. //     Call CXTPPropertyGrid::SetVariableItemsHeight to use variable height items
  1050. // See Also: CXTPPropertyGrid::SetVariableItemsHeight, SetMultiLinesCount
  1051. //-----------------------------------------------------------------------
  1052. void SetHeight(int nHeight);
  1053. //-----------------------------------------------------------------------
  1054. // Summary:
  1055. //     Call this member to determine if item is multi line.
  1056. // Returns:
  1057. //     TRUE if item has more than one view line.
  1058. // See Also: SetMultiLinesCount
  1059. //-----------------------------------------------------------------------
  1060. BOOL IsMultiLine() const;
  1061. //-----------------------------------------------------------------------
  1062. // Summary:
  1063. //     Call this member to get total item lines
  1064. // Returns:
  1065. //     Total lines count of multi line item
  1066. //-----------------------------------------------------------------------
  1067. int GetMultiLinesCount() const;
  1068. //-----------------------------------------------------------------------
  1069. // Summary:
  1070. //     Call this member to set total lines of multi line item
  1071. // Parameters:
  1072. //     nLinesCount - Total lines of multi line item
  1073. // Remarks:
  1074. //     Call CXTPPropertyGrid::SetVariableItemsHeight to use variable height items
  1075. //-----------------------------------------------------------------------
  1076. void SetMultiLinesCount(int nLinesCount);
  1077. //-----------------------------------------------------------------------
  1078. // Summary:
  1079. //     Call this function to ensure that the item is visible.
  1080. //-----------------------------------------------------------------------
  1081. void EnsureVisible();
  1082. //-----------------------------------------------------------------------
  1083. // Summary:
  1084. //     This method is called before user start edit the item
  1085. // Returns:
  1086. //     TRUE to allow edit item; FALSE to forbid
  1087. //-----------------------------------------------------------------------
  1088. virtual BOOL OnRequestEdit();
  1089. //-----------------------------------------------------------------------
  1090. // Summary:
  1091. //     This method is called before user apply new value of the item
  1092. // Parameters:
  1093. //     strValue - Value to be set
  1094. // Returns:
  1095. //     TRUE to allow new item value; FALSE to forbid
  1096. //-----------------------------------------------------------------------
  1097. virtual BOOL OnAfterEdit(CString& strValue);
  1098. //-----------------------------------------------------------------------
  1099. // Summary:
  1100. //     This method is called if user cancel edit item
  1101. //-----------------------------------------------------------------------
  1102. virtual void OnCancelEdit();
  1103. //-----------------------------------------------------------------------
  1104. // Summary:
  1105. //     Call this method to set edit styles of the item.
  1106. // Parameters:
  1107. //     dwEditStyle - New style to be set
  1108. // Example:
  1109. //     <code>pItem->SetEditStyle(ES_MULTILINE | ES_AUTOVSCROLL);</code>
  1110. //-----------------------------------------------------------------------
  1111. void SetEditStyle(DWORD dwEditStyle);
  1112. //-----------------------------------------------------------------------
  1113. // Summary:
  1114. //     Call this member to set the count of items in the dropdown list.
  1115. // Parameters:
  1116. //     nDropDownItemCount - The count of items in the dropdown list.
  1117. //-----------------------------------------------------------------------
  1118. void SetDropDownItemCount(int nDropDownItemCount);
  1119. //-----------------------------------------------------------------------
  1120. // Summary:
  1121. //     Retrieves count of items in the dropdown list.
  1122. // Returns:
  1123. //     Count of items in the dropdown list
  1124. // See Also: SetDropDownItemCount
  1125. //-----------------------------------------------------------------------
  1126. int GetDropDownItemCount() const;
  1127. //-----------------------------------------------------------------------
  1128. // Summary:
  1129. //     This method is called to check value from in-place edit control.
  1130. //-----------------------------------------------------------------------
  1131. virtual void OnValidateEdit();
  1132. CXTPMarkupUIElement* GetMarkupUIElement() const;
  1133. protected:
  1134. //-----------------------------------------------------------------------
  1135. // Summary:
  1136. //     This method is called to get edit styles of the item, override it if you need custom style
  1137. // Remarks:
  1138. //     By default it returns WS_CHILD | ES_AUTOHSCROLL
  1139. // Returns:
  1140. //     Styles of the edit control.
  1141. //-----------------------------------------------------------------------
  1142. virtual DWORD GetEditStyle() const;
  1143. //-----------------------------------------------------------------------
  1144. // Summary:
  1145. //     This method is called when visibility state of the item was changed.
  1146. // Parameters:
  1147. //     bVisible - TRUE to set the control visible.
  1148. //-----------------------------------------------------------------------
  1149. virtual void SetVisible(BOOL bVisible);
  1150. //-----------------------------------------------------------------------
  1151. // Summary:
  1152. //     This method is called when index of the item was changed
  1153. //-----------------------------------------------------------------------
  1154. virtual void OnIndexChanged();
  1155. //-----------------------------------------------------------------------
  1156. // Summary:
  1157. //     This method is called when an item is selected.
  1158. //-----------------------------------------------------------------------
  1159. virtual void OnSelect();
  1160. //-----------------------------------------------------------------------
  1161. // Summary:
  1162. //     This method is called when an item is de-selected.
  1163. //-----------------------------------------------------------------------
  1164. virtual void OnDeselect();
  1165. //-----------------------------------------------------------------------
  1166. // Summary:
  1167. //     This method is called when a key is pressed.
  1168. // Parameters:
  1169. //     nChar - Contains the character code value of the key.
  1170. // Returns:
  1171. //     TRUE if a key is pressed, otherwise returns FALSE.
  1172. //-----------------------------------------------------------------------
  1173. virtual BOOL OnChar(UINT nChar);
  1174. //-----------------------------------------------------------------------
  1175. // Summary:
  1176. //     This method is called when the user double-clicks the left
  1177. //     mouse button.
  1178. // Parameters:
  1179. //     nFlags - Indicates whether various virtual keys are down
  1180. //              (see Visual C++ documentation).
  1181. //     point  - Specifies the x- and y-coordinate of the cursor.
  1182. //-----------------------------------------------------------------------
  1183. virtual void OnLButtonDblClk(UINT nFlags, CPoint point);
  1184. //-----------------------------------------------------------------------
  1185. // Summary:
  1186. //     This method is called when the user clicks the right mouse
  1187. //     button down.
  1188. // Parameters:
  1189. //     nFlags - Indicates whether various virtual keys are down
  1190. //              (see Visual C++ documentation).
  1191. //     point  - Specifies the x- and y-coordinate of the cursor.
  1192. //-----------------------------------------------------------------------
  1193. virtual void OnRButtonDown(UINT nFlags, CPoint point);
  1194. //-----------------------------------------------------------------------
  1195. // Summary:
  1196. //     This method is called when the user presses the left mouse button.
  1197. // Parameters:
  1198. //     nFlags - Indicates whether various virtual keys are down
  1199. //              (see Visual C++ documentation).
  1200. //     point  - Specifies the x- and y-coordinate of the cursor.
  1201. // Returns:
  1202. //     TRUE if the message processed, otherwise returns FALSE.
  1203. //-----------------------------------------------------------------------
  1204. virtual BOOL OnLButtonDown(UINT nFlags, CPoint point);
  1205. //-----------------------------------------------------------------------
  1206. // Summary:
  1207. //     This method is called when the user release the left mouse button.
  1208. // Parameters:
  1209. //     nFlags - Indicates whether various virtual keys are down
  1210. //     (see Visual C++ documentation).
  1211. //     point - Specifies the x- and y-coordinate of the cursor.
  1212. //-----------------------------------------------------------------------
  1213. virtual void OnLButtonUp(UINT nFlags, CPoint point);
  1214. //-----------------------------------------------------------------------
  1215. // Summary:
  1216. //     This method is called when a non-system key is pressed.
  1217. // Parameters:
  1218. //     nChar - Specifies the virtual-key code of the given key.
  1219. //-----------------------------------------------------------------------
  1220. virtual BOOL OnKeyDown (UINT nChar);
  1221. //-----------------------------------------------------------------------
  1222. // Summary:
  1223. //     This method is called when an item is added to the parent.
  1224. //-----------------------------------------------------------------------
  1225. virtual void OnAddChildItem();
  1226. //-----------------------------------------------------------------------
  1227. // Summary:
  1228. //     This method is called when the user presses the in-place button.
  1229. //     Override the method to show an item-specific dialog.
  1230. // Parameters:
  1231. //     pButton - Button that was pressed
  1232. //-----------------------------------------------------------------------
  1233. virtual void OnInplaceButtonDown(CXTPPropertyGridInplaceButton* pButton);
  1234. //-----------------------------------------------------------------------
  1235. // Summary:
  1236. //     Call this member function to return in-place list control of
  1237. //     the item
  1238. // Returns:
  1239. //     A reference to an in-place list control.
  1240. //-----------------------------------------------------------------------
  1241. virtual CXTPPropertyGridInplaceList& GetInplaceList();
  1242. //-----------------------------------------------------------------------
  1243. // Summary:
  1244. //     This method is called to set text of thein-placee edit control.
  1245. // Parameters:
  1246. //     str - String value
  1247. //-----------------------------------------------------------------------
  1248. virtual void SetEditText(const CString& str);
  1249. //-----------------------------------------------------------------------
  1250. // Summary:
  1251. //     This member is called before the item becomes visible in the
  1252. //     property grid.
  1253. // Remarks:
  1254. //     Before the item is inserted, it is first check to see if it
  1255. //     is bound to a variable, if it is, then the value of the item
  1256. //     is updated with the value stored in the bound variable.
  1257. //
  1258. //          OnBeforeInsert is called when an item is inserted,
  1259. //          when a category is inserted, when a category or item is
  1260. //          expanded, and when the sort property has changed.
  1261. //-----------------------------------------------------------------------
  1262. virtual void OnBeforeInsert();
  1263. //-----------------------------------------------------------------------
  1264. // Summary:
  1265. //     This member is called when constraints are added to this item.
  1266. // Remarks:
  1267. //     OnConstraintsChanged is called when
  1268. //     CXTPPropertyGridItemConstraints::AddConstraint is called.
  1269. // See Also: CXTPPropertyGridItemConstraints::AddConstraint, GetConstraints
  1270. //-----------------------------------------------------------------------
  1271. virtual void OnConstraintsChanged();
  1272. virtual void OnCaptionChanged();
  1273. protected:
  1274. //-----------------------------------------------------------------------
  1275. // Summary:
  1276. //     This method is called to switch constraints.
  1277. //-----------------------------------------------------------------------
  1278. BOOL SelectNextConstraint();
  1279. //-----------------------------------------------------------------------
  1280. // Summary:
  1281. //     Determines if point belongs value rectangle
  1282. // Parameters:
  1283. //     point - Point need to check.
  1284. //-----------------------------------------------------------------------
  1285. BOOL PtInValueRect(CPoint point);
  1286. protected:
  1287. //{{AFX_CODEJOCK_PRIVATE
  1288. // System accessibility Support
  1289. virtual HRESULT GetAccessibleParent(IDispatch** ppdispParent);
  1290. virtual HRESULT GetAccessibleDescription(VARIANT varChild, BSTR* pszDescription);
  1291. virtual HRESULT GetAccessibleName(VARIANT varChild, BSTR* pszName);
  1292. virtual HRESULT GetAccessibleRole(VARIANT varChild, VARIANT* pvarRole);
  1293. virtual HRESULT AccessibleLocation(long *pxLeft, long *pyTop, long *pcxWidth, long* pcyHeight, VARIANT varChild);
  1294. virtual HRESULT AccessibleHitTest(long xLeft, long yTop, VARIANT* pvarChild);
  1295. virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
  1296. virtual CCmdTarget* GetAccessible();
  1297. virtual HRESULT AccessibleSelect(long flagsSelect, VARIANT varChild);
  1298. virtual HRESULT GetAccessibleValue(VARIANT varChild, BSTR* pszValue);
  1299. DECLARE_INTERFACE_MAP()
  1300. //}}AFX_CODEJOCK_PRIVATE
  1301. private:
  1302. void Init();
  1303. void Refresh(BOOL bInvalidate = TRUE);
  1304. void Clear();
  1305. CRect GetInplaceWindowsRect();
  1306. void SetIndent(int nIndent);
  1307. void RefreshHeight();
  1308. protected:
  1309. BOOL                    m_bConstraintEdit;  // TRUE to constraint edit.
  1310. int                     m_nIndex;           // Index of the item.
  1311. int                     m_nIndent;          // Indent of the item.
  1312. UINT                    m_nID;              // Identifier of the item.
  1313. UINT                    m_nFlags;           // Item's flags.
  1314. BOOL                    m_bReadOnly;        // TRUE to disable item's edition.
  1315. BOOL                    m_bVisible;         // Visibility of the item.
  1316. BOOL                    m_bCategory;        // TRUE if the item is category.
  1317. BOOL                    m_bExpandable;      // TRUE if item can be expanded.
  1318. BOOL                    m_bExpanded;        // TRUE if item is expanded.
  1319. CString                 m_strValue;         // Value of the item.
  1320. CString                 m_strDefaultValue;  // Default value of the item.
  1321. CString                 m_strCaption;       // Caption of the item.
  1322. CString                 m_strDescription;   // Description of the item.
  1323. CString                 m_strTooltip;
  1324. CXTPPropertyGridItem*   m_pParent;          // Parent item.
  1325. CXTPPropertyGridView*   m_pGrid;            // Parent grid class.
  1326. CXTPPropertyGridItems*  m_pChilds;          // Child items.
  1327. CXTPPropertyGridItemConstraints*    m_pConstraints;     // Item's constraints.
  1328. BOOL                    m_bAutoComplete;
  1329. mutable CXTPPropertyGridItemMetrics* m_pValueMetrics;   // Value part metrics
  1330. mutable CXTPPropertyGridItemMetrics* m_pCaptionMetrics; // Caption part metrics
  1331. CXTPPropertyGridInplaceButtons* m_pInplaceButtons;          // Inplace buttons array
  1332. CXTPPropertyGridInplaceControls* m_pInplaceControls;
  1333. int m_nDropDownItemCount;   // Maximum drop down items
  1334. CString*                m_pBindString;      // Binded string.
  1335. CString m_strFormat;                        // Format of the double value.
  1336. CString m_strMask;                          // String to use as edit mask.
  1337. CString m_strLiteral;                       // String to use as literal.  This is the same as the edit mask, but all mask characters are replaced with m_chPrompt.
  1338. TCHAR m_chPrompt;                           // Character used as a space holder for a character.  This is used in m_strLiteral.
  1339. bool m_bUseMask;                            // TRUE to use and edit mask to display item data.
  1340. BOOL m_bPassword;                           // TRUE to use a password mask.  If TRUE, then each character will be replaced with an asterisk (*).
  1341. DWORD_PTR m_dwData;                         // The 32-bit value associated with the item
  1342. BOOL m_bHidden;                             // TRUE if item is hidden
  1343. int m_nHeight;                              // Item's height. -1 to use default
  1344. int m_nLinesCount;                          // Count of lines of Multi line item.
  1345. DWORD m_dwEditStyle;                        // Edit style.
  1346. CXTPMarkupUIElement* m_pMarkupUIElement;
  1347. friend class CXTPPropertyGridItems;
  1348. friend class CXTPPropertyGridView;
  1349. friend class CXTPPropertyGridInplaceEdit;
  1350. friend class CXTPPropertyGridInplaceButton;
  1351. DECLARE_DYNAMIC(CXTPPropertyGridItem)
  1352. friend class CXTPPropertyGridItemConstraints;
  1353. friend class CXTPPropertyGrid;
  1354. };
  1355. //===========================================================================
  1356. // Summary:
  1357. //     CXTPPropertyGridItemCategory is the CXTPPropertyGridItem derived class. Use it to add subcategory to
  1358. //     property grid control.
  1359. // Note:    Parent item for category must be also the category.
  1360. //===========================================================================
  1361. class _XTP_EXT_CLASS CXTPPropertyGridItemCategory : public CXTPPropertyGridItem
  1362. {
  1363. public:
  1364. //-----------------------------------------------------------------------
  1365. // Summary:
  1366. //     Constructs a CXTPPropertyGridItemCategory object
  1367. // Parameters:  strCaption    - Caption of the item.
  1368. //              nID           - Identifier of the item.
  1369. // Remarks:
  1370. //     Class CXTPPropertyGridItemCategory has no default constructor.
  1371. //
  1372. //          When using the second constructor, the Identifier (nID) of the
  1373. //          second constructor can be linked with a STRINGTABLE resource
  1374. //          with the same id in such form "Caption\nDescription".
  1375. //-----------------------------------------------------------------------
  1376. CXTPPropertyGridItemCategory(LPCTSTR strCaption);
  1377. CXTPPropertyGridItemCategory(UINT nID); // <COMBINE CXTPPropertyGridItemCategory::CXTPPropertyGridItemCategory@LPCTSTR>
  1378. };
  1379. //////////////////////////////////////////////////////////////////////
  1380. AFX_INLINE long CXTPPropertyGridItems::GetCount() const {
  1381. return (long)m_arrItems.GetSize();
  1382. }
  1383. AFX_INLINE BOOL CXTPPropertyGridItems::IsEmpty() const {
  1384. return GetCount() == 0;
  1385. }
  1386. AFX_INLINE void CXTPPropertyGridItems::AddTail(CXTPPropertyGridItem* pItem) {
  1387. m_arrItems.Add(pItem);
  1388. }
  1389. AFX_INLINE void CXTPPropertyGridItems::InsertAt(int nIndex, CXTPPropertyGridItem* pItem) {
  1390. m_arrItems.InsertAt(nIndex, pItem);
  1391. }
  1392. AFX_INLINE BOOL CXTPPropertyGridItem::HasChilds() const {
  1393. return !m_pChilds->IsEmpty();
  1394. }
  1395. AFX_INLINE void CXTPPropertyGridItem::SetCaption(LPCTSTR strCaption) {
  1396. if (m_strCaption != strCaption)
  1397. {
  1398. m_strCaption = strCaption;
  1399. OnCaptionChanged();
  1400. }
  1401. }
  1402. AFX_INLINE CString CXTPPropertyGridItem::GetCaption() const {
  1403. return m_strCaption;
  1404. }
  1405. AFX_INLINE CString CXTPPropertyGridItem::GetDescription() const {
  1406. return m_strDescription;
  1407. }
  1408. AFX_INLINE BOOL CXTPPropertyGridItem::GetReadOnly() const{
  1409. return m_bReadOnly;
  1410. }
  1411. AFX_INLINE void CXTPPropertyGridItem::SetID(UINT nID) {
  1412. m_nID = nID;
  1413. }
  1414. AFX_INLINE UINT CXTPPropertyGridItem::GetID() const {
  1415. return m_nID;
  1416. }
  1417. AFX_INLINE CString CXTPPropertyGridItem::GetValue() const {
  1418. return m_strValue;
  1419. }
  1420. AFX_INLINE BOOL CXTPPropertyGridItem::IsCategory() const {
  1421. return m_bCategory;
  1422. }
  1423. AFX_INLINE CXTPPropertyGridView* CXTPPropertyGridItem::GetGrid() const {
  1424. return m_pGrid;
  1425. }
  1426. AFX_INLINE BOOL CXTPPropertyGridItem::OnDrawItemValue(CDC&, CRect) {
  1427. return FALSE;
  1428. }
  1429. AFX_INLINE BOOL CXTPPropertyGridItem::IsVisible() const {
  1430. return m_bVisible;
  1431. }
  1432. AFX_INLINE BOOL CXTPPropertyGridItem::IsExpanded() const {
  1433. return m_bExpanded;
  1434. }
  1435. AFX_INLINE void CXTPPropertyGridItem::SetExpandable(BOOL bExpandable) {
  1436. m_bExpandable = bExpandable;
  1437. }
  1438. AFX_INLINE BOOL CXTPPropertyGridItem::IsExpandable() const {
  1439. return m_bExpandable;
  1440. }
  1441. AFX_INLINE CXTPPropertyGridItem* CXTPPropertyGridItem::GetParentItem() const {
  1442. return m_pParent;
  1443. }
  1444. AFX_INLINE CXTPPropertyGridItems* CXTPPropertyGridItem::GetChilds() const {
  1445. return m_pChilds;
  1446. }
  1447. AFX_INLINE int CXTPPropertyGridItem::GetIndent() const {
  1448. return m_nIndent;
  1449. }
  1450. AFX_INLINE void CXTPPropertyGridItem::SetConstraintEdit(BOOL bConstraintEdit) {
  1451. m_bConstraintEdit = bConstraintEdit;
  1452. }
  1453. AFX_INLINE BOOL CXTPPropertyGridItem::GetConstraintEdit() const {
  1454. return m_bConstraintEdit;
  1455. }
  1456. AFX_INLINE void CXTPPropertyGridItem::SetPasswordMask(TCHAR chMask) {
  1457. m_bPassword = TRUE;
  1458. m_chPrompt = chMask;
  1459. }
  1460. AFX_INLINE void CXTPPropertyGridItem::OnRButtonDown(UINT, CPoint) {
  1461. }
  1462. AFX_INLINE void CXTPPropertyGridItem::OnConstraintsChanged() {
  1463. }
  1464. AFX_INLINE void CXTPPropertyGridItem::SetItemData(DWORD_PTR dwData) {
  1465. m_dwData = dwData;
  1466. }
  1467. AFX_INLINE DWORD_PTR CXTPPropertyGridItem::GetItemData() const {
  1468. return m_dwData;
  1469. }
  1470. AFX_INLINE void CXTPPropertyGridItem::SetVisible(BOOL bVisible) {
  1471. m_bVisible = bVisible;
  1472. }
  1473. AFX_INLINE void CXTPPropertyGridItem::OnIndexChanged() {
  1474. }
  1475. AFX_INLINE CXTPPropertyGridItemConstraints* CXTPPropertyGridItem::GetConstraints() const {
  1476. return m_pConstraints;
  1477. }
  1478. AFX_INLINE int CXTPPropertyGridItemConstraints::GetCount() const {
  1479. return (int)m_arrConstraints.GetSize();
  1480. }
  1481. AFX_INLINE BOOL CXTPPropertyGridItemConstraints::IsEmpty() const {
  1482. return GetCount() == 0;
  1483. }
  1484. AFX_INLINE void CXTPPropertyGridItemConstraints::SetCurrent(int nIndex){
  1485. m_nCurrent = nIndex;
  1486. }
  1487. AFX_INLINE int CXTPPropertyGridItemConstraints::GetCurrent() const {
  1488. return m_nCurrent;
  1489. }
  1490. AFX_INLINE int CXTPPropertyGridItemConstraint::GetIndex() const {
  1491. return m_nIndex;
  1492. }
  1493. AFX_INLINE int CXTPPropertyGridItem::GetHeight() const {
  1494. return m_nHeight;
  1495. }
  1496. AFX_INLINE BOOL CXTPPropertyGridItem::IsMultiLine() const {
  1497. return m_nLinesCount > 1;
  1498. }
  1499. AFX_INLINE int CXTPPropertyGridItem::GetMultiLinesCount() const {
  1500. return m_nLinesCount;
  1501. }
  1502. AFX_INLINE void CXTPPropertyGridItem::SetEditStyle(DWORD dwEditStyle) {
  1503. m_dwEditStyle = dwEditStyle;
  1504. }
  1505. AFX_INLINE BOOL CXTPPropertyGridItem::OnKeyDown (UINT /*nChar*/) {
  1506. return FALSE;
  1507. }
  1508. AFX_INLINE void CXTPPropertyGridItem::SetDropDownItemCount(int nDropDownItemCount) {
  1509. m_nDropDownItemCount = nDropDownItemCount;
  1510. }
  1511. AFX_INLINE int CXTPPropertyGridItem::GetDropDownItemCount() const {
  1512. return m_nDropDownItemCount;
  1513. }
  1514. AFX_INLINE void CXTPPropertyGridItem::SetAutoComplete(BOOL bAutoComplete) {
  1515. m_bAutoComplete = bAutoComplete;
  1516. }
  1517. AFX_INLINE void CXTPPropertyGridItem::SetTooltip(LPCTSTR lpstrTooltip) {
  1518. m_strTooltip = lpstrTooltip;
  1519. }
  1520. AFX_INLINE CString CXTPPropertyGridItem::GetTooltip() const {
  1521. return m_strTooltip;
  1522. }
  1523. AFX_INLINE CXTPMarkupUIElement* CXTPPropertyGridItem::GetMarkupUIElement() const {
  1524. return m_pMarkupUIElement;
  1525. }
  1526. #endif // #if !defined(__XTPPROPERTYGRIDITEM_H__)