Форум: "Начинающим";
Текущий архив: 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.005 c