Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизВыделение строк в DBGrid с помощью ChackBox ов Найти похожие ветки
← →
КаПиБаРа © (2005-02-03 13:06) [0]Пользователю нужно отметить в DBGrid некоторые строки для последующих операций с ними.
В голову приходит много всяких способов реализации. Какие провереные способы посоветуете?
← →
Sergey13 © (2005-02-03 13:09) [1]>В голову приходит много всяких способов реализации
Агласите весь список пожалста. (с) Операция Ы
← →
КаПиБаРа © (2005-02-03 13:28) [2]Sergey13 © (03.02.05 13:09) [1]
Добывить вычисляемое логическое поле в DataSet или пустой столбец в DBGrid. При клике на ячейке отмечать строку в букмарке или заносить ИД в массив. Что лучше? Нужно компетентное мнение.
← →
Соловьев © (2005-02-03 13:35) [3]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=168#link6
← →
Sergey13 © (2005-02-03 13:35) [4]>Добывить вычисляемое логическое поле в DataSet
Можно попробовать, но наверное не вычисляемое, а фиктивное.
>или пустой столбец в DBGrid
Это вряд ли.
Я делал так. Заливал НД в таблицу в памяти RxMemoryData, добавлял в него поле и совал это все в грид с галочкой. Вместо RxMD можно юзать CDS.
> Нужно компетентное мнение.
У меня его нет.
← →
Vlad © (2005-02-03 13:38) [5]
> КаПиБаРа © (03.02.05 13:28) [2]
select null as Selection, a.* from table a
получаем фиктивное поле в наборе данных, и, соотв. в гриде.
Там, в событии OnDrawColumnCell прорисовываем Чекбоксы. Затем, обрабатываем клик на этом поле.
← →
Johnmen © (2005-02-03 13:39) [6]Добавляешь в запрос фиктивное поле.
А в наборе данных с ним манипулируешь, как хочешь.
Детали зависят от БД, движка etc...
← →
New11 (2005-02-03 13:46) [7]а MultiSelection на что?
← →
New11 (2005-02-03 13:54) [8]или СheckListBox можно заюзать
← →
msguns © (2005-02-03 14:33) [9]>Johnmen © (03.02.05 13:39) [6]
>Добавляешь в запрос фиктивное поле.
А в наборе данных с ним манипулируешь, как хочешь.
Так ведь НД вроде как нередактируемый ? Если, конечно, не клиентский датасет.
Я делал когда-то так:
Создавал список (TList) идентификаторов помеченных записей
Когда узер тыкает (отмечает) нужную запись, то ее ID ищется в списке и, если не находится, то добавляется, иначе - удаляется
В событии перерисовки ячейки ID перерисовываемой записи (немного коряво звучит, но здесь поймут, надеюсь) ищу в списке. Если есть, то рисую "галочку" (или жмякнутый чекбокс), если нет, то ничего не рисую или нежмякнутый чекбокс.
Учитывая, что обычно "жмякнутых" записей бывает немного, то список не бывает большим и поиск выполняется мгновенно.
>New11 (03.02.05 13:46) [7]
>а MultiSelection на что?
Это не то, что надо
>New11 (03.02.05 13:54) [8]
>или СheckListBox можно заюзать
Еще лучше ;))
← →
Vlad © (2005-02-03 14:36) [10]
> msguns © (03.02.05 14:33) [9]
примерно так и описано на Королевстве (см. ссылку Соловьева)
как вариант можно и поле добавить, почему НД обязательно нередактируемый?
← →
DSKalugin © (2005-02-03 14:47) [11]Я так понимаю это поле типа Boolean
остается написать свой прорисовщик ячейки
← →
КаПиБаРа © (2005-02-03 15:19) [12]Всем спасибо. Обошолся без фиктивного поля просто отобразил колонку не связанную с полем в DBGrid
← →
КаПиБаРа © (2005-02-03 15:21) [13]Сделал как msguns © (03.02.05 14:33) [9] написал, только вместо TList использовал массив.
← →
Sergey13 © (2005-02-03 15:21) [14]2[12] КаПиБаРа © (03.02.05 15:19)
Т.е. ты дал
>Пользователю отметить в DBGrid некоторые строки для последующих операций с ними.
Или пока только галок наставил?
← →
Sergey13 © (2005-02-03 15:22) [15]2[13] КаПиБаРа © (03.02.05 15:21)
А-а. ну тогда ясно.
← →
Johnmen © (2005-02-03 15:30) [16]>КаПиБаРа © (03.02.05 15:21) [13]
Такой способ более громоздкий и менее гибкий...
← →
Соловьев © (2005-02-03 15:52) [17]2 КаПиБаРа ©
а сходить по ссылке мы не можем? там ражевано и пример выложен. бери не хочу...
← →
msguns © (2005-02-03 16:02) [18]>КаПиБаРа © (03.02.05 15:21) [13]
>Сделал как msguns © (03.02.05 14:33) [9] написал, только вместо TList использовал массив.
А у TList есть несколько оч.хороших методов. Например, сортировка ;))
>Johnmen © (03.02.05 15:30) [16]
>КаПиБаРа © (03.02.05 15:21) [13]
>Такой способ более громоздкий и менее гибкий...
Глупости говоришь, Женя.
← →
КаПиБаРа © (2005-02-03 16:05) [19]Johnmen © (03.02.05 15:30) [16]
Фиктивное поле для чего? Не понял как в него отмеченные значения попадать будут и где хранится?
НД не редактируемый.
← →
Johnmen © (2005-02-03 16:06) [20]>msguns © (03.02.05 16:02) [18]
>Глупости говоришь, Женя.
И, естественно, я спрашиваю, в чём глупости ?
← →
Johnmen © (2005-02-03 16:10) [21]>КаПиБаРа © (03.02.05 16:05) [19]
>Фиктивное поле для чего?
Для хранения признака выбранности.
>Не понял как в него отмеченные значения попадать будут и где хранится?
Ты их будешь туда загонять. Храниться в НД.
>НД не редактируемый.
Сделай редактируемым.
← →
msguns © (2005-02-03 16:26) [22]>Johnmen © (03.02.05 16:06) [20]
>И, естественно, я спрашиваю, в чём глупости ?
Естественно, отвечаю: вот в этом
более громоздкий и менее гибкий...
И вот теперь ты мне ответь, в чем твой способ компактнее и гибче. Особенно в свете вот этого:
>Johnmen © (03.02.05 16:10) [21]
>Ты их будешь туда загонять. Храниться в НД.
и
>Сделай редактируемым.
← →
Johnmen © (2005-02-03 17:08) [23]>msguns © (03.02.05 16:26) [22]
Отвечаю.
Не надо писать доп.кода обслуживания массива/TList/etc, его синхронизации с НД.
Если имеем поле в НД, то для его обслуживания достаточно обработать соотв. онклик. Синхронизация уже есть.
← →
msguns © (2005-02-03 17:54) [24]>Johnmen © (03.02.05 17:08) [23]
Ну да, написать метод добавления/удаления ID в список (5 строк)
в обработчике события строку поиска в списке, конечно, намного гормозче, чем делать датасет редактируемым ;))
← →
msguns © (2005-02-03 17:55) [25]Поправка:
Ну да, написать метод добавления/удаления ID в список (5 строк)
и в обработчике клика строку поиска в списке, конечно, намного гормозче, чем делать датасет редактируемым ;))
← →
Johnmen © (2005-02-03 17:59) [26]>msguns © (03.02.05 17:54) [24]
Пятью строками не отмажешься...:)
← →
msguns © (2005-02-03 18:23) [27]>Johnmen © (03.02.05 17:59) [26]
>Пятью строками не отмажешься...:)
Исполнительных (без деклараций и begin..end) ровно 5 строк. Специально не буду выкладывать, бо тебе просто лень мозгами раскинуть. ;)
← →
Johnmen © (2005-02-03 18:26) [28]>msguns © (03.02.05 18:23) [27]
В данный момент не лень. Но видится далеко не 5
Может выложишь ? :)
← →
Соловьев © (2005-02-03 18:29) [29]
> [27] msguns © (03.02.05 18:23)
> [28] Johnmen © (03.02.05 18:26)
я напишу в одну строку :)
← →
Vlad © (2005-02-03 18:36) [30]
> Johnmen © (03.02.05 18:26) [28]
Я тоже что-то подобное писал. Строк и правда далеко не 5.
Но есть один плюс - не надо скроллировать DataSet чтобы считать ID-шники всех записей которые галками отмечены.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.04 c