1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     interface of wxPropertyGrid 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  11     @section propgrid_window_styles wxPropertyGrid Window Styles 
  13     SetWindowStyleFlag method can be used to modify some of these at run-time. 
  16 enum wxPG_WINDOW_STYLES
 
  20     This will cause Sort() automatically after an item is added. 
  21     When inserting a lot of items in this mode, it may make sense to 
  22     use Freeze() before operations and Thaw() afterwards to increase 
  25 wxPG_AUTO_SORT                      
= 0x00000010, 
  28     Categories are not initially shown (even if added). 
  29     IMPORTANT NOTE: If you do not plan to use categories, then this 
  30     style will waste resources. 
  31     This flag can also be changed using wxPropertyGrid::EnableCategories method. 
  33 wxPG_HIDE_CATEGORIES                
= 0x00000020, 
  36     This style combines non-categoric mode and automatic sorting. 
  38 wxPG_ALPHABETIC_MODE                
= (wxPG_HIDE_CATEGORIES
|wxPG_AUTO_SORT
), 
  41     Modified values are shown in bold font. Changing this requires Refresh() 
  44 wxPG_BOLD_MODIFIED                  
= 0x00000040, 
  47     When wxPropertyGrid is resized, splitter moves to the center. This 
  48     behavior stops once the user manually moves the splitter. 
  50 wxPG_SPLITTER_AUTO_CENTER           
= 0x00000080, 
  53     Display tool tips for cell text that cannot be shown completely. If 
  54     wxUSE_TOOLTIPS is 0, then this doesn't have any effect. 
  56 wxPG_TOOLTIPS                       
= 0x00000100, 
  59     Disables margin and hides all expand/collapse buttons that would appear 
  60     outside the margin (for sub-properties). Toggling this style automatically 
  61     expands all collapsed items. 
  63 wxPG_HIDE_MARGIN                    
= 0x00000200, 
  66     This style prevents user from moving the splitter. 
  68 wxPG_STATIC_SPLITTER                
= 0x00000400, 
  71     Combination of other styles that make it impossible for user to modify 
  74 wxPG_STATIC_LAYOUT                  
= (wxPG_HIDE_MARGIN
|wxPG_STATIC_SPLITTER
), 
  77     Disables wxTextCtrl based editors for properties which 
  78     can be edited in another way. Equals calling 
  79     wxPropertyGrid::LimitPropertyEditing() for all added properties. 
  81 wxPG_LIMITED_EDITING                
= 0x00000800, 
  84     wxPropertyGridManager only: Show tool bar for mode and page selection. 
  86 wxPG_TOOLBAR                        
= 0x00001000, 
  89     wxPropertyGridManager only: Show adjustable text box showing description 
  90     or help text, if available, for currently selected property. 
  92 wxPG_DESCRIPTION                    
= 0x00002000 
  96 enum wxPG_EX_WINDOW_STYLES
 
 100     NOTE: wxPG_EX_xxx are extra window styles and must be set using SetExtraStyle() 
 103     Speeds up switching to wxPG_HIDE_CATEGORIES mode. Initially, if 
 104     wxPG_HIDE_CATEGORIES is not defined, the non-categorized data storage is not 
 105     activated, and switching the mode first time becomes somewhat slower. 
 106     wxPG_EX_INIT_NOCAT activates the non-categorized data storage right away. 
 108     NOTE: If you do plan not switching to non-categoric mode, or if 
 109     you don't plan to use categories at all, then using this style will result 
 110     in waste of resources. 
 112 wxPG_EX_INIT_NOCAT                  
= 0x00001000, 
 115     Extended window style that sets wxPropertyGridManager tool bar to not 
 118 wxPG_EX_NO_FLAT_TOOLBAR             
= 0x00002000, 
 121     Shows alphabetic/categoric mode buttons from tool bar. 
 123 wxPG_EX_MODE_BUTTONS                
= 0x00008000, 
 126     Show property help strings as tool tips instead as text on the status bar. 
 127     You can set the help strings using SetPropertyHelpString member function. 
 129 wxPG_EX_HELP_AS_TOOLTIPS            
= 0x00010000, 
 132     Allows relying on native double-buffering. 
 134 wxPG_EX_NATIVE_DOUBLE_BUFFERING         
= 0x00080000, 
 137     Set this style to let user have ability to set values of properties to 
 138     unspecified state. Same as setting wxPG_PROP_AUTO_UNSPECIFIED for 
 141 wxPG_EX_AUTO_UNSPECIFIED_VALUES         
= 0x00200000, 
 144     If this style is used, built-in attributes (such as wxPG_FLOAT_PRECISION and 
 145     wxPG_STRING_PASSWORD) are not stored into property's attribute storage (thus 
 146     they are not readable). 
 148     Note that this option is global, and applies to all wxPG property containers. 
 150 wxPG_EX_WRITEONLY_BUILTIN_ATTRIBUTES    
= 0x00400000, 
 153     Hides page selection buttons from tool bar. 
 155 wxPG_EX_HIDE_PAGE_BUTTONS               
= 0x01000000 
 159 /** Combines various styles. 
 161 #define wxPG_DEFAULT_STYLE              (0) 
 163 /** Combines various styles. 
 165 #define wxPGMAN_DEFAULT_STYLE       (0) 
 170 // ----------------------------------------------------------------------- 
 173     @section propgrid_vfbflags wxPropertyGrid Validation Failure Behavior Flags 
 177 enum wxPG_VALIDATION_FAILURE_BEHAVIOR_FLAGS
 
 181     Prevents user from leaving property unless value is valid. If this 
 182     behavior flag is not used, then value change is instead cancelled. 
 184 wxPG_VFB_STAY_IN_PROPERTY           
= 0x01, 
 187     Calls wxBell() on validation failure. 
 189 wxPG_VFB_BEEP                       
= 0x02, 
 192     Cell with invalid value will be marked (with red colour). 
 194 wxPG_VFB_MARK_CELL                  
= 0x04, 
 197     Display customizable text message explaining the situation. 
 199 wxPG_VFB_SHOW_MESSAGE               
= 0x08, 
 204 wxPG_VFB_DEFAULT                    
= wxPG_VFB_STAY_IN_PROPERTY
|wxPG_VFB_BEEP
, 
 210 typedef wxByte wxPGVFBFlags
; 
 215     Used to convey validation information to and from functions that 
 216     actually perform validation. Mostly used in custom property classes. 
 218 class wxPGValidationInfo
 
 222         @return Returns failure behavior which is a combination of 
 223             @ref propgrid_vfbflags. 
 225     wxPGVFBFlags 
GetFailureBehavior(); 
 228         Returns current failure message. 
 230     const wxString
& GetFailureMessage() const; 
 233         Returns reference to pending value. 
 235     const wxVariant
& GetValue() const; 
 237     /** Set validation failure behavior 
 239         @param failureBehavior 
 240             Mixture of @ref propgrid_vfbflags. 
 242     void SetFailureBehavior(wxPGVFBFlags failureBehavior
); 
 245         Set current failure message. 
 247     void SetFailureMessage(const wxString
& message
); 
 250 // ----------------------------------------------------------------------- 
 253     @section propgrid_keyboard_actions wxPropertyGrid Action Identifiers 
 255     These are used with wxPropertyGrid::AddActionTrigger() and 
 256     wxPropertyGrid::ClearActionTriggers(). 
 260 enum wxPG_KEYBOARD_ACTIONS
 
 262     wxPG_ACTION_INVALID 
= 0, 
 263     wxPG_ACTION_NEXT_PROPERTY
, 
 264     wxPG_ACTION_PREV_PROPERTY
, 
 265     wxPG_ACTION_EXPAND_PROPERTY
, 
 266     wxPG_ACTION_COLLAPSE_PROPERTY
, 
 267     wxPG_ACTION_CANCEL_EDIT
, 
 274 /** This callback function is used for sorting properties. 
 276     Call wxPropertyGrid::SetSortFunction() to set it. 
 278     Sort function should return a value greater than 0 if position of p1 is 
 279     after p2. So, for instance, when comparing property names, you can use 
 280     following implementation: 
 283             int MyPropertySortFunction(wxPropertyGrid* propGrid, 
 287                 return p1->GetBaseName().compare( p2->GetBaseName() ); 
 291 typedef int (*wxPGSortCallback
)(wxPropertyGrid
* propGrid
, 
 295 // ----------------------------------------------------------------------- 
 298     @class wxPropertyGrid 
 300     wxPropertyGrid is a specialized grid for editing properties - in other 
 301     words name = value pairs. List of ready-to-use property classes include 
 302     strings, numbers, flag sets, fonts, colours and many others. It is possible, 
 303     for example, to categorize properties, set up a complete tree-hierarchy, 
 304     add more than two columns, and set arbitrary per-property attributes. 
 306     Please note that most member functions are inherited and as such not 
 307     documented on this page. This means you will probably also want to read 
 308     wxPropertyGridInterface class reference. 
 310     See also @ref overview_propgrid. 
 312     @section propgrid_window_styles_ Window Styles 
 314     See @ref propgrid_window_styles. 
 316     @section propgrid_event_handling Event Handling 
 318     To process input from a property grid control, use these event handler macros 
 319     to direct input to member functions that take a wxPropertyGridEvent argument. 
 321     @beginEventEmissionTable{wxPropertyGridEvent} 
 322     @event{EVT_PG_SELECTED (id, func)} 
 323         Respond to wxEVT_PG_SELECTED event, generated when property value 
 324         has been changed by user. 
 325     @event{EVT_PG_CHANGING(id, func)} 
 326         Respond to wxEVT_PG_CHANGING event, generated when property value 
 327         is about to be changed by user. Use wxPropertyGridEvent::GetValue() 
 328         to take a peek at the pending value, and wxPropertyGridEvent::Veto() 
 329         to prevent change from taking place, if necessary. 
 330     @event{EVT_PG_HIGHLIGHTED(id, func)} 
 331         Respond to wxEVT_PG_HIGHLIGHTED event, which occurs when mouse 
 332         moves over a property. Event's property is NULL if hovered area does 
 333         not belong to any property. 
 334     @event{EVT_PG_RIGHT_CLICK(id, func)} 
 335         Respond to wxEVT_PG_RIGHT_CLICK event, which occurs when property is 
 336         clicked on with right mouse button. 
 337     @event{EVT_PG_DOUBLE_CLICK(id, func)} 
 338         Respond to wxEVT_PG_DOUBLE_CLICK event, which occurs when property is 
 339         double-clicked on with left mouse button. 
 340     @event{EVT_PG_ITEM_COLLAPSED(id, func)} 
 341         Respond to wxEVT_PG_ITEM_COLLAPSED event, generated when user collapses 
 342         a property or category. 
 343     @event{EVT_PG_ITEM_EXPANDED(id, func)} 
 344         Respond to wxEVT_PG_ITEM_EXPANDED event, generated when user expands 
 345         a property or category. 
 349     Use Freeze() and Thaw() respectively to disable and enable drawing. 
 350     This will also delay sorting etc. miscellaneous calculations to the last 
 355     @appearance{propertygrid.png} 
 357 class wxPropertyGrid 
: public wxScrolledWindow
, public wxPropertyGridInterface
 
 361         Two step constructor. 
 362         Call Create() when this constructor is called to build up the wxPropertyGrid 
 368         The styles to be used are styles valid for the wxWindow and wxScrolledWindow. 
 370         @see @ref propgrid_window_styles. 
 372     wxPropertyGrid( wxWindow 
*parent
, wxWindowID id 
= wxID_ANY
, 
 373                     const wxPoint
& pos 
= wxDefaultPosition
, 
 374                     const wxSize
& size 
= wxDefaultSize
, 
 375                     long style 
= wxPG_DEFAULT_STYLE
, 
 376                     const wxChar
* name 
= wxPropertyGridNameStr 
); 
 379     virtual ~wxPropertyGrid(); 
 382         Adds given key combination to trigger given action. 
 385             Which action to trigger. See @ref propgrid_keyboard_actions. 
 387             Which keycode triggers the action. 
 389             Which key event modifiers, in addition to keycode, are needed to 
 392     void AddActionTrigger( int action
, int keycode
, int modifiers 
= 0 ); 
 395         This static function enables or disables automatic use of 
 396         wxGetTranslation() for following strings: wxEnumProperty list labels, 
 397         wxFlagsProperty child property labels. 
 401     static void AutoGetTranslation( bool enable 
); 
 404         Changes value of a property, as if from an editor. Use this instead of 
 405         SetPropertyValue() if you need the value to run through validation 
 406         process, and also send the property change event. 
 408         @return Returns true if value was successfully changed. 
 410     bool ChangePropertyValue( wxPGPropArg id
, wxVariant newValue 
); 
 413         Centers the splitter. If argument is true, automatic splitter centering 
 414         is enabled (only applicable if style wxPG_SPLITTER_AUTO_CENTER was 
 417     void CenterSplitter( bool enable_auto_centering 
= false ); 
 420         Deletes all properties. 
 422     virtual void Clear(); 
 425         Clears action triggers for given action. 
 428             Which action to trigger. @ref propgrid_keyboard_actions. 
 430     void ClearActionTriggers( int action 
); 
 433         Forces updating the value of property from the editor control. 
 434         Note that wxEVT_PG_CHANGING and wxEVT_PG_CHANGED are dispatched using 
 435         ProcessEvent, meaning your event handlers will be called immediately. 
 437         @return Returns @true if anything was changed. 
 439     virtual bool CommitChangesFromEditor( wxUint32 flags 
= 0 ); 
 442         Two step creation. Whenever the control is created without any 
 443         parameters, use Create to actually create it. Don't access the control's 
 444         public methods before this is called 
 446         @see @ref propgrid_window_styles. 
 448     bool Create( wxWindow 
*parent
, wxWindowID id 
= wxID_ANY
, 
 449                 const wxPoint
& pos 
= wxDefaultPosition
, 
 450                 const wxSize
& size 
= wxDefaultSize
, 
 451                 long style 
= wxPG_DEFAULT_STYLE
, 
 452                 const wxChar
* name 
= wxPropertyGridNameStr 
); 
 455         Call when editor widget's contents is modified. For example, this is 
 456         called when changes text in wxTextCtrl (used in wxStringProperty and 
 459         @remarks This function should only be called by custom properties. 
 461         @see wxPGProperty::OnEvent() 
 463     void EditorsValueWasModified(); 
 466         Reverse of EditorsValueWasModified(). 
 468         @remarks This function should only be called by custom properties. 
 470     void EditorsValueWasNotModified(); 
 473         Enables or disables (shows/hides) categories according to parameter 
 476         @remarks This functions deselects selected property, if any. Validation 
 477                 failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie. 
 478                 selection is cleared even if editor had invalid value. 
 480     bool EnableCategories( bool enable 
); 
 483         Scrolls and/or expands items to ensure that the given item is visible. 
 485         @return Returns @true if something was actually done. 
 487     bool EnsureVisible( wxPGPropArg id 
); 
 490         Reduces column sizes to minimum possible, while still retaining 
 491         fully visible grid contents (labels, images). 
 493         @return Minimum size for the grid to still display everything. 
 495         @remarks Does not work well with wxPG_SPLITTER_AUTO_CENTER window style. 
 497                 This function only works properly if grid size prior to call was 
 498                 already fairly large. 
 500                 Note that you can also get calculated column widths by calling 
 501                 GetState->GetColumnWidth() immediately after this function 
 507         Returns wxWindow that the properties are painted on, and which should be 
 508         used as the parent for editor controls. 
 510     wxPanel
* GetPanel() const; 
 513         Returns current category caption background colour. 
 515     wxColour 
GetCaptionBackgroundColour() const; 
 518         Returns current category caption font. 
 520     wxFont
& GetCaptionFont(); 
 523         Returns current category caption text colour. 
 525     wxColour 
GetCaptionForegroundColour() const; 
 528         Returns current cell background colour. 
 530     wxColour 
GetCellBackgroundColour() const; 
 533         Returns current cell text colour when disabled. 
 535     wxColour 
GetCellDisabledTextColour() const; 
 538         Returns current cell text colour. 
 540     wxColour 
GetCellTextColour() const; 
 543         Returns number of columns currently on grid. 
 545     unsigned int GetColumnCount() const; 
 548         Returns colour of empty space below properties. 
 550     wxColour 
GetEmptySpaceColour() const; 
 553         Returns height of highest characters of used font. 
 555     int GetFontHeight() const; 
 558         Returns pointer to itself. Dummy function that enables same kind 
 559         of code to use wxPropertyGrid and wxPropertyGridManager. 
 561     wxPropertyGrid
* GetGrid(); 
 564         Returns rectangle of custom paint image. 
 567             Return image rectangle for this property. 
 570             Which choice of property to use (each choice may have 
 573     wxRect 
GetImageRect( wxPGProperty
* property
, int item 
) const; 
 576         Returns size of the custom paint image in front of property. 
 579             Return image rectangle for this property. 
 580             If this argument is NULL, then preferred size is returned. 
 583             Which choice of property to use (each choice may have 
 586     wxSize 
GetImageSize( wxPGProperty
* property 
= NULL
, int item 
= -1 ) const; 
 589         Returns last item which could be iterated using given flags. 
 592             See @ref propgrid_iterator_flags. 
 594     wxPGProperty
* GetLastItem( int flags 
= wxPG_ITERATE_DEFAULT 
); 
 597         Returns colour of lines between cells. 
 599     wxColour 
GetLineColour() const; 
 602         Returns background colour of margin. 
 604     wxColour 
GetMarginColour() const; 
 607         Returns most up-to-date value of selected property. This will return 
 608         value different from GetSelectedProperty()->GetValue() only when text 
 609         editor is activate and string edited by user represents valid, 
 610         uncommitted property value. 
 612     wxVariant 
GetUncommittedPropertyValue(); 
 615         Returns "root property". It does not have name, etc. and it is not 
 616         visible. It is only useful for accessing its children. 
 618     wxPGProperty
* GetRoot() const; 
 621         Returns height of a single grid row (in pixels). 
 623     int GetRowHeight() const; 
 626         Returns currently selected property. 
 628     wxPGProperty
* GetSelectedProperty() const; 
 631         Returns currently selected property. 
 633     wxPGProperty
* GetSelection() const; 
 636         Returns current selection background colour. 
 638     wxColour 
GetSelectionBackgroundColour() const; 
 641         Returns current selection text colour. 
 643     wxColour 
GetSelectionForegroundColour() const; 
 646         Returns the property sort function (default is @NULL). 
 650     wxPGSortCallback 
GetSortFunction() const; 
 653         Returns current splitter x position. 
 655     int GetSplitterPosition() const; 
 658         Returns wxTextCtrl active in currently selected property, if any. Takes 
 659         wxOwnerDrawnComboBox into account. 
 661     wxTextCtrl
* GetEditorTextCtrl() const; 
 664         Returns current vertical spacing. 
 666     int GetVerticalSpacing() const; 
 669         Returns true if editor's value was marked modified. 
 671     bool IsEditorsValueModified() const; 
 674         Returns information about arbitrary position in the grid. 
 677             Coordinates in the virtual grid space. You may need to use 
 678             wxScrolledWindow::CalcScrolledPosition() for translating 
 679             wxPropertyGrid client coordinates into something this member 
 682     wxPropertyGridHitTestResult 
HitTest( const wxPoint
& pt 
) const; 
 685         Returns true if any property has been modified by the user. 
 687     bool IsAnyModified() const; 
 690         Returns @true if a property editor control has focus. 
 692     bool IsEditorFocused() const; 
 695         Returns true if updating is frozen (ie. Freeze() called but not 
 698     bool IsFrozen() const; 
 701         Refreshes any active editor control. 
 703     void RefreshEditor(); 
 706         Redraws given property. 
 708     virtual void RefreshProperty( wxPGProperty
* p 
); 
 711         Registers a new editor class. 
 713         @return Returns pointer  to the editor class instance that should be used. 
 715     static wxPGEditor
* RegisterEditorClass( wxPGEditor
* editor
, 
 716                                             const wxString
& name
, 
 717                                             bool noDefCheck 
= false ); 
 720         Resets all colours to the original system values. 
 725         Selects a property. Editor widget is automatically created, but 
 726         not focused unless focus is true. This will generate wxEVT_PG_SELECT 
 730             Property to select (name or pointer). 
 733             If @true, move keyboard focus to the created editor right away. 
 735         @return returns @true if selection finished successfully. Usually only 
 736         fails if current value in editor is not valid. 
 738         @see wxPropertyGrid::ClearSelection() 
 740     bool SelectProperty( wxPGPropArg id
, bool focus 
= false ); 
 743         Changes keyboard shortcut to push the editor button. 
 745         @remarks You can set default with keycode 0. Good value for the platform 
 746                 is guessed, but don't expect it to be very accurate. 
 748     void SetButtonShortcut( int keycode
, bool ctrlDown 
= false, bool altDown 
= false ); 
 751         Sets category caption background colour. 
 753     void SetCaptionBackgroundColour(const wxColour
& col
); 
 756         Sets category caption text colour. 
 758     void SetCaptionTextColour(const wxColour
& col
); 
 761         Sets default cell background colour - applies to property cells. 
 762         Note that appearance of editor widgets may not be affected. 
 764     void SetCellBackgroundColour(const wxColour
& col
); 
 767         Sets cell text colour for disabled properties. 
 769     void SetCellDisabledTextColour(const wxColour
& col
); 
 772         Sets default cell text colour - applies to property name and value text. 
 773         Note that appearance of editor widgets may not be affected. 
 775     void SetCellTextColour(const wxColour
& col
); 
 778         Set number of columns (2 or more). 
 780     void SetColumnCount( int colCount 
); 
 783         Sets the 'current' category - Append will add non-category properties 
 786     void SetCurrentCategory( wxPGPropArg id 
); 
 789         Sets colour of empty space below properties. 
 791     void SetEmptySpaceColour(const wxColour
& col
); 
 794         Sets colour of lines between cells. 
 796     void SetLineColour(const wxColour
& col
); 
 799         Sets background colour of margin. 
 801     void SetMarginColour(const wxColour
& col
); 
 804         Sets selection background colour - applies to selected property name 
 807     void SetSelectionBackgroundColour(const wxColour
& col
); 
 810         Sets selection foreground colour - applies to selected property name text. 
 812     void SetSelectionTextColour(const wxColour
& col
); 
 816         Sets the property sorting function. 
 819             The sorting function to be used. It should return a value greater 
 820             than 0 if position of p1 is after p2. So, for instance, when 
 821             comparing property names, you can use following implementation: 
 824                 int MyPropertySortFunction(wxPropertyGrid* propGrid, 
 828                     return p1->GetBaseName().compare( p2->GetBaseName() ); 
 833             Default property sort function sorts properties by their labels 
 834             (case-insensitively). 
 836         @see GetSortFunction, wxPropertyGridInterface::Sort, 
 837              wxPropertyGridInterface::SortChildren 
 839     void SetSortFunction( wxPGSortCallback sortFunction 
); 
 842         Sets x coordinate of the splitter. 
 844         @remarks Splitter position cannot exceed grid size, and therefore setting 
 845                 it during form creation may fail as initial grid size is often 
 846                 smaller than desired splitter position, especially when sizers 
 849     void SetSplitterPosition( int newxpos
, int col 
= 0 ); 
 852         Moves splitter as left as possible, while still allowing all 
 853         labels to be shown in full. 
 855         @param privateChildrenToo 
 856             If @false, will still allow private children to be cropped. 
 858     void SetSplitterLeft( bool privateChildrenToo 
= false ); 
 861         Sets vertical spacing. Can be 1, 2, or 3 - a value relative to font 
 862         height. Value of 2 should be default on most platforms. 
 864     void SetVerticalSpacing( int vspacing 
); 
 867         Shows an brief error message that is related to a property. 
 869     void ShowPropertyError( wxPGPropArg id
, const wxString
& msg 
); 
 874     @class wxPropertyGridEvent 
 876     A property grid event holds information about events associated with 
 877     wxPropertyGrid objects. 
 882 class wxPropertyGridEvent 
: public wxCommandEvent
 
 887     wxPropertyGridEvent(wxEventType commandType
=0, int id
=0); 
 889     /** Copy constructor. */ 
 890     wxPropertyGridEvent(const wxPropertyGridEvent
& event
); 
 893     ~wxPropertyGridEvent(); 
 896         Returns true if you can veto the action that the event is signaling. 
 898     bool CanVeto() const; 
 901         Returns highest level non-category, non-root parent of property for 
 902         which event occurred. Useful when you have nested properties with 
 905         @remarks If immediate parent is root or category, this will return the 
 908     wxPGProperty
