Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Внизсоздание экземпляров класса по его наименованию. Найти похожие ветки
← →
Vitalik (2004-07-08 13:01) [0]Привет!
У меня есть базовый класс, например TMyClass. У него есть несколько потомков. НАпример TMyClass1 = class(TMyClass), TMyClass2 = class(TMyClass), TMyClass3 = class(TMyClass) и т.д.
TMyClass абстрактный. Потомки загружаются из файла.
Мне нужно, чтобы в файле, кроме свойств самих классов также хранилась информация о том, какой это из наследников. Например, в виде строки типа "TMyClass1".
Потомки должны создаваться как экземпляры того или иного класса непосредственно перед считыванием из файла всех свойств.
То есть, если в файле написано, что сохранён экземпляр класса "TMyClass1", то сначала создавался бы экземпляр именно этого класса, а потом уж загружались все его свойства.
Я понимаю, что можно это всё сделать при помощи оператора case. Но интересен другой подход.
Например, что-то такое.
function createClass(AClassName: String): TMyClass;
var
c: TClass;
My: TMyClass;
begin
c: =FindClass(AClassName);
My := c.create;
result := my;
end;
Ну вот как-то так. Потому что наследников будет много, и хочется это дело автоматизировать.
Спасибо!
← →
Тимохов © (2004-07-08 13:06) [1]посмотри в f1
registerclass findclass
← →
cae © (2004-07-08 15:27) [2]procedure TForm1.BitBtn2Click(Sender: TObject);
var
Reference : TComponentClass;
Tc : TComponent ;
Class_ : TClass;
begin
Class_ := GetClass("TEdit");
if Class_ = nil then
begin
ShowMessage("Класс не зарегистрирован !") ;
// чтобы этого не происходило, нужно ранее указать - RegisterClass(TEdit);
exit ;
end ; // if Class_ = nil
Reference := TComponentClass(Class_);
Tc := Reference.Create(Self) ;
if Tc is TControl then
with TC as TControl do
begin
Parent := Self ;
Left := 10;
Top := 10 ;
end // with
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c