Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
ВнизМожно ли по имени класса получит ссылку на класс и его методы Найти похожие ветки
← →
NewD (2003-11-14 10:00) [0]Можно ли по имени класса получит ссылку на класс и его методы.
Что-то вроде
если объявлен тип:
type
TForm1 = class(TForm)
далее в программе
procedure createForm(Sender: TObject);
var MyForm:variant;
begin
MyForm:=<функция возвращающая класс>("TForm1").create;
....
← →
MBo (2003-11-14 10:12) [1]FindClass, GetClass, RegisterClass
посмотри реализацию Application.CreateForm
← →
NewD (2003-11-14 10:23) [2]>MBo
уже пробовал так: вылезает ошибка ACCSESS VIOLATION и т.д.
var MyForm:tpersistent;
begin
try
MyForm:=getclass("TForm1").create; - здесь вылезает ошибка
tform(MyForm).ShowModal;
finally
MyForm.Free;
end
end;
что не так с кодом ?
← →
NewD (2003-11-14 10:31) [3]а в каком модуле
"посмотри реализацию Application.CreateForm"
← →
Zacho (2003-11-14 10:38) [4]
> NewD (14.11.03 10:23) [2]
Вот тебе простейший пример:
var
f:TForm;
begin
RegisterClass(TForm2);
f:=TFormClass(GetClass("TForm2")).Create(Self);
f.Show;
end;
← →
Юрий Зотов (2003-11-14 10:38) [5]> NewD (14.11.03 10:23) [2]
1. RegisterClass(es)
2. with TFormClass(FindClass("TForm1")).Create(...) do
try
ShowModal
finally
Free
end;
← →
NewD (2003-11-14 10:49) [6]Спасибо за код -
только почему то при ShowModal вылетает ошибка
код абсолтно такой как указали
← →
Юрий Зотов (2003-11-14 11:49) [7]Если ошибку дает не ShowModal, а FindClass, значит, Вы забыли вызвать RegisterClass(TForm1). Если же ее дает именно ShowModal, то ошибка в коде самой формы.
← →
NewD (2003-11-14 12:42) [8]Не пойму в чем проблема - так просто форма запускается,
акогда TFormClass(GetClass("TForm2")).Create(Self)
- нет
создал путую форму - так все работает
← →
Zacho (2003-11-14 12:49) [9]
> NewD (14.11.03 12:42) [8]
Приведи свой код полностью. И укажи, на какой строке именно ошибка.
← →
Юрий Зотов (2003-11-14 13:46) [10]И какое сообщение об ошибке вылетает. И желательно ТОЧНО, а не "что-то там типа ля-ля-ля."
Скорее всего, Вы не вызвали RegisterClass. И не использовали именно FindClass вместо GetClass (иначе бы получили точную диагностику).
Но гадать на кофейной гуще я, извините, больше не буду. Давайте точный код, точную строку ошибки и точный текст сообщения, тогда есть смысл разговаривать дальше.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c