| | | | |
Полный текст материала
Другие публикации автора: Инна Аринович
Цитата или краткий комментарий: «... Как ни удобна среда разработки Delphi, рано или поздно приходит мысль "а еще бы...". Если такие мысли появляются периодически, значит, настало время отложить текущие проекты и написать эксперт, редактор свойств или компонента. ...» |
Важно:- Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
- Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
- При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
- Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.
Добавить свое мнение.
| | Содержит полезные и(или) интересные сведения | [1] | 14 | 100% | | | | Ничего особенно нового и интересного | [2] | 0 | 0% | | | | Написано неверно (обязательно укажите почему) | [3] | 0 | 0% | | Всего проголосовали: 14 | | | Все понятно, материал читается легко | [1] | 12 | 100% | | | | Есть неясности в изложении | [2] | 0 | 0% | | | | Непонятно написано, трудно читается | [3] | 0 | 0% | | Всего проголосовали: 12 |
[Редакторы свойств]
Отслеживать это обсуждение
Всего сообщений: 1314-01-2011 09:00сообщение от автора материала Quote]Может кто-нибудь выложить полноценно рабочий пример изменения хоть одного свойства, а не куски кода, которые новичок не знает куда вставлять?
Эээ? А чем не устраивают файлы в конце статьи? Все примеры из статьи вполне себе полноценные, тестировались ни раз и для разных версий. Я не теоретик ;)
Почти не работала в 2009, 2010, но думаю, что редакторы для 6/7 версии должны в них работать. Вроде бы я их даже ставила в самом начале, но это было давно, могу и напутать. |
|
12-12-2010 13:47А какие нюансы ожидаются в 2009, 2010? Может кто-нибудь выложить полноценно рабочий пример изменения хоть одного свойства, а не куски кода, которые новичок не знает куда вставлять? |
|
06-03-2009 22:51И ещё более того. В дизайн-тайм используется другой метод сохранения-чтения форм. А именно, в дизайн-тайм класс формы понятие чисто теоретическое. Фактически создаётся форма того класса, который был указан при регистрации компонента. У неё НЕТ published методов, объявленных в редакторе для её потомка. Процесс чтения свойств-событий через MethodAddress не работает, больше того, понять, как он работает, не так-то просто, учитывая, что лично у меня в Classes отладчик в дизайн-тайм не заходит. Подозреваю, что вызывается FindMethod, после чего прочитанный идентификатор просто запоминается в каком-то списке в результате вызова OnFindMethod или как-то так. И вообще, значения свойств-методов в дизайн-тайм представляют из себя не указатели, а неизвестно что, Assigned для них не работает (оно в общем-то и понятно, почему), и получаются эти значения исключительно через Designer.CreateMethod, а не через MethodAddress.
Но даже если и сделать такое... Допустим. Свойства-указатели в дизайн-тайм тоже работают иначе. Похоже, что при удалении пустых определений published методов в редакторе, для всех свойств-указателей производится проверка значений на соответствие данному удаляемому методу и удаление соответствующих значений. В том числе и в object inspector-е. Сам метод при этом будет считаться существующим, то есть Designer.ExistMethod вернёт true.
Вопрос на засыпку: а будет ли производиться такой поиск по всем формам проекта или он производится только по "содержимому" той формы, чей метод удаляется в редакторе? Ответа я не знаю, и, думаю, никто не знает. И знать не может, так как даже проверив это в одной версии IDE, нельзя сказать абсолютно ничего о том, будет ли это работать в следующей. |
|
02-03-2009 22:26Не заметив имени автора, на фразе "не проверялА", я споткнулся и немного изменил своё мнение о мире. ;)
По поводу свойств-событий других форм. Насколько я помню, при сериализации форм указатели на published методы класса заменяются на имена этих методов. Соответственно, при десериализации происходит обратный процесс. При чём сначала форма целиком читается/создаётся без свойств-событий, а уже потом "фиксятся" свойства-события и указатели на компоненты. К этому моменту форма уже должна быть создана, ибо указатели на методы класса содержат не только адреса методов, но и адреса экземпляров класса.
"Фикс-ап" для вложенных компонентов производит их owner. То есть дело не только в редакторе, придётся ещё и серьёзно переделать VCL. В частности, финальный "фикс-ап" должен производиться уже когда ВСЕ (или по крайней мере все нужные) формы прочитаны. Смысла нет никакого ИМХО. Не проще ли создать простой обработчик, в котором просто вызвать метод другой формы? |
|
25-10-2008 00:24В общем случае придется писать enumerator форм в проекте и для каждого наследника TForm вызывать GetMethods. Сомневаюсь в нужности подобного, но вполне реализуемо. Посмотрите материалы на сайте http://mustangpeak.net - там прекрасно расписано про перечисление модулей/форм проекта/группы проектов.
З.Ы. Кроме того есть наследование форм. Тоже весьма удобная вещь |
|
24-10-2008 08:04сообщение от автора материала C uses это я погорячилась. Не готова сейчас сказать возможно ли это вообще. Это ToolsAPI, нет исходников и почти нет документации. |
|
24-10-2008 06:26сообщение от автора материала Класс для событий это TxxxEvent, например TNotifyEvent. Стандартный редактор для них TMethodProperty. Ищет он подходящие методы с помощью Designer.GetMethods. Для того, чтобы появились методы других форм необходимо их добавить в uses. |
|
23-10-2008 06:09Здравтсвуйте, Инна! Все изложенно замечательно, но у меня вопрос: а как насчет свойств событий - к какому классу они относятся, какой editor им соответствуют и как их обрабатывает инспектор(ищет подходящие методы - мне нужно чтобы появлялись методы(handler'ы event'ов) не только из класса текущей формы, но также и других классов, форм). |
|
20-12-2004 23:19Serg: Действительно так и тянет написать эксперт для автоматизации запуска атомной ракеты! А статья очень интересная. Автору премию Нобеля! |
|
09-12-2004 01:22Инна!
БОЛЬШОЕ СПАСИБО за столь необходимую в хозяйстве любого жителя Королевства статью. Пресловутое "а ещё бы..." (во всех вариациях) с Вашей помощью стало звучать намного реже.
С низким поклоном, |
|
23-11-2004 10:06Здорово написано:)) Все так разложено по полочкам, прям все ща брошу и буду редакторы писАть:))) |
|
20-11-2004 10:19{$IFDEF I_DO_NOT_UNDERSTAND} - это пять баллов! |
|
19-11-2004 16:53Спасибо, Инна!
Очень интересный материал. Я раньше думал, это очень сложно. Очень понравилось!
|
|
|
|