Вниз
Скачать: CL | DM;

Можно ли по имени класса получит ссылку на класс и его методы   Найти похожие ветки 

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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.018 c
6-79091
VadimEagle
2003-09-26 23:29
2003.11.24
Socket


6-79075
Mikka
2003-09-29 18:13
2003.11.24
Сокеты


1-79018
Ru
2003-11-13 16:52
2003.11.24
Как скопировать текст из JvxRichEdit?


4-79216
Iron Maiden
2003-09-28 16:50
2003.11.24
Создание рисованной программы.


3-78849
VitGel
2003-11-03 18:45
2003.11.24
Оперативно-учетная...




   Наверх