Форум: "Компоненты";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
ВнизКак отобразить новое свойство в инспекторе объектов? Найти похожие ветки
← →
FunkyByte © (2005-04-21 21:43) [0]Доброго времени суток, уважаемые мастера. Создал как-то я форму, имеющую помимо прочего одно новое свойство:
property TrayIconFile: String read FTrayIconFile write FTrayIconFile;
чтобы в дальнейшем поместить её в репозиторий и вставлять в программы вместо обычной формы в случае необходимости.
Вопрос: как сделать так, чтобы это новое свойство отображалось в инспекторе объектов? Пробовал просто разместить его в разделе published в объявлении класса новой формы - ошибок не возникло (что радует), но и в инспекторе объектов свойство это не появилось (что не радует). Заранее благодарен.
← →
Юрий Зотов © (2005-04-21 21:58) [1]1. См. RegisterCustomModule. Свойство появится в наследниках.
2. На форме не должно быть ничего (все равно после вызова RegisterCustomModule на наследнике все исчезнет). Поэтому лучше всего просто убрать директиву {$R *.DFM}.
Для всего этого удобно использовать эксперт CFPack от Сергея Орлика.
← →
FunkyByte © (2005-04-22 17:06) [2]А можно поподробнее? Что такое RegisterCustomModule, что он делает и как с ним работать? Я так понимаю, что необходимо создать класс-потомок TForm с необходимым мне свойством, вынесенным в раздел published и куда-то его сохранить. А как сделать так, чтобы в проект добавлялась форма - потомок нового класса, описанного мной, а не потомок TForm?
← →
King of Lamers © (2005-04-22 19:34) [3]http://delphimaster.net/view/5-1090683370/&toprint=1
← →
Юрий Зотов © (2005-04-22 23:15) [4]> FunkyByte © (22.04.05 17:06) [2]
> Что такое RegisterCustomModule, что он делает
Если я правильно понимаю, то это процедура, которая связывает наш класс формы с неким дизайнером форм IDE.
> и как с ним работать?
Вызвать в процедуре Register пакета, который содержит наш класс формы. Детали см. в исходниках VCL.
> Я так понимаю, что необходимо создать класс-потомок TForm с
> необходимым мне свойством, вынесенным в раздел published
Точно так.
> и куда-то его сохранить.
В пакет. Сама форма - в run-time пакете, процедура Register - в design-time пакете.
> А как сделать так, чтобы в проект добавлялась форма - потомок
> нового класса, описанного мной, а не потомок TForm?
Есть два способа.
1. Создаете в проекте обычную форму, затем ручками меняете ее предка на свой, в uses прописываете нужный unit, сохраняете проект и переоткрываете его.
2. Пишете свой эсперт IDE, который на страницу New репозитория добавляет свою иконку и при клике по ней генерит код наследника нашей формы. Эксперт, естественно, помещается в design-time пакет.
P.S.
Такой эксперт существует в уже готовом виде - тот самый CFPack. Бесплатный и даже с исходниками.
> King of Lamers © (22.04.05 19:34) [3]
Спасибо за ссылку. Я уже почти забыл об этом обсуждении, а ведь и правда интересно было.
← →
FunkyByte © (2005-04-24 17:38) [5]Сделал как написано: создал модуль с описанием класса формы, сохранил в пакет, написал процедуру Register c вызовом RegisterCustomModule, установил пакет. Вариант с ручным изменением класса-предка новой формы, сохранением и переоткрытием проекта работает на ура. Пробовал воспользоваться CFPack-ом: добавил в пакет, входящий в эксперт, свою форму и установил этот пакет. В репозитории появилась вкладка с названием, совпадающим с именем пакета, на ней - иконка установки формы-потомка моего класса (кстати, проверял - работает, что не может не радовать). Но существует эта вкладка только до тех пор, пока пакет открыт. Может быть я неправильно пользуюсь этим экспертом? Тогда подскажите, plz, как его правильно юзать. А может быть кто-то знает, где подробно описано, как подобные эксперты IDE пишутся?
P.S.: смотрел исходники этого CFPack-а и так понял, что после его установки при добавлении формы в проект должно вываливаться окно, в котором можно указать класс-предок для добавляемой формы (ну не для красоты же добавлена соответствующая форма в исходники эксперта). У меня это окно почему то не вываливается.
← →
Юрий Зотов © (2005-04-24 19:10) [6]> добавил в пакет, входящий в эксперт, свою форму
Вот этого делать не нужно, пусть Ваша форма в Вашем пакете и остается, а пакет эксперта инсталлируйте в IDE отдельно.
Вместо прямого вызова RegisterCustomModule вызовите процедуру регистрации формы в эксперте (как называется, не помню, но там не спутаешь, найдете).
После установки эксперта жмите в меню New - Other. Должна быть иконка Custom Form (или Custom Container, не помню уже точно), а при клике по ней и появляется окно выбора.
Как пишутся эксперты - на эту тему информации не так уж и много. Ищите по ключевым словам OTAPI, Open Tools API, BorlandIDEServices.
Кое что (но мало) есть в справке (не ранее D6). А самое полезное - изучать код других экспертов (хотя бы того же CFPack) и код модулей в каталоге DelphiX\Source\ToolsAPI.
← →
FunkyByte © (2005-04-25 21:18) [7]Всё работает. Большое спасибо. Очень помогли.
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 1.403 c