Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.26;
Скачать: CL | DM;

Вниз

Создать свой потомок от 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
2-1221944652
Ruzzz
2008-09-21 01:04
2008.10.26
Unicode в D2009


2-1221557905
Fynjy
2008-09-16 13:38
2008.10.26
как перенести выбранное обозначение в другую форму?


2-1221643925
Андрей_1
2008-09-17 13:32
2008.10.26
Нажатие Bitbtn с клавиатуры


2-1221679625
SpinButton
2008-09-17 23:27
2008.10.26
SpinButton


2-1221392760
Scary
2008-09-14 15:46
2008.10.26
Из ресурса в скрытый файл