![]() |
|
|
![]()
|
|
| ZVano |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Проблемма со стандартными компонентами ввода данных (TDBLookupComboBox, TDBCheckBox и т.д.).
Эти компоненты модифицируют набор данных DataSet только в момент потери фокуса. (OnExit) Мне нужно заставить компонент выполнить модификацию в любой момент. Например: Пользователь выбрал строку из выпадающего списка TDBLookupComboBox, но компонент фокус не потерял. Решил этот момент таким костылем:
Т.е. отловил момент закрытия списка выбора и принудительно переключил фокус на след.контрол, затем вернулся на предыдущий. Этот костыль хоть и не нравится мне, но все же работает. А как быть с TDBCheckBox? Пользователь может кликать по нему до посинения, а DataSet не изменится. Попытка сместить фокус в обработчике OnClick вызывает исключение.
Получаю жуткую ошибку "Abnormal program termination". Вобщем, нужно сделать так, чтобы при редактировании данных в контроле они тут-же изменяли DataSet. Либо корректно делать это обрабатывая события ввода. Это сообщение отредактировал(а) ZVano - 15.12.2010, 14:01 -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
||||
|
|||||
| _Dimon_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 25.6.2007 Где: Украина Репутация: 1 Всего: 1 |
|
|||
|
||||
| ZVano |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Не подходит: 1. Данные не должны быть отправлены на сервер - набор данных должен стать "DataSource->DataSet->Modified == true" 2. Получаем исключение "...: Dataset not in edit or insert mode" при попытке использовать этот подход для "TDBCheckBox"
И эта ошибка вполне ожидаема т.к. клик по объекту TDBCheckBox не вызывает изменения в связаном DataSet, что и является проблеммой, которую нужно обойти. -------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
||||||
|
|||||||
| _Dimon_ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 25.6.2007 Где: Украина Репутация: 1 Всего: 1 |
Незнаю почему, но первый клик не отображает замены, а потом нормально .... надо еще подумать ..... З.Ы. Перед тем как щелкать чекбокс ты вызываеш Edit() ? Это сообщение отредактировал(а) _Dimon_ - 16.12.2010, 19:54 |
|||
|
||||
| ZVano |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: 1 Всего: 4 |
Перед щелчком Edit() не вызываю. Он происходит автоматически.
Приатачиваю тестовый проект, который скидывает в лог все события и состояние DataSet. Нужно заставить кнопку "bnTbl1Save" быть активной после клика по DBCheckBox. Присоединённый файл ( Кол-во скачиваний: 2 )
TDataSet.zip 32,89 Kb-------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |