![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Есть форма 1 и форма 2 которая основана на форме 1 (наследует).
а) Есть ли какая то простая функция в Delphi XE, позволяющая находясь в форме 2 сделать её автономной, то есть подклеить в форму 2 всё, что унаследовано из формы 1 ? УЖЕ ЕСТЬ 2 формы. Хочу сделать, чтобы форма 2 стала независимой от формы 1, но при этом сохранила в себе всё из формы 1 ! То есть в форму 2 как бы подклеить всё (объекты, компоненты, код) из формы 1. б) Можно как-то находясь в форме 2.dfm сбросить настройки и положение некоторых объектов, которые были унаследованы из формы 1 ? Например в родительской форме 1 есть Tlabel, в форме 2 его случайно подвинули и он сразу прописался в 2.dfm. Как убрать его повторное описание из 2.dfm (таким образом вернув ему положение как в родительской форме 1)? ------------ нашёл правая кнопка мышки на объекте - "Revert to inherited". Последний раз редактировалось delphicoding, 21.07.2011 в 15:00. |
#2
|
|||
|
|||
![]() Так есть ли в Delphi XE функция для "а)" ?
|
#3
|
||||
|
||||
![]() inherited;
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#4
|
|||
|
|||
![]() УЖЕ ЕСТЬ 2 формы - 1 родительская и 2 дочерняя. Хочу сделать, чтобы форма 2 стала независимой от формы 1, но при этом сохранила в себе всё из формы 1 ! То есть в форму 2 как бы подклеить всё наследуемое (объекты, компоненты, код) из формы 1.
|
#5
|
||||
|
||||
![]() Сделай у них общего предка.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#6
|
|||
|
|||
![]() ![]() |
#7
|
||||
|
||||
![]() Насколько я понял форма2 не должна быть наследуемой, но содержать то же что и форма1, тогда её проще скопировать, по моему
- Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! |
#8
|
|||
|
|||
![]() Viajero
Всё правильно понял. Скопировать понятно, но это как-то очень тупо, особенно когда каждая из форм содержит по 100объектов и по 1000-2000строк... надеялся что хоть это в Delphi автоматизировали... видимо нет... ![]() |
#9
|
||||
|
||||
![]() Цитата:
есть Forma1 делаю File/Save as ... Forma2 При этом создаются файлы для Forma2 (название юнита меняется а имя формы в свойствах надо самому поменять), а файлы для Forma1 не стираются, но остаются не подключенными. Далее Project/Add Forma1 - Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! |
#10
|
|||
|
|||
![]() Delphi конечно порой поражает тупизной... много конечно различных удобств и заведомо проще в работе чем C++, но иногда всё же Delphi бесит...
В общем после длительного ковыряния самый удобный вариант склеивания наследуемых форм такой: 1. Берём форму самую последнюю из наследуемых (самую сложную), создаём новую пустую, копируем на новую форму сначала все невизуальные объекты (тк объекты класса DataSource и DataSet будут нужны при копировании объектов визуальных), затем копируем все визуальные компоненты. Ура, в новой форме уже есть ВСЕ объекты из ВСЕХ многочисленных родительских форм (от первой родительской до последней дочерней)! 2. Вот тут сильный приступ тупизны случился у разработчиков Delphi и не менее сильный приступ ненависти у писателя - увы Delphi не умеет копировать вместе с объектом назначенный на его события код типа OnButtonClick итп. Теперь нужно вручную прописать назначения кода на события и перенести код... (тут возникает второй приступ ненависти к Delphi, тк когда смотришь на последнюю дочернюю форму и видишь назначенный код - никаким образом нельзя понять в какой поколении родительской формы этот код написан... приходится перебирать каждый родительский юнит, млять!) 3. Чистка и склейка кода, тк опять (приступ ненависти) в Delphi нет автосклейки наследуемого кода - это когда находится две одинаково называющиеся процедуры и от дочернего к первому родителю происходит совмещение/наложение кода в местах где указано inherited/override/итд. В общей сложности склейка сложной формы с сотней полей, тремя родителями и множество данных - заняло около целого дня. (приступ бешенства) А могло бы занять 10-30минут, если бы Embarcadero не бежало за C++, а продолжало дорабатывать Delphi... ![]() Последний раз редактировалось delphicoding, 25.07.2011 в 18:42. |
#11
|
||||
|
||||
![]() Offtop
Ядом, вы брызгаться научились, а вот учиться программировать желания нет. Отсюда и все проблемы. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#12
|
|||
|
|||
![]() ![]() ![]() |
#13
|
|||
|
|||
![]() в итоге нихрена форма не пашет после объединения... когда открывается для редактирования - всё ок, но когда открывается пустая для ввоад новых данных - все поля как бы неработают - списки создаваемые из данных БД пустые... итд. блин, фигли не сделали автосклейку наследуемых форм?! в авторежиме это задача простейшая!! а вручную охренеть...
![]() |
#14
|
||||
|
||||
![]() Чтобы что то получилось, нужно знать возможности языка, а не кричать:
Цитата:
![]() Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#15
|
|||
|
|||
![]() Да ладно, я понимаю Ваши чувства, но некоторые моменты в Delphi всё же сделаны неудобно или просто ещё не сделаны, хотя за такой срок всё должно было быть уже на своих местах...
Учить (читать книги) по каждому языку с которым сейчас сталкиваешься (программы 4шт, БД 3шт, интернет 4шт, спецязыки 2шт) уже просто нереально ![]() |