|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.12.2011, 15:13 | #1 |
Пользователь
Регистрация: 07.06.2011
Сообщений: 28
|
Проблема с событиями при редактировании компонентов формы из кода
Написал статью про решение часто встречающейся проблемы с интерфейсом.
Суть проблемы в следующем: Если редактировать содержимое компонента из кода (например указать текущий выбранных элемент в ComboBox), то приходит событие об изменении содержимого, от этих компонентов. Событие конечно правильно приходит, вот только реагировать на него не нужно или иногда даже вредно. Так же подписка на события может привести к рекурсивному вызову функции, который переполняет стек. Вот статья: http://itw66.ru/blog/c_sharp/559.html Может быть есть более изящный способ решения проблемы?
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
|
02.12.2011, 17:35 | #2 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
Мне кажется есть. Лично я, когда сталкивался с такой проблемой, делал так:
Вводил bool переменную, которая указывала стоит ли реагировать на событие или нет. В принципе такой подход требует введения 1-ой дополнительной переменной, нескольких if в обработчиках событий и установку данной переменной в нужных местах. Попробую показать примером: допустим у нас есть компонент TextBox(имя txtBox), в котором хранится текст заголовка окна. Т.е. для этого TextBox есть обработчик OnTextChanged(). При запуске приложения мы программно устанавливаем какой-то текст: Код:
Код:
Код:
Код:
|
08.12.2011, 08:20 | #3 | ||
Пользователь
Регистрация: 07.06.2011
Сообщений: 28
|
Цитата:
Именно, чтобы избежать подобных проблем я и пришел к способу, описанному в статье. Мой вариант, предложенный в статье: Цитата:
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
|
||
08.12.2011, 10:04 | #4 |
Участник клуба
Регистрация: 03.05.2007
Сообщений: 1,189
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема при переносе кода. | MasterK | Общие вопросы Delphi | 1 | 08.04.2010 18:05 |
Проблема с отображением формы и компонентов в режиме "RightToLeft" (RTL) | NeonSimfi | Win Api | 0 | 04.05.2009 12:31 |
проблема при подключении компонентов | parshik | Компоненты Delphi | 2 | 22.04.2009 22:13 |
Проблема при редактировании данных | GloomyVitek | БД в Delphi | 8 | 24.11.2007 18:54 |