Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Создание экземпляра "неизвестного" класса,   Найти похожие ветки 

 
stas ©   (2012-09-06 17:32) [0]

Есть такая функция, которая выполняет копирование объекта.

function TrmRoomCustom.Copy: TrmRoomCustom;
var r:TrmRoomCustom;
begin
if self.ClassType= TrmRoom then r:=TrmRoom.Create(parent);
if self.ClassType= TrmLRoom then r:=TrmLRoom.Create(parent);

Как сделать чтобы при вызови функции из наследника класса TrmRoomCustom, создавался экземпляр того класса, из которго вызвали функцию. Сейчас это реализовано через if, но это не правильно.


 
stas ©   (2012-09-06 17:33) [1]

Надеюсь понятно написал)


 
Rouse_ ©   (2012-09-06 17:44) [2]

R := self.ClassType.Create(Parent);


 
Palladin ©   (2012-09-06 17:55) [3]

))


 
stas ©   (2012-09-06 19:13) [4]

Rouse_ ©   (06.09.12 17:44) [2]
Говорит что Create без параметров должен быть.
А результат выполнения TObject.

Чтобы понятнее было попробовал тоже самое сделать с кнопкой,

var B:TButton;
begin
B:= TButton(Button1.ClassType.Create);
B.Parent:=self; //тут Access violation


 
anonimus   (2012-09-06 19:27) [5]

type
TRoomclass =class of TrmRoomCustom;

var
 cls: TRoomClass;

 cls:=TRoomClass(self.ClassType);
 newroom:=cls.Create(....);


 
stas ©   (2012-09-06 19:50) [6]

anonimus   (06.09.12 19:27) [5]
Спасибо, то что нужно!


 
Rouse_ ©   (2012-09-06 19:57) [7]


> Говорит что Create без параметров должен быть.

Угу, эт я уже в запарке не подумавши брякнул :)



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

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.086 c
15-1336509003
Юрий
2012-05-09 00:30
2013.03.22
С днем рождения ! 9 мая 2012 среда


15-1338625099
Омлет
2012-06-02 12:18
2013.03.22
Kuru-Kuru Nabe - кострюля с конвекционным самоперемешиванием


2-1328028334
alexdn
2012-01-31 20:45
2013.03.22
Canvas на Image


15-1353056660
stas
2012-11-16 13:04
2013.03.22
Chromium Embedded silent mode


15-1346699148
Artem
2012-09-03 23:05
2013.03.22
Чем можно протестировать COM-соединение между Win95 и Win7?