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 // ----------------------------------------------------------------------- 
 277     @class wxPropertyGrid 
 279     wxPropertyGrid is a specialized grid for editing properties - in other 
 280     words name = value pairs. List of ready-to-use property classes include 
 281     strings, numbers, flag sets, fonts, colours and many others. It is possible, 
 282     for example, to categorize properties, set up a complete tree-hierarchy, 
 283     add more than two columns, and set arbitrary per-property attributes. 
 285     Please note that most member functions are inherited and as such not 
 286     documented on this page. This means you will probably also want to read 
 287     wxPropertyGridInterface class reference. 
 289     See also @ref overview_propgrid. 
 291     @section propgrid_window_styles_ Window Styles 
 293     See @ref propgrid_window_styles. 
 295     @section propgrid_event_handling Event Handling 
 297     To process input from a property grid control, use these event handler macros 
 298     to direct input to member functions that take a wxPropertyGridEvent argument. 
 300     @beginEventTable{wxPropertyGridEvent} 
 301     @event{EVT_PG_SELECTED (id, func)} 
 302         Respond to wxEVT_PG_SELECTED event, generated when property value 
 303         has been changed by user. 
 304     @event{EVT_PG_CHANGING(id, func)} 
 305         Respond to wxEVT_PG_CHANGING event, generated when property value 
 306         is about to be changed by user. Use wxPropertyGridEvent::GetValue() 
 307         to take a peek at the pending value, and wxPropertyGridEvent::Veto() 
 308         to prevent change from taking place, if necessary. 
 309     @event{EVT_PG_HIGHLIGHTED(id, func)} 
 310         Respond to wxEVT_PG_HIGHLIGHTED event, which occurs when mouse 
 311         moves over a property. Event's property is NULL if hovered area does 
 312         not belong to any property. 
 313     @event{EVT_PG_RIGHT_CLICK(id, func)} 
 314         Respond to wxEVT_PG_RIGHT_CLICK event, which occurs when property is 
 315         clicked on with right mouse button. 
 316     @event{EVT_PG_DOUBLE_CLICK(id, func)} 
 317         Respond to wxEVT_PG_DOUBLE_CLICK event, which occurs when property is 
 318         double-clicked on with left mouse button. 
 319     @event{EVT_PG_ITEM_COLLAPSED(id, func)} 
 320         Respond to wxEVT_PG_ITEM_COLLAPSED event, generated when user collapses 
 321         a property or category. 
 322     @event{EVT_PG_ITEM_EXPANDED(id, func)} 
 323         Respond to wxEVT_PG_ITEM_EXPANDED event, generated when user expands 
 324         a property or category. 
 328     Use Freeze() and Thaw() respectively to disable and enable drawing. 
 329     This will also delay sorting etc. miscellaneous calculations to the last 
 334     @appearance{propertygrid.png} 
 336 class wxPropertyGrid 
: public wxScrolledWindow
, public wxPropertyGridInterface
 
 340         Two step constructor. 
 341         Call Create() when this constructor is called to build up the wxPropertyGrid 
 347         The styles to be used are styles valid for the wxWindow and wxScrolledWindow. 
 349         @see @ref propgrid_window_styles. 
 351     wxPropertyGrid( wxWindow 
*parent
, wxWindowID id 
= wxID_ANY
, 
 352                     const wxPoint
& pos 
= wxDefaultPosition
, 
 353                     const wxSize
& size 
= wxDefaultSize
, 
 354                     long style 
= wxPG_DEFAULT_STYLE
, 
 355                     const wxChar
* name 
= wxPropertyGridNameStr 
); 
 358     virtual ~wxPropertyGrid(); 
 361         Adds given key combination to trigger given action. 
 364             Which action to trigger. See @ref propgrid_keyboard_actions. 
 366             Which keycode triggers the action. 
 368             Which key event modifiers, in addition to keycode, are needed to 
 371     void AddActionTrigger( int action
, int keycode
, int modifiers 
= 0 ); 
 374         This static function enables or disables automatic use of 
 375         wxGetTranslation() for following strings: wxEnumProperty list labels, 
 376         wxFlagsProperty child property labels. 
 380     static void AutoGetTranslation( bool enable 
); 
 383         Changes value of a property, as if from an editor. Use this instead of 
 384         SetPropertyValue() if you need the value to run through validation 
 385         process, and also send the property change event. 
 387         @return Returns true if value was successfully changed. 
 389     bool ChangePropertyValue( wxPGPropArg id
, wxVariant newValue 
); 
 392         Centers the splitter. If argument is true, automatic splitter centering 
 393         is enabled (only applicable if style wxPG_SPLITTER_AUTO_CENTER was 
 396     void CenterSplitter( bool enable_auto_centering 
= false ); 
 399         Deletes all properties. 
 401     virtual void Clear(); 
 404         Clears action triggers for given action. 
 407             Which action to trigger. @ref propgrid_keyboard_actions. 
 409     void ClearActionTriggers( int action 
); 
 412         Forces updating the value of property from the editor control. 
 413         Note that wxEVT_PG_CHANGING and wxEVT_PG_CHANGED are dispatched using 
 414         ProcessEvent, meaning your event handlers will be called immediately. 
 416         @return Returns @true if anything was changed. 
 418     virtual bool CommitChangesFromEditor( wxUint32 flags 
= 0 ); 
 421         Two step creation. Whenever the control is created without any 
 422         parameters, use Create to actually create it. Don't access the control's 
 423         public methods before this is called 
 425         @see @ref propgrid_window_styles. 
 427     bool Create( wxWindow 
*parent
, wxWindowID id 
= wxID_ANY
, 
 428                 const wxPoint
& pos 
= wxDefaultPosition
, 
 429                 const wxSize
& size 
= wxDefaultSize
, 
 430                 long style 
= wxPG_DEFAULT_STYLE
, 
 431                 const wxChar
* name 
= wxPropertyGridNameStr 
); 
 434         Call when editor widget's contents is modified. For example, this is 
 435         called when changes text in wxTextCtrl (used in wxStringProperty and 
 438         @remarks This function should only be called by custom properties. 
 440         @see wxPGProperty::OnEvent() 
 442     void EditorsValueWasModified(); 
 445         Reverse of EditorsValueWasModified(). 
 447         @remarks This function should only be called by custom properties. 
 449     void EditorsValueWasNotModified(); 
 452         Enables or disables (shows/hides) categories according to parameter 
 455         @remarks This functions deselects selected property, if any. Validation 
 456                 failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie. 
 457                 selection is cleared even if editor had invalid value. 
 459     bool EnableCategories( bool enable 
); 
 462         Scrolls and/or expands items to ensure that the given item is visible. 
 464         @return Returns @true if something was actually done. 
 466     bool EnsureVisible( wxPGPropArg id 
); 
 469         Reduces column sizes to minimum possible, while still retaining 
 470         fully visible grid contents (labels, images). 
 472         @return Minimum size for the grid to still display everything. 
 474         @remarks Does not work well with wxPG_SPLITTER_AUTO_CENTER window style. 
 476                 This function only works properly if grid size prior to call was 
 477                 already fairly large. 
 479                 Note that you can also get calculated column widths by calling 
 480                 GetState->GetColumnWidth() immediately after this function 
 486         Returns wxWindow that the properties are painted on, and which should be 
 487         used as the parent for editor controls. 
 489     wxPanel
* GetPanel() const; 
 492         Returns current category caption background colour. 
 494     wxColour 
GetCaptionBackgroundColour() const; 
 497         Returns current category caption font. 
 499     wxFont
& GetCaptionFont(); 
 502         Returns current category caption text colour. 
 504     wxColour 
GetCaptionForegroundColour() const; 
 507         Returns current cell background colour. 
 509     wxColour 
GetCellBackgroundColour() const; 
 512         Returns current cell text colour when disabled. 
 514     wxColour 
GetCellDisabledTextColour() const; 
 517         Returns current cell text colour. 
 519     wxColour 
GetCellTextColour() const; 
 522         Returns number of columns currently on grid. 
 524     unsigned int GetColumnCount() const; 
 527         Returns colour of empty space below properties. 
 529     wxColour 
GetEmptySpaceColour() const; 
 532         Returns height of highest characters of used font. 
 534     int GetFontHeight() const; 
 537         Returns pointer to itself. Dummy function that enables same kind 
 538         of code to use wxPropertyGrid and wxPropertyGridManager. 
 540     wxPropertyGrid
* GetGrid(); 
 543         Returns rectangle of custom paint image. 
 546             Return image rectangle for this property. 
 549             Which choice of property to use (each choice may have 
 552     wxRect 
GetImageRect( wxPGProperty
* property
, int item 
) const; 
 555         Returns size of the custom paint image in front of property. 
 558             Return image rectangle for this property. 
 559             If this argument is NULL, then preferred size is returned. 
 562             Which choice of property to use (each choice may have 
 565     wxSize 
GetImageSize( wxPGProperty
* property 
= NULL
, int item 
= -1 ) const; 
 568         Returns last item which could be iterated using given flags. 
 571             See @ref propgrid_iterator_flags. 
 573     wxPGProperty
* GetLastItem( int flags 
= wxPG_ITERATE_DEFAULT 
); 
 576         Returns colour of lines between cells. 
 578     wxColour 
GetLineColour() const; 
 581         Returns background colour of margin. 
 583     wxColour 
GetMarginColour() const; 
 586         Returns most up-to-date value of selected property. This will return 
 587         value different from GetSelectedProperty()->GetValue() only when text 
 588         editor is activate and string edited by user represents valid, 
 589         uncommitted property value. 
 591     wxVariant 
GetUncommittedPropertyValue(); 
 594         Returns "root property". It does not have name, etc. and it is not 
 595         visible. It is only useful for accessing its children. 
 597     wxPGProperty
* GetRoot() const; 
 600         Returns height of a single grid row (in pixels). 
 602     int GetRowHeight() const; 
 605         Returns currently selected property. 
 607     wxPGProperty
* GetSelectedProperty() const; 
 610         Returns currently selected property. 
 612     wxPGProperty
* GetSelection() const; 
 615         Returns current selection background colour. 
 617     wxColour 
GetSelectionBackgroundColour() const; 
 620         Returns current selection text colour. 
 622     wxColour 
GetSelectionForegroundColour() const; 
 625         Returns current splitter x position. 
 627     int GetSplitterPosition() const; 
 630         Returns wxTextCtrl active in currently selected property, if any. Takes 
 631         wxOwnerDrawnComboBox into account. 
 633     wxTextCtrl
* GetEditorTextCtrl() const; 
 636         Returns current vertical spacing. 
 638     int GetVerticalSpacing() const; 
 641         Returns true if editor's value was marked modified. 
 643     bool IsEditorsValueModified() const; 
 646         Returns information about arbitrary position in the grid. 
 648     wxPropertyGridHitTestResult 
HitTest( const wxPoint
& pt 
) const; 
 651         Returns true if any property has been modified by the user. 
 653     bool IsAnyModified() const; 
 656         Returns true if updating is frozen (ie. Freeze() called but not 
 659     bool IsFrozen() const; 
 662         Redraws given property. 
 664     virtual void RefreshProperty( wxPGProperty
* p 
); 
 667         Registers a new editor class. 
 669         @return Returns pointer  to the editor class instance that should be used. 
 671     static wxPGEditor
* RegisterEditorClass( wxPGEditor
* editor
, 
 672                                             const wxString
& name
, 
 673                                             bool noDefCheck 
= false ); 
 676         Resets all colours to the original system values. 
 681         Selects a property. Editor widget is automatically created, but 
 682         not focused unless focus is true. This will generate wxEVT_PG_SELECT 
 686             Property to select (name or pointer). 
 689             If @true, move keyboard focus to the created editor right away. 
 691         @return returns @true if selection finished successfully. Usually only 
 692         fails if current value in editor is not valid. 
 694         @see wxPropertyGrid::ClearSelection() 
 696     bool SelectProperty( wxPGPropArg id
, bool focus 
= false ); 
 699         Changes keyboard shortcut to push the editor button. 
 701         @remarks You can set default with keycode 0. Good value for the platform 
 702                 is guessed, but don't expect it to be very accurate. 
 704     void SetButtonShortcut( int keycode
, bool ctrlDown 
= false, bool altDown 
= false ); 
 707         Sets category caption background colour. 
 709     void SetCaptionBackgroundColour(const wxColour
& col
); 
 712         Sets category caption text colour. 
 714     void SetCaptionTextColour(const wxColour
& col
); 
 717         Sets default cell background colour - applies to property cells. 
 718         Note that appearance of editor widgets may not be affected. 
 720     void SetCellBackgroundColour(const wxColour
& col
); 
 723         Sets cell text colour for disabled properties. 
 725     void SetCellDisabledTextColour(const wxColour
& col
); 
 728         Sets default cell text colour - applies to property name and value text. 
 729         Note that appearance of editor widgets may not be affected. 
 731     void SetCellTextColour(const wxColour
& col
); 
 734         Set number of columns (2 or more). 
 736     void SetColumnCount( int colCount 
); 
 739         Sets the 'current' category - Append will add non-category properties 
 742     void SetCurrentCategory( wxPGPropArg id 
); 
 745         Sets colour of empty space below properties. 
 747     void SetEmptySpaceColour(const wxColour
& col
); 
 750         Sets colour of lines between cells. 
 752     void SetLineColour(const wxColour
& col
); 
 755         Sets background colour of margin. 
 757     void SetMarginColour(const wxColour
& col
); 
 760         Sets selection background colour - applies to selected property name 
 763     void SetSelectionBackgroundColour(const wxColour
& col
); 
 766         Sets selection foreground colour - applies to selected property name text. 
 768     void SetSelectionTextColour(const wxColour
& col
); 
 771         Sets x coordinate of the splitter. 
 773         @remarks Splitter position cannot exceed grid size, and therefore setting 
 774                 it during form creation may fail as initial grid size is often 
 775                 smaller than desired splitter position, especially when sizers 
 778     void SetSplitterPosition( int newxpos
, int col 
= 0 ); 
 781         Moves splitter as left as possible, while still allowing all 
 782         labels to be shown in full. 
 784         @param privateChildrenToo 
 785             If @false, will still allow private children to be cropped. 
 787     void SetSplitterLeft( bool privateChildrenToo 
= false ); 
 790         Sets vertical spacing. Can be 1, 2, or 3 - a value relative to font 
 791         height. Value of 2 should be default on most platforms. 
 793     void SetVerticalSpacing( int vspacing 
); 
 796         Shows an brief error message that is related to a property. 
 798     void ShowPropertyError( wxPGPropArg id
, const wxString
& msg 
); 
 801         Sorts all items at all levels (except private children). 
 803         @remarks This functions deselects selected property, if any. Validation 
 804                 failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie. 
 805                 selection is cleared even if editor had invalid value. 
 810         Sorts children of a property. 
 812         @remarks This functions deselects selected property, if any. Validation 
 813                 failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie. 
 814                 selection is cleared even if editor had invalid value. 
 816     void SortChildren( wxPGPropArg id 
); 
 821     @class wxPropertyGridEvent 
 823     A property grid event holds information about events associated with 
 824     wxPropertyGrid objects. 
 829 class wxPropertyGridEvent 
: public wxCommandEvent
 
 834     wxPropertyGridEvent(wxEventType commandType
=0, int id
=0); 
 836     /** Copy constructor. */ 
 837     wxPropertyGridEvent(const wxPropertyGridEvent
& event
); 
 840     ~wxPropertyGridEvent(); 
 843         Returns true if you can veto the action that the event is signaling. 
 845     bool CanVeto() const; 
 848     virtual wxEvent
* Clone() const; 
 851         Returns highest level non-category, non-root parent of property for 
 852         which event occurred. Useful when you have nested properties with 
 855         @remarks If immediate parent is root or category, this will return the 
 858     wxPGProperty
* GetMainParent() const; 
 861         Returns property associated with this event. 
 863     wxPGProperty
* GetProperty() const; 
 866         Returns current validation failure flags. 
 868     wxPGVFBFlags 
GetValidationFailureBehavior() const; 
 871         Returns value that is about to be set for wxEVT_PG_CHANGING. 
 873     const wxVariant
& GetValue() const; 
 876         Set if event can be vetoed. 
 878     void SetCanVeto( bool canVeto 
); 
 880     /** Changes the property associated with this event. */ 
 881     void SetProperty( wxPGProperty
* p 
); 
 884         Set override validation failure behavior. Only effective if Veto() was 
 885         also called, and only allowed if event type is wxEVT_PG_CHANGING. 
 887     void SetValidationFailureBehavior( wxPGVFBFlags flags 
); 
 890         Sets custom failure message for this time only. Only applies if 
 891         wxPG_VFB_SHOW_MESSAGE is set in validation failure flags. 
 893     void SetValidationFailureMessage( const wxString
& message 
); 
 896         Call this from your event handler to veto action that the event is 
 897         signaling. You can only veto a shutdown if wxPropertyGridEvent::CanVeto() 
 900         @remarks Currently only wxEVT_PG_CHANGING supports vetoing. 
 902     void Veto( bool veto 
= true ); 
 905         Returns @true if event was vetoed. 
 907     bool WasVetoed() const;