![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Блокирование событийных методов On* [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Ученик © (2002-07-16 08:43:00)Есть дизайнер форм, например из Extension Library ( http://www.delphikingdom.com/mastering/poligon/extlib.htm),
выполняемый в RunTime, на форму помещен
PageControl, в режиме дизайна формы при выборе страниц PageControlа "мышкой" необходимо блокировать вызов метода TPageControl.OnChange, да и других тоже.
Есть ли универсальный способ блокирования вызова событийных методов объектов в RunTime ?
Ученик (2002-07-16 19:05:00) [21]>Юрий Зотов
Если Вы это мне, то именно это используется в дизайнерах форм, речь шла о блокировании вызова событийных методов на время пользовательского дизайна формы, которые разработчик определил при разработке программы.
Skier (2002-07-16 18:57:00) [22]>Юрий Зотов
Так короче - SetDesigning(True) и SetDesigning(False) :)
Юрий Зотов (2002-07-16 18:55:00) [23]Раз уж Вы хотите использовать design-time"ские механизмы самой Delphi - так используйте их до конца. Это я к тому, что надо поступать так же, как потупает сама IDE.
Один-единственный вызов SetDesigning(True, True) для ВСЕЙ формы решает проблему. В конце - SetDesigning(False, True) для нее же.
Anatoly Podgoretsky (2002-07-16 17:41:00) [24]Ученик (16.07.02 09:16)
Как раз это правильный метод и этот флаг предназначен именно для этой цели, разрешения конфликтов дизайн тайма
Но я до сих пор не понял о каком времени идет речь disign vs run time
Skier (2002-07-16 17:35:00) [25]>Ученик
Флаг csDesigning можно убрать в run-time.
Хотя это некрасивый подход...
Ученик (2002-07-16 17:26:00) [26]>NickBy
Спасибо, флажка значит никакого нету, интересно Delphi тоже так делает или там совсем по-другому ?
NickBy (2002-07-16 16:44:00) [27]Через RTTI получаеш список всех событий объекта и присваеваешь указателям nil.
Старые указатели желательно перед сбросом сохранить на случай если в дальнейшем форму необходимо будет вывести из режима редактирования.
Ученик (2002-07-16 09:16:00) [28]Проблема в том, что неизвестно какие события определены у объекта, и на каких повешены процедуры обработки. Речь идет об универсальном способе, т.е. на период дизайна формы отключать все событийные методы, встраивать в каждый проверку csDesigning как-то неправильно.
Anatoly Podgoretsky (2002-07-16 09:08:00) [29]if csDesigning in ComponentState естестенно в каждом нужном тебе обработчике
Или ты говоришь об RunTime тогда действительно свойство обратчик:=nil;
GenBr (2002-07-16 08:56:00) [30]ну наверное так YourComponent.YourEvent=nil;