Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Подземелье Магов
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 12:20 Владимир Метальников
 
 
Во Флориде и в Королевстве сейчас  12:33[Войти] | [Зарегистрироваться]

Обсуждение материала
Сапоги для сапожника
Полный текст материала


Другие публикации автора: Инна Аринович

Цитата или краткий комментарий:

«... Как ни удобна среда разработки Delphi, рано или поздно приходит мысль "а еще бы...". Если такие мысли появляются периодически, значит, настало время отложить текущие проекты и написать эксперт, редактор свойств или компонента. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]14100%
 
  Ничего особенно нового и интересного
[2]00%
 
  Написано неверно (обязательно укажите почему)
[3]00%
 
Всего проголосовали: 14

Оценка стиля изложения

  Все понятно, материал читается легко
[1]12100%
 
  Есть неясности в изложении
[2]00%
 
  Непонятно написано, трудно читается
[3]00%
 
Всего проголосовали: 12




Смотрите также материалы по темам:
[Редакторы свойств]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 13

14-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:19
Serg: Действительно так и тянет написать эксперт для автоматизации запуска атомной ракеты! А статья очень интересная. Автору премию Нобеля!


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
Спасибо, Инна!

Очень интересный материал. Я раньше думал, это очень сложно. Очень понравилось!  


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Кто съел Красную шапочку?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования