Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Получение ссылки на класс из объекта 2

Delphi , Компоненты и Классы , Классы

Получение ссылки на класс из объекта 2

Автор: Pat Ritchey

Мне необходимо получить ссылку на класс из объекта...


TObject.ClassType

var
  ClassRef : TComponentClass;
  NewComp:TComponent;
begin
  TClass(ClassRef) := Sender.ClassType;
  NewComp := ClassRef.Create(Self);
...

Бессмертная поиска элитного свойства Class! В Delphi можно получить ссылку на класс объекта с помощью свойства ClassType. В этом конкретном коде, Sender - это объект, представляющий отправителя события, а ClassType возвращает информацию о типе объекта. В более подробном описании: 1. TClass( ClassRef ) := Sender.ClassType; * Sender.ClassType возвращает объект TClass, который представляет класс Sender. * Присваивание := кастует этот объект TClass в ссылку на TComponentClass, которая хранится в ClassRef. Это потому, что TComponentClass - это подкласс TClass, и мы заинтересованы в компонент-специфической информации. 2. NewComp := ClassRef.Create( Self ); * Мы создаем новый экземпляр класса, ссылку на который хранится в ClassRef, используя метод Create. * Параметр (Self) передается конструктору, что позволяет инициализировать новый объект с помощью текущего (Self) объекта как родителя или контекста. В целом, этот код использует свойство ClassType для получения ссылки на класс объекта (в этом случае, отправителя события) и затем создает новый экземпляр этого класса с помощью метода Create. Это распространенный паттерн в программировании Delphi, когда вам нужно динамически создавать объекты на основе информации о их классе. В отношении альтернативных решений есть несколько способов достичь схожих результатов: * Вместо использования Sender.ClassType, вы можете использовать свойство ClassType объекта напрямую: TClass( NewComp ) := MyObject.ClassType; * Если у вас есть конкретный тип, известный на этапе компиляции, вы можете просто кастовать объект в тот тип: MyObject as TMyComponent. Однако в этом частном случае использование Sender.ClassType является наиболее элегантным и гибким решением, потому что оно позволяет работать с объектами любого класса, наследующегося от TComponent.

Автор статьи Pat Ritchey описывает способ получения ссылки на класс из объекта, используя метод TObject.ClassType и создания нового объекта с помощью вызова Create.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Классы ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 21:27:48/0.006749153137207/2