Graach
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Доброго времени суток. Такой вот вопрос: Есть TcxDBVerticalGrid, в котором несколько строк (2 текстовых и 3 TcxLookupComboBox). При этом на каждой строке висит OnEditValueChanged. Также имеется три датасета/датасорса для лукапных полей. Запрос для первого лукапа - простой селект без параметров. Запрос для второго - параметризован и его параметрами являются значения 2-х текстовых полей и первого лукапа. Запрос третьего - тоже параметризован и зависит от того, что выбрано во втором лукапе. Текущие значения лукапных полей беру из свойства EditValue. Таким образом, пользователь заполняет поля сверху вниз: первый лукап, оба текстовый поля (при изменении значений каждого из этих трех полей выполняется параметризованный запрос к БД для заполнения датасета второго лукапа), второй и третий лукапы. При этом первый лукап отрабатывает без проблем - на событие OnEditValueChanged выполняется запрос к БД и все отлично. Оба edit'а также отрабатывают без проблем. Но когда сделан выбор значения из второго лукапа, отрабатывает OnEditValueChanged дважды, причем второй раз EditValue - пустое. И когда дважды сделан запрос к БД, значение в гриде пропадает. Соответственно в третьем лукапе данных нет. Пробовала вместо OnEditValueChanged ставить OnChange и OnValidate - результат тот же. Пробовала ставить на OnExit и OnFocusLost (на потерю фокуса) - вообще туда не заходит. Но если сделать те же самые поля с теми же запросами в отдельных компонентах (не в гриде), то все работает отлично. Собственно говоря вопрос, как сделать так, чтобы OnEditValueChanged (или какое-нибудь другое событие) отрабатывало только один раз (теоретически если это так и будет, то выбранное значение лукапного поля пропадать не будет). |