Главная страница
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.032 c
6-79079
Xeon
2003-09-27 18:10
2003.11.24
Серверы (FTP, HTTP, IRC)


8-79070
JTAG
2003-07-28 13:39
2003.11.24
Преобразование текста в набор пикселов.


1-78998
Движняк
2003-11-13 22:21
2003.11.24
Слежение за приложением


1-78968
lamer666
2003-11-14 18:37
2003.11.24
Обработка OnClick у объектов


3-78809
Tumcoat
2003-11-05 03:30
2003.11.24
Проблема с бегунком DBGrid-а в dBase