Topic: триггер формы
можно ли создать триггер на изменения в форме ?
My Visual Database → Russian → триггер формы
можно ли создать триггер на изменения в форме ?
Если я правильно понял, речь идет о проверке, были ли внесены на форме какие-либо изменения в каждом элементе ввода данных. То есть в сравнении с исходными данными, которые были на форме редактирования в момент отображения. Я бы не стал делать именно триггер, так как в процессе изменения пользователь может многократно менять данные, например, при наборе текста. Лучше иметь возможность в нужный момент узнать, были ли реальные изменения.
Это можно использовать для оптимизации процесса сохранения данных: если пользователь нажал кнопку "Сохранить", но никакие данные не вводил, то и сохранять ничего не нужно. Или наоборот: пользователь что-то поменял, а потом жмет кнопку "Отмена". Тогда можно предупредить его о том, что все изменения будут потеряны.
Готового решения у меня нет, но я бы сделал так.
1. В обработчике onShow пробежать по всем компонентам формы (свойство TForm.components[]) и в свойство TagStr записать текущее значение, при необходимости сконвертировав его в строку. Тут придется использовать проверку на класс (оператор is) и приведение к нужному типу. Это позволит создать один универсальный обработчик и подключить его ко всем формам редактирования.
2. В функции Form_isDataChange опять пробежать по всем компонентам и сравниmь текущее значение и свойство TagStr. Если есть различия, значит были изменения.
Но если нужен именно триггер, то придется навешивать разные обработчики на каждый редактируемый компонент формы, внутри которых вызывать процедуру-триггер.
1. В обработчике onShow пробежать по всем компонентам формы (свойство TForm.components[]) и в свойство TagStr записать текущее значение, при необходимости сконвертировав его в строку. Тут придется использовать проверку на класс (оператор is) и приведение к нужному типу. Это позволит создать один универсальный обработчик и подключить его ко всем формам редактирования.
2. В функции Form_isDataChange опять пробежать по всем компонентам и сравниmь текущее значение и свойство TagStr. Если есть различия, значит были изменения.
Но если нужен именно триггер, то придется навешивать разные обработчики на каждый редактируемый компонент формы, внутри которых вызывать процедуру-триггер.
тогда наверное лучше json
при загрузке пробежать по компонентам и записать их в json
trigger (массив)[
объект(компонент){
" ключ ":" значение",
" ключ ":" значение"
}
объект(компонент){
" ключ ":" значение",
" ключ ":" значение"
}
]
My Visual Database → Russian → триггер формы
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi