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

Вниз

Создать свой потомок от TForm и проектировать потомки от него.   Найти похожие ветки 

 
Terasbetoni   (2008-09-01 18:48) [0]

Здравствуйте. Подскажите, пожалуйста, как сделать такое:
Создать класс-потомок от TForm (потомок будет содержать несколько полей типа integer в public) и чтобы потом от этого класса можно было создавать классы-потомки и проектировать их средствами визуального проектирования (как будто при проектировании потомка от обычного TForm)


 
Германн ©   (2008-09-01 20:46) [1]

You can add your own projects, forms, frames, and data modules to those already available in the Object Repository.


 
sniknik ©   (2008-09-01 21:30) [2]

File->New->Other->Progect1


 
Terasbetoni   (2008-09-17 19:38) [3]

Германн ©   (01.09.08 20:46) [1]
 А как это сделать?


 
Германн ©   (2008-09-17 19:52) [4]


>  А как это сделать?

Правой кнопкой мыши кликаем по форме. Пункт Add to Repository


 
Terasbetoni   (2008-09-18 16:46) [5]

Я хотел бы создать собственный класс от TForm, а потом уже наследоваться от него, а не от TForm (в вопросе я об этом написал). Если делать так, как написали вы, то при добавлении в проект заранее сделанной и добавленной в хранилище (Repository) формы, создается потомок от TForm, а всё его содержимое уже добавляется на него. А я же хочу, чтобы создавался потомок от, к примеру, класса TMyForm, который был спроектирован заранее (а не от TForm)


 
Jeer ©   (2008-09-18 16:49) [6]

Ничто не ограничивает вложенность классов, кроме мозговых ограничений.


 
Dennis I. Komarov ©   (2008-09-18 16:53) [7]

TMyForm1 = class(TMyForm)


 
KSergey ©   (2008-09-18 17:03) [8]

Короче, если наш "промежуточный" класс формы не содержит published свойств - делаем так:
Создаем юнит с нашим наследником от TForm (руками! т.е. должен быть только pas-файл). Прописываем туда необходимую функциональность.
Закрываем дельфи, добавляем в uses этот наш юнит в иниты с формами где надо пронаследоваться и заменяем с тексте pas-файлов наследование от TForm на наследование от нашего класса.
Открываем проект в дельфи - и вуаля!
(на сколько помню, в dfm-файле менять наследование не нужно).

PS
Как-то сам наткнулся на это.
А потом на каком-то русскоязычном дельфийском сайте этот "трюк" признали лучшим из присланных на конкурс, описание явно можно найти, но не помню где. Было досадно, что я не поучаствовал, думал это и так всем известно :)


 
KSergey ©   (2008-09-18 17:05) [9]

Пока набирал - Dennis I. Komarov уже написал это в стиле "Кр. - сестр. таланта." :)


 
Terasbetoni   (2008-09-18 17:40) [10]

Dennis I. Komarov ©   (18.09.08 16:53) [7] -- гениально...

KSergey ©   (18.09.08 17:03) [8]
А что, если форма содержит published-поля? То есть форма содержит компоненты, размещенные на ней во время дизайна...


 
Terasbetoni   (2008-09-18 17:46) [11]

Интересно, можно ли как то получить (автоматически) код создания компонентов, размещенных на форме во время дизайна, который выполняется автоматом перед OnCreate. Тогда этот код можно было бы просто вставить в начало того же OnCreate. Тогда бы трюк из [8] прокатил бы и с компонентами, размещенными на форме во время дизайна. Другое дело: мы их не будем видеть во время дизайна потомка...


 
Jeer ©   (2008-09-18 17:59) [12]


> Terasbetoni   (18.09.08 17:46) [11]


Может пора за книжки ?
Или хотя бы вникнуть в [1] ?


> создается потомок от TForm, а всё его содержимое уже добавляется
> на него


а use, copy, inherited там не заметил радио-кнопки ?


 
Dennis I. Komarov ©   (2008-09-18 18:02) [13]


> Terasbetoni   (18.09.08 17:40) [10]

И какие такие компоненты:
> размещенные на ней во время дизайна...
попадают
> published-поля

т.е. что есть в published и зачем?

зы Для примера бросил лабел и бутон - все нормуль...


> KSergey ©   (18.09.08 17:03) [8]

Я сейчас даже не закрывал дельфи, а просто TForm2 = class(TForm1), ну и с uses поиграться надо...


 
KSergey ©   (2008-09-19 10:57) [14]

> Terasbetoni   (18.09.08 17:40) [10]
> То есть форма содержит компоненты, размещенные на ней во время дизайна.

И? В репозиторий добавлять уже пробовал? В чем беда - я не пойму.

> Dennis I. Komarov ©   (18.09.08 18:02) [13]
> Я сейчас даже не закрывал дельфи, а просто TForm2 = class(TForm1),
>  ну и с uses поиграться надо...

А, ну значит я правильно помню и понимаю, что dfm править не надо в данном случае.
Но с закрыванием - прикольнее, больше на магию похоже :)


 
Плохиш ©   (2008-09-19 11:15) [15]


> Terasbetoni   (18.09.08 16:46) [5]
> Я хотел бы создать собственный класс от TForm, а потом уже
> наследоваться от него, а не от TForm (в вопросе я об этом
> написал). Если делать так, как написали вы, то при добавлении
> в проект заранее сделанной и добавленной в хранилище (Repository)
> формы, создается потомок от TForm,

У меня создаётся потомок от той формы, от которой я его наследую, что я делаю не так?


 
Terasbetoni   (2008-09-19 18:01) [16]

Спасибо



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

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

Наверх




Память: 0.48 MB
Время: 0.006 c
2-1221840146
Сергей
2008-09-19 20:02
2008.10.26
Как получить путь к файлу?


2-1221425519
Дима С
2008-09-15 00:51
2008.10.26
Событие изменния ComboBox-a


15-1220127613
Anatoly Podgoretsky
2008-08-31 00:20
2008.10.26
Система Рада


2-1221731916
cyborg
2008-09-18 13:58
2008.10.26
Нужен совет по выбору компонента


15-1219403756
tesseract
2008-08-22 15:15
2008.10.26
Футболочки :-) Чего-то вспомнилось.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский