Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

Выделение строк в 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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.087 c
1-1108637607
Lord Zmiy
2005-02-17 13:53
2005.03.06
Замена KEY


14-1108057598
Franzy
2005-02-10 20:46
2005.03.06
Русификация Win2k eng - проблема


14-1108112967
yanval
2005-02-11 12:09
2005.03.06
Шиза в интернете (более модератору)


1-1108563308
Timofey
2005-02-16 17:15
2005.03.06
Просмотр страниц в TWebBrowser


1-1108523985
Wowa-K
2005-02-16 06:19
2005.03.06
Быстрая вставка данных в Word