Форум: "Основная";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];
ВнизГоспода, как отлавливать события изменения значений в таблице? Найти похожие ветки
← →
Boroda Oleg (2004-01-31 11:09) [0]Вопрос то простецкий, но что-то я догадаться никак не могу %((
Имеем таблицу. Получаем из нее SQL, предположим на одну запись. Запихиваем запись в некий редактор, состоящий, предположим из DBEdit, DBDataEdit, DBComboBox (3 штука).
Теперь самое интересное. Как отловить события:
1. Изменение содержания значений в DBEdit сделанные именно пользователем.
2. Изменение содержания значений в DBDataEdit сделанные пользователем, с учетом изменений, вызванных и нажатием на кнопку с календариком.
3. Изменение содержания значений в DBComboBox сделанные пользователем, с учетом изменений, вызванных выбором и из выпадающего меню, а также нажатие на кнопку выпадающего меню.
Событие onChange для соответственных компонент, которое само напрашивается на язык - несколько не подходит, так как оно реагирует на ЛЮБЫЕ изменения в компоненте, даже вызванные занесением данных в компоненту системмой, а этого как раз и не нужно. События onClick также подойти может только для DBEdit, так как не отрабатывается для нажатий на календарь и выпадающее меню, опять же желательно иметь событие после изменения значений в ячейке (не не Post).
Из событий в DataSet - реально можно использовать только onEdit, но она отрабатывается только при переходе таблицы в положение Edit и никак не реагирует на дальнейшие поползновения, пока не скажешь таблице Post.
Что делать то? Пользуюсь на данный момент трехэтажными методами - да и то не всегда все работает как нужно.
← →
TUser (2004-01-31 11:47) [1]Попробуй ловить OnKeyPress и сравнивать значение с предыдущим. Должно помочь.
+ AfterEdit у TDataSet
← →
Boroda Oleg (2004-01-31 15:26) [2]Немного не то.
OnKeyPress отрабатывает только нажатие на клаве, а если юзер меняет дату из DataSet?
А DataSet отрабатывает только один раз, и после этого ждет Post, независимо к тому, меняю я другие ячейки или нет. Мне же нужно отлавливать события после изменения в каждой ячейке и выполнять некие действия.
← →
Boroda Oleg (2004-01-31 15:29) [3]Во выразился "а если юзер меняет дату из DataSet" :))
Читать нужно "а если юзер меняет дату мышкой, используя VLB компонента DateEdit?
← →
HSolo (2004-01-31 16:10) [4]А если все-таки в onChange - только обработчик назначать в run-time уже после того, как данные попали куда следует :)) т.е. непосредственно перед тем, как отдать на редактирование пользователю? Или флажок завести и проверять его в обработчике?
← →
Boroda Oleg (2004-01-31 16:45) [5]Флажком и делаю, только вот лишняя переменная...
Да и выставлять ее нужно не забывать в Create и Deactivate в false, а в Activate в True. Ну и в отладочном режиме, соответственно, абы что - окно же deactivate - считается.
← →
HSolo (2004-01-31 16:56) [6]Много ли занимает один boolean? :))
А насчет "не забывать выставлять" - так сделать общего предка для всех "неких редакторов", в нем один раз выставить и забыть вопрос :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.02.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c