C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Grid с логическим полем, — только одна запись в true
Michael99
Отправлено: 30.01.2007, 14:57


Ученик-кочегар

Группа: Участник
Сообщений: 7



Имеется Grid с логическим полем (CheckBox’ы).
Как контролировать логическое поле таблицы, при условии что состояние Checked=true может иметь только одна запись, т.е. при смене состояния одной записи в true, остальные должны быть переведены в false.
nawok78
Отправлено: 30.01.2007, 16:41


Станционный диспетчер

Группа: Участник
Сообщений: 115



Заведи переменную кидай туда номер строки Checked = true;
остальным убирай.
вернее убирать придется только старую строку .
CODE

TCheckBox(StringGrid1->Objects[Column, CheckedRow])->Checked=false;
TCheckBox(StringGrid1->Objects[Column, Row])->Checked=true;
CheckedRow=Row;

что-то вроде этого

Отредактировано nawok78 — 30.01.2007, 16:47
Michael99
Отправлено: 31.01.2007, 06:10


Ученик-кочегар

Группа: Участник
Сообщений: 7



Проблема заключается в том, что у DBGridEh стоит свойство dgEditing = true — пользователь редактирует все поля во временной таблице. По высоте Grid отображает только 4 записи. Событие onClick срабатывает только у первых 4 — х записей, ниже 4 — ой события onClickне возникает. Я делал подобную задачу — там dgEditing = false, dgRowSelect=true, но пользователю доступно было изменять только поле с CheckBox’ами, — на любой записи возникало событие onClick, в котором я и очищал остальные CheckBox. А в данном случае я попал в тупик — в событиях таблицы BeforeEdit нельзя изменять другие записи — получается цикл. В каком еще событии отследить?
Michael99
Отправлено: 31.01.2007, 07:41


Ученик-кочегар

Группа: Участник
Сообщений: 7



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

Вернуться в Вопросы программирования в C++Builder