![]() |
|
![]() ![]() ![]() |
|
ehy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Здравствуйте, подскажите пожалуйта!
Есть таблица в БД, данные из которой выводятся в dbGrid. Необходимо добавить в grid ещё один столбец с CheckBox, не связанный с таблицей в БД, чтобы использовать все записи отмеченные галочкой, например выводить в отчет. Предполагаю, что можно использовать компонент DBGridEh, но никак не могу с ним разобраться... Если не трудно опишите пошагово... Ещё буду очень благодарна за русский мануал по EhLid ![]() |
|||
|
||||
ALeXandrK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
Обычно это учитывают в базе данных, создавая соответствующее поле.
-------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
|||
|
||||
ehy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
В том то все и дело, что нет необходимости загромаждать таблицу в БД лишним полем... Попробую ещё раз описать: Есть например список дисциплин, с их характеристиками, и надо выбрать для конктерного отчета, только некоторые из них! В базе эту информацию хранить нет смысла, т.к. для следующего отчета, могут быть выбраны другие дисциплины |
|||
|
||||
ALeXandrK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
Ну тебе же по лубому нужно показать checkbox для записи, а
наиболее удобно для этого создать доп. поле. Это ж не загромаждение, а необходимая функциональность. Если не хочешь хранить доп. поле, то просто создавай его в Run-Time и удаляй перед сохранением БД. Другие варианты здесь просто будут более сложные, при чем эта сложность не будет оправдана. Не придумывай велосипед с квадратными колёсами! -------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
|||
|
||||
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Одно могу сказать, в стандартных дельфовских компонентах такого нет. А так, посмотри на
www.torry.net, может там что найдешь. А вообще, действительно кажется слишком уж создавать отдельное поле для галок. Тем более что теперь каждый раз это поле очищать, так как предполагается, что нужно будет каждый раз выводить список и каждый раз выбирать нужные элементы. Так что покопай пока-что www.torry.net, а к тому моменту более опытные форумчане может что посоветуют, а может подтвердят то, что нужно создавать отдельное поле. |
|||
|
||||
Savek |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 10.4.2006 Где: Воронеж Репутация: 7 Всего: 7 |
Если доп. поле не создавать, то список значений где-то нужно хранить. Здесь видится такой вариант: в грид добавляем колонку, не подключенную к датасету и в событии OnDrawColumnCell отрисовываем в этой колонке изображение CheckBoxa. При нажатии мышкой на указанное поле добавляем номер соотв. строки в StringList (это будет список отмеченных чекбоксов) или удаляем его оттуда, если оно там уже есть. При отрисовке проверяем наличие текущей строки в StringList-е и рисуем изображение отмеченного/неотмеченного чекбокса. Процедура отрисовки чекбокса может выглядеть так:
вот ее вызов
вроде понятно изложил... |
||||
|
|||||
ehy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Спасибо большое, что откликнулись! Буду рыть дальше))))
Savek, а что это - StringList? Компонент? Свойство DBGrid? Что-то не могу понять ![]() |
|||
|
||||
Fighter |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Так а что тут рыть, тебе вроде непосредственно ответили.
|
|||
|
||||
Savek |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 10.4.2006 Где: Воронеж Репутация: 7 Всего: 7 |
||||
|
||||
ALeXandrK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: 2 Всего: 6 |
Мне кажется вы начили танцевать с бубном.
Добавлять и удалять поле намного проще, да и работать с данными таким образом тоже проще! -------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
|||
|
||||
Savek |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 355 Регистрация: 10.4.2006 Где: Воронеж Репутация: 7 Всего: 7 |
||||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
можно непосредственно в компоненте TDataSet создать новое поле типа Boolean (fkData), например с именем 'ToReport'. Не путай, не в самой таблице на диске, а в компоненте. Далее в гриде, в свойствах столбца поставить CheckBox := True.
Теперь можно и так узнать, что отправлять в отчет:
|
|||
|
||||
ehy |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.10.2007 Репутация: нет Всего: нет |
Akella, Насколько я поняла, ты работаешь с EhLib? Тогда конкретный вопросик про него:
Новое поле я создала и в DataSetе и в Grid добавила и CheckBo добавила, это мне в принципе и так понятно было, да и способ отбора для отчета тоже! Вопрос в другом: когда запускаю проект, колонка с чекбоксами неактивна(галочки поставить нельзя!). Пробовала делать это поле вычисляемым и присваивать значение False, тогда поле активно, галочек нет, но и поставить их нельзя. Если назначить на клик мыши FieldValue['Поле'] = True, то галочка ставиться, но не сохраняется (при клике на другой строке исчезает). Где я ошибаюсь? Может не на клик надо назначать FieldValue['Поле'] = True? Может поле должно быть не вычисляемым? Кажется я просто упускаю, ещё какую-то небольшую настройку! Подскажи, плиз! Заранее спасибо! |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
ну не знаю, как ты там создавала, вот тебе примерчег
Присоединённый файл ( Кол-во скачиваний: 111 ) ![]() |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
а так, как состояние значений полей может запоминаться, то чтобы не мучаться, то при открытии формы выполняй запрос
Напиши хранимку, которая будет выполнять этот запрос Это сообщение отредактировал(а) Akella - 8.11.2007, 00:10 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |