| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Разноцветный DBGrid |
| Автор: MacTep 2.7.2005, 23:08 | ||||||
Привет всем! Хочу сделать так, чтобы цвет строчек в DBGrid был разным. Т.е., допустим, первая строчка светло серая, вторая темно серая, и так далее. Вот код:
Все отлично работает! Но когда мне надо сделать выборку в данной базе, то происходит следующее: номера записей различны и какие-то записи подсвечиваются в таблице светло-серым, а какие-то темно-серым цветом, т.е. не по порядку, а вразнобой. Может идти 3 светло-серых строки, а потом 5 темно-серых. А мне надо, чтобы и во всех режимах работы DBGrid чередовался цвет строк. Как этого добиться? Пытался меня строку:
на
но это мне не подходит. Работает в таком случает программа как-то странно... Посоветуйте, пожалуйста, что-нибудь! |
| Автор: ~FoX~ 4.7.2005, 09:17 |
| MacTep Придется перерисовывать каждый раз при выборке. |
| Автор: MacTep 4.7.2005, 12:16 |
| ~FoX~, каким же образом перерисовывать? Я же смотрю по номеру записи, а номер записи всегда фиксирован! |
| Автор: offline 4.7.2005, 12:30 |
| Если хочешь сделать "зебру" из DBGrid, то перейди на EHLib (GridEh), там и пример есть, как "зебра" делается |
| Автор: ~FoX~ 4.7.2005, 12:41 | ||
kirilllius Так он и юзает ehLib
MacTep Ты каким макаром выборку делаешь? Если хочешь зебру надо смотреть не на номер записи в БД, а на номер записи в рекордсете. |
| Автор: offline 4.7.2005, 12:52 |
| Ну так пусть смотрит первый пример, а именно вкладка DBLIST, чеквокс Dichromatic |
| Автор: MacTep 4.7.2005, 13:14 | ||
|
| Автор: offline 4.7.2005, 15:23 | ||
| Вот код на событие onGetCellParams у грида Взято из примера
|
| Автор: korotkov 26.4.2007, 00:29 |
| >Вот код на событие onGetCellParams у грида в этом случае чепуха при фильтрации получается FIBPlus 6.4 + EhLib 4.1 Build 4.1.4 Russian version при применении фильтра полосатость EhDBGrida исчезает, но при отмене фильтра также не появляется :( как это побороть? Added OddRowColor and EvenRowColor property to draw odd and even rows with different colors. It works only if sequence numbers are available for DataSet(DataSet.IsSequenced = True) and DataSet.RecNo return valid info. неужели нет решения? хотябы полосатость вернуть при отмене фильтра и то уже дело - отличать фильтрованные данные от полных, но как!? |
| Автор: SergeBS 26.4.2007, 07:34 |
| korotkov, DelphiKingdom - статья "Разноцветный DBGrid". В DRKB тоже есть. |
| Автор: korotkov 26.4.2007, 08:33 | ||
Разноцветный D B G R I D http://www.delphikingdom.com/asp/viewitem.asp?catalogid=168 По следам «полосатого DBGrid» http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1193 Дополнение по теме 'полосатый DBGrid' http://www.delphikingdom.com/asp/viewitem.asp?catalogid=170 >и что такое DRKB? http://www.drkb.ru/ скачать не могу, сижу на GSM GPRS инете :( интересует полосатая раскраска EhDBGrid именно при фильтрации и после, а не раскраска отдельных ячеек и их текста в зависимости от значения ячейки, это мы умеем ;) |
| Автор: Rodman 26.4.2007, 08:40 | ||
я так делал... |
| Автор: korotkov 26.4.2007, 10:05 |
| если можно поясни идею if(DataCol=0)then Inc(StrNum); что есть StrNum когда он а обнуляется? |
| Автор: Rodman 26.4.2007, 10:40 |
| это для чередования строк, грид рисует каждый в каждой строке столбцы, а потом переходит на следующую строку... просто поэкспериментируй и увидишь разницу... Покрайней мере я другого методы не нашел... |
| Автор: korotkov 26.4.2007, 12:24 |
| ... это понятно что чередования , не понятна химия if(DataCol=0)then Inc(StrNum); и где, когда обнуляется StrNum??? этим ты поборол неполосатость при фильтрации и при снятии фильтра или просто сделал полосатую таблицу? так с версии 3.6 она делается полосатой штатными средствами. |
| Автор: Rodman 26.4.2007, 13:15 | ||
да без проблем, если мой метод совершенно не подходит не юзайте. я предложил выход, каждый в праве выбирать...
срабатывает когда прорисовуется первый столбец строки, и я переключаю в это время цвет... |
| Автор: korotkov 26.4.2007, 19:05 |
| StrNum обнуляю при открытии набора данных, с надеждой что не будет переполнения, т.е. такого количества строк при выборке, сортировке или фильтрации ... ... сделал, получилось, но ... >if(DataCol=0) здесь не обязательно условие на 0, у меня например первые столбцы скрытые ;) и вся таблица получалась кремовой, поэтому в условии следует указывать номер видимого столбца в DBGrid. если потаскать поверх такого грида какое-нибудь окно, то в гриде получится венигрет с цветами строк ... ;) со скролингом данных в таблице проблема прорисовки полосатости ... и в этом варианте не работает множественное выделение цветом строк ... т.е. я не вижу какие строки я выделяю ctrl + мышка, они просто тупо перересовываются ;) |
| Автор: korotkov 30.4.2007, 23:14 |
| всеже интересует "честный" вариант полосатой таблицы при фильтрации или хотябы при отмене оной! |
| Автор: korotkov 4.5.2007, 00:37 |
| Ура, победил, нашел "честный" путь: в Options у pFIBDataSet установил poVisibleRecno = True и таблица стала полосатой и при фильтрации ;) надо иногда и описания читать, та и голова не только чтоб в нее есть ... ;) |
| Автор: Telepyz 24.12.2010, 00:08 | ||
| Че вы паритесь все просто... делаем что то вроде этого
Вот и все код не проверял, но что-то подобное использовал его немного подшлифовать и все должно работать Odd - стандартная проверка на четность |
| Автор: superVad 24.12.2010, 01:17 |
| В jvcl библиотеке ДБГрид умеет делать черезстрочную раскраску. |
| Автор: Deniz 24.12.2010, 06:58 |
| Telepyz, зачем поднимать топик 3-х летней давности, тем более что там решение уже было, как в части кода так и штатными средствами используемого грида (EHLib). Добавлено через 57 секунд PS: может модераторы закроют данную тему? |