Показать сообщение отдельно
  #10  
Старый 25.07.2011, 18:36
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

Delphi конечно порой поражает тупизной... много конечно различных удобств и заведомо проще в работе чем C++, но иногда всё же Delphi бесит...

В общем после длительного ковыряния самый удобный вариант склеивания наследуемых форм такой:
1. Берём форму самую последнюю из наследуемых (самую сложную), создаём новую пустую, копируем на новую форму сначала все невизуальные объекты (тк объекты класса DataSource и DataSet будут нужны при копировании объектов визуальных), затем копируем все визуальные компоненты. Ура, в новой форме уже есть ВСЕ объекты из ВСЕХ многочисленных родительских форм (от первой родительской до последней дочерней)!
2. Вот тут сильный приступ тупизны случился у разработчиков Delphi и не менее сильный приступ ненависти у писателя - увы Delphi не умеет копировать вместе с объектом назначенный на его события код типа OnButtonClick итп. Теперь нужно вручную прописать назначения кода на события и перенести код... (тут возникает второй приступ ненависти к Delphi, тк когда смотришь на последнюю дочернюю форму и видишь назначенный код - никаким образом нельзя понять в какой поколении родительской формы этот код написан... приходится перебирать каждый родительский юнит, млять!)
3. Чистка и склейка кода, тк опять (приступ ненависти) в Delphi нет автосклейки наследуемого кода - это когда находится две одинаково называющиеся процедуры и от дочернего к первому родителю происходит совмещение/наложение кода в местах где указано inherited/override/итд.

В общей сложности склейка сложной формы с сотней полей, тремя родителями и множество данных - заняло около целого дня.
(приступ бешенства) А могло бы занять 10-30минут, если бы Embarcadero не бежало за C++, а продолжало дорабатывать Delphi...
Ответить с цитированием