Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.24;
Скачать: 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 вся ветка

Текущий архив: 2003.11.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.105 c
7-79189
di.ma2002@mail.ru
2003-09-01 06:23
2003.11.24
Разговор через модем


3-78784
Islander
2003-11-05 15:25
2003.11.24
Как проверить данные перед посылкой в БД, работая через ADO


7-79194
ZHK
2003-09-15 09:51
2003.11.24
Запуск сервиса из памяти


14-79128
DimChan
2003-11-01 09:52
2003.11.24
СРОЧНО НужнА ПомоЩь


3-78789
Term
2003-11-05 12:38
2003.11.24
QReport, помогите решить проблему....