|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.05.2012, 22:34 | #1 |
Пользователь
Регистрация: 19.02.2011
Сообщений: 14
|
Потеря фокуса Edit
Привет! Ситуация такая. Есть на форме эдит, данные записанные в него в обязательном порядке должны быть сохранены в БД, пока эдит находится в фокусе.
Пока обрабатывается в событии OnChange, но записывать каждый новый введенный символ в базу не эффективно я считаю. Наилучший способ был бы при обработке события OnExit. Но, например, если нажать на кнопку, то сначала обработается событие OnClick кнопки, а затем уже OnExit эдита. До того как наступит событие OnClick кнопки, мы можем легко получить строку в БД в которой надо обновить поле, если произойдет OnClick мы получим уже новую строку и данные потеряются. В общем-то можно использовать глобальную переменную в которой будем хранить ссылку на старую запись в БД, но этот способ меня не особо привлекает. Может у кого-то есть идеи как заставить всегда выполняться сначала OnExit а потом уже всё остальное? |
29.05.2012, 22:58 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Это смотря какие кнопки. Для SpeedButton так. А для Button и BitBtn сначала OnExit эдита отработает, а потом OnClick кнопки
ADD - забыл добавить для SpeedButton OnExit эдита вообще не отработает, поскольку фокус на эдите и останется
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 29.05.2012 в 23:16. |
30.05.2012, 01:56 | #3 |
Пользователь
Регистрация: 19.02.2011
Сообщений: 14
|
Да, спасибо! Я как раз использовал SpeedButton! Теперь буду использовать обычные кнопки!
|
30.05.2012, 20:16 | #4 |
Пользователь
Регистрация: 19.02.2011
Сообщений: 14
|
А как насчет того, когда фокус переходит с эдита на дерево TreeView?!
|
30.05.2012, 20:58 | #5 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Ставим точки останова в нужных местах и смотрим куда первому управление передается
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
30.05.2012, 22:05 | #6 | |
Пользователь
Регистрация: 19.02.2011
Сообщений: 14
|
Цитата:
В общем скажу, что у меня конкретно. На форме есть дерево, для каждого узла соответственно есть набор эдитов, в котором редактируются свойства ветки. Поскольку само дерево может хранить только имя фактически, есть так же структура в которую пишутся все данные с эдитов (потот достаются через Data узла дерева). Ну и там между делом все это отправляется в БД. В конкретный момент времени выделен какой-то узел, по которому мы может узнать и структуру и запись в БД, поэтому пока эдит любой в фокусе, можем дублировать с них всё в структуру, а в БД при выходе. Но вот н всегда выход наступает первым. Если наступит OnChange дерева, будет выделен соответственно новый узел, и в OnExit эдита уже будет работать сохранение в БД для нового выделенного... Вот как-то так! |
|
30.05.2012, 23:09 | #7 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Потеря фокуса | Naive | JavaScript, Ajax | 1 | 16.11.2010 05:53 |
Потеря данных | Марина520 | Microsoft Office Word | 0 | 13.06.2010 22:48 |
Потеря значений. С++ | Снежинкина | Помощь студентам | 0 | 27.05.2010 13:03 |
Ошибка при наведении фокуса на Edit | Gumer | Общие вопросы Delphi | 2 | 21.04.2010 00:13 |
Потеря фокуса окна в приложении | Dr.Badnezz | Общие вопросы Delphi | 4 | 01.12.2008 23:18 |