Refer to this prior question/answer combo of mine. It's describing how to create a property editor for the IDE.
I've created another property editor for a completely different purpose. In this case, it's a glyph character selector of type String
(because it could contain more than one glyph character). Unlike my other one in mentioned question/answer, this one is very specific to a particular property on a particular TCollectionItem
class of mine.
All is good, and I can invoke this property editor for this particular property. However, I have a dilemma. The property editor, by nature, is directly related to a font. The user may choose a character (glyph) from a particular font. My property editor has the facility to change the font, and browse the glyphs contained within that font.
This component of mine also has the facility to specify the font, in a separate TFont
property. The problem arises when it comes to the combination of both my Glyph
property and Font
property being used in the very same property editor. When I invoke this editor for the Glyph
property, it also needs to know the Font
which it needs to use. On the contrary, when user chooses a font and glyph character in this editor, it also needs to update both the Glyph
and Font
properties.
Long story short, PropertyB
depends on PropertyA
. If PropertyA
changes, then PropertyB
will have an entirely different set of possible values. So, whatever editor I install in the IDE needs to allow the user to change both PropertyA
and PropertyB
at the same time.
How can I make a property editor have access to more than one property?
Solution 1
Instead of a property editor, implement a component editor. Such a component editor will have access to the entire component, not just a single property.
Solution 2
Wrap both of your properties inside of a dedicated
TPersistent
class, and then create aTClassProperty
property editor for this class instead. The individual properties will not actually invoke a property editor. Instead, their parentTPersistent
will invoke a combined property editor which has access to all the properties within this class. A good existing example is theTFont
editor.