Grid с логическим полем – только одна запись в true.

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Mike99
Сообщения: 7
Зарегистрирован: 30 июн 2006, 14:10

Имеется Grid с логическим полем (CheckBox’ы).
Как контролировать логическое поле таблицы, при условии что состояние Checked=true может иметь только одна запись, т.е. при смене состояния одной записи в true, остальные должны быть переведены в false.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

просто пробежаться по всем остальным чекбоксам и установить им checked:=false;
/офф: а вообще - если выбирается только одно из всех, это больше похоже на RadioGroup, если таковое в гриде существует
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

как всегда когда речь идёт о несколько странной необходимости, хочется узнать а для чего? ;) может переделать чутка по иному удастся...
Изображение
Mike99
Сообщения: 7
Зарегистрирован: 30 июн 2006, 14:10

Проблема заключается в том, что у DBGridEh стоит свойство dgEditing = true – пользователь редактирует все поля во временной таблице. По высоте Grid отображает только 4 записи. Событие onClick срабатывает только у первых 4 - х записей, ниже 4 – ой события onClickне возникает. Я делал подобную задачу – там dgEditing = false, dgRowSelect=true, но пользователю доступно было изменять только поле с CheckBox’ами, - на любой записи возникало событие onClick, в котором я и очищал остальные CheckBox. А в данном случае я попал в тупик – в событиях таблицы BeforeEdit нельзя изменять другие записи – получается цикл. В каком еще событии отследить?
Mike99
Сообщения: 7
Зарегистрирован: 30 июн 2006, 14:10

Нашел загвоздку: Таблица - компонент TMemTableEh, Grid - DBGridEh. В этой связке и есть проблема. OnClick не работает в ячейках не видимых при начальном открытии формы. При другой временной таблице и DBGridEh - работает, как и при TMemTableEh с другим Grid'ом - тоже работает. А эта связка нужна, т.к. DBGridEh - без него никуда, ни CheckBox'ов, ни сортировки по всем столбцам, ни Footer'a и т.д. TMemTableEh тоже нужен потому что поддерживает MasterSource - связь с другой таблицей по ключю. Выходит, косяк EhLib'a, блин как же теперь решить проблему?
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

в качестве мысли...
запретить редактирование, отследить клик, выполнить запрос на обновление выставив всем false и потом установить выделенному True...
Изображение
Ответить