* GetMainParent() const; 
 911         Returns property associated with this event. 
 913     wxPGProperty
* GetProperty() const; 
 916         Returns current validation failure flags. 
 918     wxPGVFBFlags 
GetValidationFailureBehavior() const; 
 921         Returns value that is about to be set for wxEVT_PG_CHANGING. 
 923     const wxVariant
& GetValue() const; 
 926         Set if event can be vetoed. 
 928     void SetCanVeto( bool canVeto 
); 
 930     /** Changes the property associated with this event. */ 
 931     void SetProperty( wxPGProperty
* p 
); 
 934         Set override validation failure behavior. Only effective if Veto() was 
 935         also called, and only allowed if event type is wxEVT_PG_CHANGING. 
 937     void SetValidationFailureBehavior( wxPGVFBFlags flags 
); 
 940         Sets custom failure message for this time only. Only applies if 
 941         wxPG_VFB_SHOW_MESSAGE is set in validation failure flags. 
 943     void SetValidationFailureMessage( const wxString
& message 
); 
 946         Call this from your event handler to veto action that the event is 
 947         signaling. You can only veto a shutdown if wxPropertyGridEvent::CanVeto() 
 950         @remarks Currently only wxEVT_PG_CHANGING supports vetoing. 
 952     void Veto( bool veto 
= true ); 
 955         Returns @true if event was vetoed. 
 957     bool WasVetoed() const;