Страница 1 из 1

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

Добавлено: 30 янв 2007, 15:00
Mike99
Имеется Grid с логическим полем (CheckBox’ы).
Как контролировать логическое поле таблицы, при условии что состояние Checked=true может иметь только одна запись, т.е. при смене состояния одной записи в true, остальные должны быть переведены в false.

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

Добавлено: 30 янв 2007, 15:04
Хыиуду
просто пробежаться по всем остальным чекбоксам и установить им checked:=false;
/офф: а вообще - если выбирается только одно из всех, это больше похоже на RadioGroup, если таковое в гриде существует

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

Добавлено: 30 янв 2007, 17:47
Игорь Акопян
как всегда когда речь идёт о несколько странной необходимости, хочется узнать а для чего? ;) может переделать чутка по иному удастся...

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

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

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

Добавлено: 31 янв 2007, 07:38
Mike99
Нашел загвоздку: Таблица - компонент TMemTableEh, Grid - DBGridEh. В этой связке и есть проблема. OnClick не работает в ячейках не видимых при начальном открытии формы. При другой временной таблице и DBGridEh - работает, как и при TMemTableEh с другим Grid'ом - тоже работает. А эта связка нужна, т.к. DBGridEh - без него никуда, ни CheckBox'ов, ни сортировки по всем столбцам, ни Footer'a и т.д. TMemTableEh тоже нужен потому что поддерживает MasterSource - связь с другой таблицей по ключю. Выходит, косяк EhLib'a, блин как же теперь решить проблему?

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

Добавлено: 31 янв 2007, 12:56
Игорь Акопян
в качестве мысли...
запретить редактирование, отследить клик, выполнить запрос на обновление выставив всем false и потом установить выделенному True...