Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


stas ©   (2012-09-06 17:32:00) 

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

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, но это не правильно.


Rouse_   (2012-09-06 19:57:00) [1]


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

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


stas   (2012-09-06 19:50:00) [2]

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


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

type
TRoomclass =class of TrmRoomCustom;

var
 cls: TRoomClass;

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


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

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

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

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


Palladin   (2012-09-06 17:55:00) [5]

))


Rouse_   (2012-09-06 17:44:00) [6]

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


stas   (2012-09-06 17:33:00) [7]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо