| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > TForm новое свойство в инспекторе объектов |
| Автор: r00xus 14.4.2015, 09:05 | ||
| здравствуйте коллеги. хочу сделать наследника от TForm с двумя свойствами Images для указания ImageList и IconIndex для того чтобы можно было в designtime и runtime указывать иконку для формы. Пробую с ImgeList:
но свойство не появляется в инспекторе объектов. я что-то глобально делаю не так? |
| Автор: Poseidon 14.4.2015, 09:59 |
| Т.е. ты решил, что если наследнику TForm просто добавить published свойство, то инспектор автоматически его подхватит? С чего вдруг? Нужно еще сообщить инспектору об этом. И, честно признаюсь, я даже не представляю как это сделать для формы. Для контролов есть специальная процедура Register, а вот как быть с формой понятия не имею. |
| Автор: Alexeis 14.4.2015, 13:47 |
| В теории если добавить форму в репозиторий Project->Add to Repository, то может что-то и получится, поскольку если новую форму создать унаследовав форму из репозитория, то получается что в качестве предка значиться уже не TForm, а своя форма. Сто лет не использовал этот механизм, так что что там получиться на самом деле не берусь утверждать. Подробнее почитать нужно тут http://www.delphi.int.ru/articles/51/ |
| Автор: Beltar 19.4.2015, 22:48 |
| А интерцептор-класс? В начале юнита пишешь класс TForm унаследованный от стандартного TForm. Т. е. указываешь полное имя родительского класса. Я не помню, где TForm определен, но если, например, в Controls, то TForm=class(Controls.TForm); Соответственно форма будет унаследована не от стандартной, а от твоей. Но такую штуку надо в каждый юнит, где нужен данный функционал пихать, т. е. ее можно через {$INCLUDE} вставлять |
| Автор: Poseidon 22.4.2015, 08:28 |
| Beltar, и что, новые свойства тут же появятся в инспекторе? |
| Автор: Beltar 22.4.2015, 14:10 |
| Неа. :( Я как-то таким способом (чтобы не регистрировать) делал свой TTreeView, который бы не разворачивался по двойному щелчку без команды, сейчас проверил, у него новое свойство в published тоже появляется только если его нормально зарегистрировать, как компонент. |
| Автор: Beltar 22.4.2015, 14:30 |
| Если на то пошло и охота именно в Disign-тайм, и вообще иконку надо менять часто (не знаю зачем, но раз хочется), то может сделать невидимый компонент (TFormIconManager какой-нить) с TImageList, сделать ему редактор, чтобы в disign-time редактировать, сделать свойство для формы, которой надо др. иконку и через него менять ей Icon. Вообще когда-то давно у меня после прочтения умной книжки возникла идея сделать компонентик с формочкой для работы со справочными таблицами в БД, коим часто вполне достаточно редактирования в сетке. И совать в него эти таблицы в дизайн-тайм. Ну сделал, было это в Delphi 2006, работало как бы не очень, возникали глюки, и компонент приходилось вычищать из dfm-файла. Потом на 2007 вообще сдохло. В итоге я плюнул, сделал тупо форму, которую просто подключаю как юнит и один раз пишу простейший код добавления в нее таблиц. Может сейчас бы и прокатило, но не вижу смысла извращаться ради копеечного выигрыша в удобстве за счет добавки ему в колекцию нескольких табличек в дизайн-тайм.. |