Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1108570275
GanibalLector
2005-02-16 19:11
2005.03.06
"ХР-манифест"


3-1107148450
Garry_c
2005-01-31 08:14
2005.03.06
Активизация триггеров в IB


1-1108993267
Mouserx
2005-02-21 16:41
2005.03.06
Скроллинг при добавлении текста в Memo


14-1108132236
wl
2005-02-11 17:30
2005.03.06
Раз уж заговороли о HTML...


1-1108749752
Техник Харлан
2005-02-18 21:02
2005.03.06
Вставка Flash-карты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский