Вниз
Скачать: CL | DM;

Ссылка на класс?   Найти похожие ветки 

 
AlexanderSK   (2003-09-10 12:25) [0]

Можно ли сделать следующее:
функцию которая получает ссылку на клас, создает этот класс и возвращает указатель на него?

Если возможно то как это сделать?


 
Nikolay M. ©   (2003-09-10 12:30) [1]

Общий родитель для классов есть?


 
Кто-то   (2003-09-10 12:32) [2]

Если конструктор класса виртуальный, то можно.

function CreateComponent(AClass: TComponentClass; AOwner: TComponent): TComponent;
begin
Result := AClass.Create(AOwner)
end;

Пример вызова:
TEdit(CreateComponent(TEdit, Self)).Parent := Self;


 
AlexanderSK   (2003-09-10 12:35) [3]

>Nikolay M.
Да есть!


 
Кто-то   (2003-09-10 12:43) [4]

> AlexanderSK (10.09.03 12:35) [3]

Если общий класс - компонентский, то см. выше. Если нет, то сделайте так.

type
TMyBase - class(...)
...
public
constructor Create(...); virtual;
...
end;

TMyBaseClass = class of TMyBase;

А дальше - по уже приведенному примеру с заменой TComponent на TMyBase и TComponentClass на TMyBaseClass.


 
Nikolay M. ©   (2003-09-10 12:44) [5]

Ну так что мешает вызывать его?
Плюс можно посмотреть исходник TApplication.CreateForm - может это то, что нужно?


 
AlexanderSK   (2003-09-10 13:01) [6]

А как в этой же функции вызвать метод созданного объекта? В общем родителе этого метода нет!


 
Nikolay M. ©   (2003-09-10 13:06) [7]


> AlexanderSK (10.09.03 13:01) [6]

Имхо, что-то тут не так...
Создание любого объекта-родителя - это я могу понять. Но идеологически, с разными потомками и обращаться нужно по-разному. Опиши в целом, что делаешь?


 
Кто-то   (2003-09-10 13:11) [8]

> AlexanderSK (10.09.03 13:01) [6]

1. Можно сделайть в обшем родителе абстрактный метод.

2. Можно привести к конкретному классу (если он известен). См. выше - свойства Parent у TComponent тоже нет, но мы знаем, что реально создается TEdit - поэтому приводим полученный экземпляр к TEdit и назначаем Parent. Точно так же и с методами.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.063 c
14-71922
ruslan_as
2003-09-01 10:25
2003.09.22
Как послать сообщение (пароль) в окно открытия AcrobarReader-а


1-71681
acsoft
2003-09-11 12:07
2003.09.22
У кого-нибудь есть готовый алгоритм поиска файлов в Windows по им


9-71460
[Baradoo]
2003-03-20 22:22
2003.09.22
Как использовать DirectSound при создании таких эффектов как Echo


3-71510
konst
2003-09-01 09:35
2003.09.22
Ув. мастера помогите разобраться с MDI формами


1-71628
INTAARI
2003-09-11 14:48
2003.09.22
Как изменить цвет нескольких меток пользуясь свойством Components




   Наверх