Вниз
Скачать: CL | DM;

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

 
Осирис ©   (2002-09-26 12:28) [0]

Несколько философский вопрос.

В Java можно создать объект - форму и создать от нее несколько наследников. Очень удобно. Создал форму с кнопкой и завязанной на нее функциональностью. Создал ее наследника в котором добавляется Edit и еще одного наследника, в котором добавляется ComboBox. Если нужно изменить функциональность связанную с кнопкой - меняем соответствующие методы в предке и все изменения "отображаются" на наследниках.

Как вы в данном случае поступаете в Delphi ?


Есть репозитарий объектов - не то. Формы созданные на основе репозитария объектов после создания уже никак не привязаны к "шаблону в репозитарии" и изменение шаблона уже никак не влияет на формы созданные на его основе.

Frame - уже ближе, может даже это и есть тот вариант - еще не понял до конца...

Ваше мнение ?


 
Осирис ©   (2002-09-26 12:35) [1]

Насчет Frame. Frame можно создать только на основе другого Frame(вставив другой Frame в новый). Но никак нельзясоздать новый Frame на основе формы. Для этого форму надо преобразовать в Frame и тогда... .. пожалуйста.


 
Старый паскалист   (2002-09-26 12:43) [2]

>Есть репозитарий объектов - не то.
А если попробовать поставить "Inherited"?

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



 
Осирис ©   (2002-09-26 12:54) [3]

>> только тогда нельзя будет редактировать потомка в дизайнере.

Что является очень большим минусом. Кроме того, не помещать же каждую форму в репозитарий.


 
kaif ©   (2002-09-26 14:40) [4]

Не нужно ничего помещать в репозиторий!
Наследование форм в Delphi - одна из самых мощных фишек.
От любой формы в составе проекта легко можно создать наследника и редактировать его визуально в IDE.
1.Для этого нужно нажать File|New... (В D6 File|New|Other...)
2.Выбрать закладку с именем проекта.
3.Выбрать форму-предка из списка.
4.Убедиться, что радиокнопка снизу в значении inherited
5.Нажать OK.
-----------------
То же самое, если повозиться, можно сделать руками, создав обычного наследника TForm и затем заменив в тексте определение
Form1 = class(TForm)
на
Form1 = class(TMyForm)
а в ресурсном *.dfm файле руками заменив object на inherited.
--------------------
Но сначала рекомендую первый вариант. А потом рекомендую взглянуть на dfm.


 
Юрий Зотов ©   (2002-09-26 15:07) [5]

> kaif © (26.09.02 14:40)
> Не нужно ничего помещать в репозиторий!
> 2.Выбрать закладку с именем проекта.

А если я хочу сделать базовую форму для ЛЮБОГО проекта?
Вот для этого и нужен репозиторий.


> Осирис © (26.09.02 12:54)

> Что является очень большим минусом.

Если не ставить птичку inherited.

> Кроме того, не помещать же каждую форму в репозитарий.

Зачем? В репозиторий помещаются "глобальные" базовые формы, которых много не бывает. А визуальное наследование в пределах одного проекта, как заметил kaif, и так доступно.


 
Guerrillero ©   (2002-09-26 17:31) [6]

а как насчет published св-в ???


 
Юрий Зотов ©   (2002-09-26 18:21) [7]

> Guerrillero © (26.09.02 17:31)
> а как насчет published св-в ???

Нормально, если форму грамотно зарегистрировать. Или воспользоваться готовым экспертом CFPack от Сергея Орлика.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.013 c
4-21334
Dimik
2002-08-21 01:24
2002.10.07
Могу ли я отображать на рабочем столе другую папку?


1-21059
Leny
2002-09-27 13:40
2002.10.07
кнопка закрытия


1-21058
X-Shadow
2002-09-24 19:16
2002.10.07
как в программе сделать так чтоб все ошибки не выводились?


1-20983
DuXe
2002-09-26 15:36
2002.10.07
Как перевести время (системное) на 30 сек. вперёд?


1-20966
copyr25
2002-09-26 11:00
2002.10.07
Cобытия компонент по индексу?




   Наверх