Вниз
Скачать: CL | DM;

Господа, как отлавливать события изменения значений в таблице?   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
11-29287
BelchonokH
2003-05-23 21:21
2004.02.10
ListView


14-29568
fag2000
2004-01-20 16:07
2004.02.10
Как посмотреть что написано в реестре у другого пользователя.


6-29514
Илайдж
2003-10-14 10:56
2004.02.10
Удаленное завершение работы приложения...


1-29464
8ung
2004-01-30 12:57
2004.02.10
Запуск программы из файла.


1-29387
electric
2004-02-01 17:41
2004.02.10
Работа программы останавливается после после открытия модуля




   Наверх