Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Блокирование событийных методов On* [D6, Win95/98, WinME, NT4, Win2k, WinXP]


Страницы:   1 2

Ученик ©   (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;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо