pg->Append( new wxEnumProperty(wxT("Secondary Diet"),
                                    wxPG_LABEL,
                                    chs) );
-
 @endcode
 
-You can later change choices of property by using wxPGProperty::InsertChoice(),
-wxPGProperty::DeleteChoice(), and wxPGProperty::SetChoices().
+You can later change choices of property by using wxPGProperty::AddChoice(),
+wxPGProperty::InsertChoice(), wxPGProperty::DeleteChoice(), and
+wxPGProperty::SetChoices().
 
 <b>wxEditEnumProperty</b> is works exactly like wxEnumProperty, except
 is uses non-readonly combobox as default editor, and value is stored as
 
 wxValidator* NAME::DoGetValidator () const \
 { return (wxValidator*) NULL; }
 
-// -----------------------------------------------------------------------
-
-#define WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY_WITH_DECL(CLASSNAME,DECL) \
-DECL CLASSNAME : public wxFlagsProperty \
-{ \
-    WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \
-public: \
-    CLASSNAME( const wxString& label = wxPG_LABEL, \
-               const wxString& name = wxPG_LABEL, \
-               long value = -1 ); \
-    virtual ~CLASSNAME(); \
-};
-
-#define WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY(CLASSNAME) \
-WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY_WITH_DECL(CLASSNAME, class)
-
-// This will create interface for wxFlagsProperty derived class
-// named CLASSNAME.
-#define WX_PG_IMPLEMENT_CUSTOM_FLAGS_PROPERTY(CLASSNAME,LABELS,VALUES,DEFVAL) \
-WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME,wxFlagsProperty,long_##CLASSNAME,\
-                               long,TextCtrl) \
-CLASSNAME::CLASSNAME( const wxString& label, \
-                      const wxString& name, \
-                      long value ) \
-    : wxFlagsProperty(label,name,LABELS,VALUES,value!=-1?value:DEFVAL) \
-{ \
-    m_flags |= wxPG_PROP_STATIC_CHOICES; \
-} \
-CLASSNAME::~CLASSNAME() { }
-
-
-// -----------------------------------------------------------------------
-
-#define WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY_WITH_DECL(CLASSNAME, DECL) \
-class CLASSNAME : public wxEnumProperty \
-{ \
-    WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \
-public: \
-    CLASSNAME( const wxString& label = wxPG_LABEL, \
-               const wxString& name = wxPG_LABEL, \
-               int value = -1 ); \
-    virtual ~CLASSNAME(); \
-};
-
-#define WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY(CLASSNAME) \
-WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY_WITH_DECL(CLASSNAME, class)
-
-#define WX_PG_IMPLEMENT_CUSTOM_ENUM_PROPERTY(CLASSNAME,LABELS,VALUES,DEFVAL) \
-WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME, wxEnumProperty, long_##CLASSNAME, \
-                               int, Choice) \
-CLASSNAME::CLASSNAME( const wxString& label, const wxString& name, int value ) \
-    : wxEnumProperty(label,name,LABELS,VALUES,value!=-1?value:DEFVAL) \
-{ \
-    m_flags |= wxPG_PROP_STATIC_CHOICES; \
-} \
-CLASSNAME::~CLASSNAME() { }
-
-
 // -----------------------------------------------------------------------
 
 #define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_WITH_DECL(CLASSNAME, DECL) \
 
     wxPropertyGridManager* pgman = m_pPropGridManager;
     wxPropertyGridPage* pg = pgman->GetPage(wxT("Examples"));
     wxPGProperty* pid;
+    wxPGProperty* prop;
 
     //pg->Append( new wxPropertyCategory(wxT("Examples (low priority)"),wxT("Examples")) );
     //pg->SetPropertyHelpString ( wxT("Examples"), wxT("This category has example of (almost) every built-in property class.") );
 
     // A file selector property. Note that argument between name
     // and initial value is wildcard (format same as in wxFileDialog).
-    wxPGProperty* prop = new wxFileProperty( wxT("FileProperty"), wxT("TextFile") );
+    prop = new wxFileProperty( wxT("FileProperty"), wxT("TextFile") );
     pg->Append( prop );
 
     prop->SetAttribute(wxPG_FILE_WILDCARD,wxT("Text Files (*.txt)|*.txt"));
                                   240) );
     pg->GetProperty(wxT("EnumProperty 2"))->AddChoice(wxT("Testing Extra"), 360);
 
-    // Add a second time to test that the caching works
-    pg->Append( new wxEnumProperty(wxT("EnumProperty 3"),wxPG_LABEL,
-        soc, 360 ) );
-    pg->SetPropertyHelpString(wxT("EnumProperty 3"),
+    // Add a second time to test that the caching works. Also use
+    // short form of constructor list + SetChoices.
+    prop = new wxEnumProperty(wxT("EnumProperty 3"), wxPG_LABEL);
+    pg->Append( prop );
+    prop->SetChoices(soc);
+    prop->SetValue(360);
+    pg->SetPropertyHelpString(prop,
         wxT("Should have same choices as EnumProperty 2"));
 
     pg->Append( new wxEnumProperty(wxT("EnumProperty 4"),wxPG_LABEL,
 
 #include "sampleprops.h"
 
 
-// -----------------------------------------------------------------------
-// Declare custom test properties
-// -----------------------------------------------------------------------
-
-WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY(wxTestCustomFlagsProperty)
-
-WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY(wxTestCustomEnumProperty)
-
-
 // -----------------------------------------------------------------------
 // wxTestCustomFlagsProperty
 // -----------------------------------------------------------------------
     wxFRAME_SHAPED
 };
 
-
-WX_PG_IMPLEMENT_CUSTOM_FLAGS_PROPERTY(wxTestCustomFlagsProperty,
-                                      _fs_framestyle_labels,
-                                      _fs_framestyle_values,
-                                      wxDEFAULT_FRAME_STYLE)
-
-WX_PG_IMPLEMENT_CUSTOM_ENUM_PROPERTY(wxTestCustomEnumProperty,
-                                      _fs_framestyle_labels,
-                                      _fs_framestyle_values,
-                                      wxCAPTION)
-
-
 // Colour labels. Last (before NULL, if any) must be Custom.
 static const wxChar* mycolprop_labels[] = {
     wxT("Black"),
 
 void FormMain::AddTestProperties( wxPropertyGridPage* pg )
 {
-    pg->Append( new wxTestCustomFlagsProperty(wxT("Custom FlagsProperty"), wxPG_LABEL ) );
-    pg->SetPropertyEditor( wxT("Custom FlagsProperty"), wxPG_EDITOR(TextCtrlAndButton) );
-
-    pg->Append( new wxTestCustomEnumProperty(wxT("Custom EnumProperty"), wxPG_LABEL ) );
-
     pg->Append( new wxMyColourProperty(wxT("CustomColourProperty1")) );
 
     pg->SetPropertyHelpString(wxT("CustomColourProperty1"),