Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];

Вниз

Создание формы по имени класса   Найти похожие ветки 

 
beg   (2007-06-21 14:26) [0]

т.е.
нечто вроде:
function TSomeClass.CreateFormByClassName(sClassName: String): TForm;
begin
 Result := ... //создаем и возвращем
end;

подскажите, в какую сторону посмотреть
и ссылочку на хороший сайт/статью/книгу по RTTI, пожалуйста, покажите
в поисковике информации - во множестве, но хочется проверенное руководство


 
Сергей М. ©   (2007-06-21 14:32) [1]

см. GetClass()


 
beg   (2007-06-21 14:57) [2]

хм

var
 SomeForm: TForm;
begin

 SomeForm := TForm(GetClass("TfrmGenre")).Create(Self);
end;

имеем AV


 
Ega23 ©   (2007-06-21 14:59) [3]


> SomeForm := TForm(GetClass("TfrmGenre")).Create(Self);
>
> имеем AV
>


Кто бы сомневался...


 
beg   (2007-06-21 15:00) [4]


> Кто бы сомневался...

подробности?


 
Ega23 ©   (2007-06-21 15:04) [5]


> подробности?


1. Чей конструктор вызываешь?
2. Кто у тебя Self?


 
Сергей М. ©   (2007-06-21 15:08) [6]


> имеем AV


И что ?

Отладчик Борландом для Пушкина писан ? Или все-таки для тебя ?


 
Евгений Р.   (2007-06-21 15:41) [7]

Когдато делал типа
 SomeForm := GetClass("TfrmGenre").Create(application) as tForm;
Но, кажется что-то ругался насчет ресурсного файла.


 
Ega23 ©   (2007-06-21 15:43) [8]


> SomeForm := GetClass("TfrmGenre").Create(application) as
> tForm;


Это уже другое дело, согласись...  :)


 
Сергей М. ©   (2007-06-21 15:49) [9]


> Когдато делал типа


Все мы "когдато делали типа")

В подгузники, например)

Отладчик, повторяю, тебе на что дан ? Чтобы лупиться на него как баран на новые ворота ?


 
beg   (2007-06-21 16:26) [10]

Ega23, спасибо
Сергей М., Вам - также
только "ещё нежнее", а то складывается ощущение, что я Вас принуждаю отвечать))


 
iXT ©   (2007-06-21 16:31) [11]

> а то складывается ощущение, что я Вас принуждаю отвечать)
> )

Не это они так принуждают работать мозги (чужие) :)


 
Ega23 ©   (2007-06-21 16:33) [12]


> только "ещё нежнее", а то складывается ощущение, что я Вас
> принуждаю отвечать))


Прежде, чем задавать вопрос имеет смысл попробовать разобраться самому. На что Серёга и намекал.


 
Сергей М. ©   (2007-06-21 16:33) [13]


> beg   (21.06.07 16:26) [10]



> я Вас принуждаю


Да что Вы ?! Да я вас умоляю - нет, нет и нет ! Ни в коЁм случае !

Просто AV имеет Вас, а не наоборот, как Вы изволили представить ситуацию)

А когда AV кого-то имеет, я не могу смотреть на это спокойно - общегражданский долг не позволяет)


 
Грициан   (2007-06-21 16:34) [14]

Желательно, если возникают такие вопросы, прочитать про паттерны проектирования. И реализовать свою фабрику классов. Чтобы не блуждать по граблям.


 
beg   (2007-06-22 08:52) [15]

iXT ©   (21.06.07 16:31) [11]
Ega23 ©   (21.06.07 16:33) [12]
Delphi открыл первый раз, ибо не занимаюсь разработкой посредством этого инструмента
вопрос задал в "начинающих"
поблагодарил искренне
так нет же - бездна эскападной иронии и безудержного сарказма от Сергей М.))
подавлен...


 
Ega23 ©   (2007-06-22 09:13) [16]


> Delphi открыл первый раз, ибо не занимаюсь разработкой посредством
> этого инструмента
> вопрос задал в "начинающих"
> поблагодарил искренне
> так нет же - бездна эскападной иронии и безудержного сарказма
> от Сергей М.))
> подавлен...
>


С одной стороны - да. С другой стороны - ты даже себе не представляешь, сколько в день таких вопросов тут задаётся...


 
Инс   (2007-06-22 09:23) [17]

AV вы получаете из-за того, что GetClass возвращает nil, так как не может найти незарегистрированный класс. Все имена классов, которые вы хотите подобным образом использовать зарегистрируйте с помощью RegisterClasses:

RegisterClasses([TfrmGenre]);
SomeForm := TForm(GetClass("TfrmGenre")).Create(Self);


 
beg   (2007-06-22 09:25) [18]

Ega23 ©   (22.06.07 09:13) [16]
т.е. я виновен в том, что Сергей пожелал мне высказать своё раздражение по поводу массы глупых вопросов в этом разделе форума?))
прекрасно понимаю, почему так поступают 17-летние "мегапрограммисты", но подобное поведение взрослого мужчины смущает
впрочем, прошу прощения, если кого-то обидел, ибо не моё это собачье
в общем, ещё раз благодарю Вас и Сергей М.


 
Инс   (2007-06-22 09:27) [19]

В дополнение [17]... Только ради Бога, не путайте RegisterClasses с RegisterComponents.


 
beg   (2007-06-22 09:28) [20]

Инс   (22.06.07 09:23) [17]
спасибо
вчера читал про RTTI, много думал и сделал)
по-ламерски, но сделал


 
Инс   (2007-06-22 09:29) [21]

И еще в дополнение... Так, как я написал, подряд RegisterClasses и GetClass - так в общем то не правильно. RegisterClasses нужно вызвать один раз, где-нибудь в OnCreate формы или в секции initialization


 
Ega23 ©   (2007-06-22 09:39) [22]


> т.е. я виновен в том, что Сергей пожелал мне высказать своё
> раздражение по поводу массы глупых вопросов в этом разделе
> форума?))


Я хочу сказать, что задавая вопрос, ты вполне можешь нарваться на такой ответ. Серёга, пожалуй, вчера палку перегнул. Но обижаться тебе на это, ИМХО, не стоит. Меня тоже бывает так несёт.
Если побольше на форум походишь - поймёшь. Не обижайся.


 
Ega23 ©   (2007-06-22 09:40) [23]


> вчера читал про RTTI, много думал и сделал)


А вот это - молодец.


 
Инс   (2007-06-22 09:43) [24]

Через RTTI? Страшно подумать! Неужели объявили свойство типа TfrmGenre в каком-либо классе, получили PTypeData, а потом выделили поле ClassType? Как иначе без первого предположния можно найти ссылку на класс по имени?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.046 c
2-1182437480
Delon
2007-06-21 18:51
2007.07.15
Добрый вечер уважаемые мастера! Прошу помочь разобраться.


2-1182622364
Алексин
2007-06-23 22:12
2007.07.15
цикл


15-1181022997
Суслик
2007-06-05 09:56
2007.07.15
Delphi 2007 update 1


2-1182516156
wezzz
2007-06-22 16:42
2007.07.15
Как получить имя каталога из имени файла?


15-1182248927
mmms
2007-06-19 14:28
2007.07.15
Как это будет на WSH(VBS)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский