delphiooppropertiesreferencefpc

Class Reference as Property


Google is useless for these sorts of searches, because you get hundreds of millions of results absolutely none of which relate to the specific question.

The question is simply this:

Here's what I've tried...

type

  TMyObject = class
    // ...
  end;

  TMyObjectClass = class of TMyObject

  TMyObjectA = class(TMyObject)
    // specifics here
  end;

  TMyObjectB  =class(TMyObject)
    // specifics here
  end;

  TMyComponent = class(TComponent)
  private
    FObjectType: TMyObjectClass;
  published
    property ObjectType: TMyObjectClass read FObjectType write FObjectType;
  end;

The above code compiles fine, however the Object Inspector does not show the ObjectType property at all.

My objective here (if you haven't already guessed) is to make it so that I can select a class descendant from a specific base class, to make the same component behave in a different way.

I want to do it this way so that the component doesn't need to know about the sub-classes directly (it needs to be fully modular).

Let me just make this bit clear: I cannot use an Enum to choose between the sub-class types as the component cannot directly link to the sub-class types (It's simply not possible in this particular case)

Anyway... thanks in advance!


Solution

  • You can find all classes that descend from a particular base class: Delphi: At runtime find classes that descend from a given base class? and make this a special property with list of values using TPropertyEditor.