Custom Forms

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
ssl
новенький
Сообщения: 59
Зарегистрирован: 17.05.2005 11:27:01

Custom Forms

Сообщение ssl »

Очень хочется свои формы с доп. published свойствами в ObjectInspector'е. В каталоге Components обнаружил packadge
customform\lazcustforms.lpk
Установил. В подкаталоге demo пример такой формы - appforms.lpk
Тоже установил. Затем File\New\CustomForms\App form\TappForm -
форма создаётся, новые проперти в инспекторе видятся, радостно переоткрываю проект - и нарываюсь на "Unable to read file AppForm!" и предложение открыть форму как наследника от TForm.
Соображаю: не понимает Лазарь, что TAppForm есть корневой класс и дизайнер формы пытается найти AppForm.pas как модуль предка. :(

В examples нахожу другой пример: designerbaseclass.
Если доработать напильником (TMyComponentClass наследовать не от TComponent, а от TForm), то вроде получаем, что хотели, но в этом случае криво работает наследование таких форм: визуальные компоненты наследуются, невизуальные пытаются дублироваться.

Я человек упрямый, нахожу в коде customcomponentclass.pas заветную строчку:

Код: Выделить всё

FormEditingHook.RegisterDesignerBaseClass(TMyComponentClass);


Подстановка этого заклинания в custforms.pp, в процедуру Register (сразу после RegisterProjectFileDescriptor) вроде дала желанный эффект.. но только наполовину: форма открывается нормально, но при попытке закрыть вылетает "Division by zero" и Лазаря приходится валить :((

В своё время в Дельфи я с этими CustomForms и наследованием повоевал достаточно, а по второму разу разбираться с исподниками дизайнера ой, как не хочется..
Может, присоветует кто чего-нибудь полезное? Хоть в каких модулях самого Лазаря копаться.
Predator
незнакомец
Сообщения: 6
Зарегистрирован: 29.01.2010 23:48:34

Сообщение Predator »

Приветствую!
Решил создать свою форму встретился с аналогичной проблемой!
В демке customform после сохранения и загрузки проекта аналогично не находятся свойства.

С последнего вашего сообщения прошло 3 года а проблема так же остро висит, даже в последем лазарусе!

Добавлено спустя 34 минуты 11 секунд:
Прочитал вот этот топик!
http://www.lazarus.freepascal.org/index ... 66.15.html

Там было предложено посмотреть extp_proj_intf.pas модуль, в этом модуле было все тож самое что ты и предложил а именно
FormEditingHook.RegisterDesignerBaseClass(TMyComponentClass);

Проблем с Division by zero вроде бы не заметил очевидно то что я наследую свою форму от TForm а не от TCustomForm
Ответить