Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.011 c
6-71793
Ренат
2003-07-22 16:18
2003.09.22
Отключиться от интернета


1-71746
Broot
2003-09-10 10:42
2003.09.22
Разбиение строкИ на стрОки


3-71481
Dush
2003-09-01 10:43
2003.09.22
Группировка данных


14-71883
Soft
2003-09-03 16:11
2003.09.22
Конкурс Гениев


1-71650
AVK2
2003-09-06 04:04
2003.09.22
2 варианта прерывания вложенного цикла. Какой правильнее?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский