Консультация № 86477
11.05.2007, 19:43
0.00 руб.
0 2 2
Уважаемые Эксперты подскажите как мне добавить CheckBox в DataGrid

В датагриде создаю поле шаблон в виде CheckBox которое должно обращаться к таблице к булевому полю и при загрузке должен показать если там тру то галочка стоит если фалс то галочка отсутствует.

А так же как обрашаться к этому созданному полю CheckBox, те нажал на галочку данные внесены в таблицу и тд.

Обсуждение

Неизвестный
11.05.2007, 22:38
общий
это ответ
Здравствуйте, Aspnet!
Во всех известных мне (free) DataGrid возможности отображать CheckBox нет.
Для решения проблемы необходимо приобретать DataGrid с необходимыми свойствами.
Либо, что менее привлекательно, использовать эмуляцию.
(по клику в ячейке идет обращение непосредственно к рекордсету, и только после программно изменения записи рекордсета обновляется Grid)

Я находил библиотеку объявленую как Free -SCGrid.ocx
В дэмках все было прекрасно, масса "наворотов". но фактически оказалась ShareWare, и сейчас уже не работает.

Евгений.
Неизвестный
14.05.2007, 15:26
общий
это ответ
Здравствуйте, Aspnet!
Я тоже столкнулся с проблемой, что доступные бесплатные DataGrid не поддерживают CheckBox.
Поступил по другому ( пример для DAO Access ) :
1. в базе имеется поле Sel логического типа
2. в запросе создается поле " select iif ( sel , ‘®‘ , ‘ ‘ ) as se, ... " которое выводится на экран
3. можно создать в DataGrid кнопки для полей
4. в DataGrid создаются процедуры обработки событий :
Private Sub DBGrid1_ButtonClick ( ByVal ColIndex As Integer )
Private Sub DBGrid1_DblClick ( )
Private Sub DBGrid1_KeyPress ( KeyAscii As Integer )
внутри которых находится код :
With Form4.Data1.Recordset
‘DBGrid1 находится на форме Form4 и подключен к источнику данных Data1
.Edit
!sel = Not !sel
.Update
End With

т.е. после действий пользователя ( нажатии на кнопки в поле, двойном нажатии на строке или нажатии любой клавиши - стрелки на дополнительной клавиатуре не обрабатываются ) в столбце появляется или исчезает символ.
Затем после нажатия книпки "Выполнить" обрабатываются выбранные записи :
dbf.execute "update base set ... where sel"
Таким приемом пользуюсь около пяти лет, удобно и пользователи привыкли.

Если будут вопросы, пишите Jones@rusfaq.ru
С уважением.
Форма ответа