Чекбоксы в DBGridEh

Вопросы стыковки визуальных компонент (DataControls, EhGrid, VirtualTreeView, DevExpress и т.п.) с данными из БД.

Модераторы: kdv, CyberMax

Ответить
AnryGTR
Сообщения: 116
Зарегистрирован: 15 янв 2007, 15:58

Чекбоксы в DBGridEh

Сообщение AnryGTR » 29 янв 2007, 18:42

Есть DBGridEh. В нём создаю искуственную колонку с чекбоксами. Но они почему-то не нажимаются
т.е. состояние не меняется у этих чексов, они какбы недоступны, хотя сетка не ReadOnly...:-(
Мне хотелось бы узнать, может кто справлялся с этой задачкой:
мне нужно, чтоб я отметил сколько угодно строк по этой колонке, а потом допустим, по нажатию
батона - в массив передались бы ID тех записей, которые были отмечены по этой искуственной
колонке...

Заранее Благодарен всем кто откликнется!

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 29 янв 2007, 19:32

Что такое "искусственная колонка с чекбоксами"?

AnryGTR
Сообщения: 116
Зарегистрирован: 15 янв 2007, 15:58

Сообщение AnryGTR » 30 янв 2007, 06:14

Эта колонка которая добавляется с помощью Add в design-time, не указывает на какое-то конкретное поле...

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 30 янв 2007, 09:43

Вариант 1. В запросе добавь:

Код: Выделить всё

    0 AS SELECTED -- Флажок выключен по дефолту
либо

Код: Выделить всё

    1 AS SELECTED -- Флажок включен по дефолту
Вариант 2. В ран-тайме создавай BooleanField:

Код: Выделить всё

  SelField := TBooleanField.Create(Owner);
  ... // Инициализация поля
  Field.Add(SelField);
Единственно, будет вызываться обновляющий запрос. Поэтому придется подавлять его вызов.
Последний раз редактировалось CyberMax 30 янв 2007, 11:45, всего редактировалось 1 раз.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 30 янв 2007, 10:49

CyberMax писал(а):1. В запросе добавь:
Ты и меня запутал своей нумерацией. Надо было так и написать "вариант 1", а то эти "1, 2" выглядят как очерёдность действий :wink:

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 30 янв 2007, 11:48

WildSery писал(а):Ты и меня запутал своей нумерацией.
Спасибо, поправил :).

break
Сообщения: 58
Зарегистрирован: 12 май 2005, 11:03

Сообщение break » 30 янв 2007, 21:25

Я вообще делаю немного по другому: Для каждой формы с гридом есть динамический целочисленный массив и при клике по "искусственной ячейке выделения" сразу заношу очередное выделенное ID в этот массив. А если оно там уже есть убираю от туда. Таким образом не прийдется делать FetchAll для датасета связанного с гридом когда понадобится получить ID всех отмеченных ячеек. А данных иногда бывает много - вполне возможна задержка.

Кстати я вообще не использую Дизайн-тайм поля для датасетов, а сделал бы так

select 0 SEL, t.*
from TABLE t

И создал бы колонку SEL. - Кстати для которой можно перекрыть метод OnDrawColumnCell и выводить какие угодно галочки абсолютно в любом гриде - даже в стандартном. Уменя в программе такая колонка есть практически во всех гридах - для удобства работы пользователей.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 31 янв 2007, 11:06

break писал(а):Кстати для которой можно перекрыть метод OnDrawColumnCell и выводить какие угодно галочки абсолютно в любом гриде - даже в стандартном.
Читаем невнимательно или не знаем что такое DBGridEh?
Там встроенная поддержка чекбоксов на любом типе поля.

Ответить