Google бесполезен для таких поисков, потому что вы получаете сотни миллионов результатов, абсолютно ни один из которых не относится к конкретному вопросу.
Вопрос просто в следующем:
- Возможно ли иметь свойство ссылки на класс в Delphi?
- Если да, то как?
Вот что я пробовал...
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;
Приведенный выше код компилируется нормально, однако инспектор объектов вообще не показывает свойство ObjectType
.
Моя цель здесь (если вы еще не догадались) состоит в том, чтобы сделать так, чтобы я мог выбрать потомка класса из определенного базового класса, чтобы заставить один и тот же компонент вести себя по-другому.
Я хочу сделать это таким образом, чтобы компоненту не нужно было напрямую знать о подклассах (он должен быть полностью модульным).
Позвольте мне пояснить: Я не могу использовать Enum для выбора между типами подклассов, поскольку компонент не может напрямую ссылаться на типы подклассов (Это просто невозможно в этом частный случай)
В любом случае... заранее спасибо!