Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

"Полосатый" DBGrid и несколько выделенных записей ... [D7, XP]


Страницы:   1 2

TUserClass ©   (2008-07-11 11:03:00) 

Доброе утро знатокам! :)

Вот захотелось немного расскрасить строки грида через одну, код следующий (в DrawColumnCell):

 If TDBGrid(Sender).DataSource.DataSet.RecNo mod 2 = 1 then begin
   TDBGrid(Sender).Canvas.Brush.Color := GridODDColor;
 end;

 If gdSelected in State then begin
   TDBGrid(Sender).Canvas.Brush.Color := clHighLight;
   TDBGrid(Sender).Canvas.Font.Color := clHighLightText;
 end else begin
   TDBGrid(Sender).Canvas.Font.Color := clWindowText;
 end;


Но вот если выделено несколько записей, то higlight'ом отрисовываются только те выделенные строки, которые не попадают под это условие TDBGrid(Sender).DataSource.DataSet.RecNo mod 2 = 1, а те которые попадают, рисуются цветом GridODDColor. И даже If gdSelected in State then beginне помогает (помогает, толькое если выделенна одна запись). Перепробовал весь набор State, все равно не помогает. Есть ли способ исправить это, не перебирая SelectedRows?


TUserClass   (2008-07-11 11:38:00) [21]


> Ega23 ©   (11.07.08 11:37) [11]


Ну ты мне придумай другое условие....я пока не нашел...


TUserClass   (2008-07-11 11:38:00) [22]


> Поросенок Винни-Пух ©   (11.07.08 11:35) [10]


ААААА.... Спасибо- помогло...ну теперь осталось решить только вопрос с получением четности :)


Ega23   (2008-07-11 11:37:00) [23]


> УУУУ....это плохо ... неужели отказываться от чередоания
> цветов o_O ??? ((((


Да пойми ты наконец, что чередование цветов и RecNo никак не связаны. Вообще.
У DBGrid есть N записей, которые отображаются в данный момент времени. Вот их и раскрашивай. TDataSet тут вообще ни при чём.


Поросенок Винни-Пух   (2008-07-11 11:35:00) [24]

И даже If gdSelected in State then begin не помогает (помогает, толькое если выделенна одна запись).

TDBGrid.SelectedRows.CurrentRowSelected


TUserClass   (2008-07-11 11:34:00) [25]


> Anatoly Podgoretsky ©   (11.07.08 11:33) [8]


УУУУ....это плохо ... неужели отказываться от чередоания цветов o_O ??? ((((


Anatoly Podgoretsky   (2008-07-11 11:33:00) [26]

> TUserClass  (11.07.2008 11:26:05)  [5]

Оно работает в ограниченом количестве случаев, для этого нужна особая среда.


TUserClass   (2008-07-11 11:32:00) [27]

Ну не в этом суть - как мне некрасить выделенне то ? :)


Поросенок Винни-Пух   (2008-07-11 11:26:00) [28]

если DataSet.IsSequenced можно юзать recno не опасаясь


TUserClass   (2008-07-11 11:26:00) [29]


> Anatoly Podgoretsky ©   (11.07.08 11:24) [3]


Да я согласен .. но я не нашел другого способа узнать, четная ли строка или нет - просто у кого то увидел это условие и оно работает .. :)


Ega23   (2008-07-11 11:25:00) [30]


> 2. А TDataSet.RecNo приходится использовать ибо я не знаю
> другого способа получить четность строки :)


Я бы в сторону DBGrida копал. В конце-концов он отображает. И Rows у него, вообще-то, тоже есть. Тогда независимо от RecNo грид сам будет красить.

Вобщем, дело такое.


Anatoly Podgoretsky   (2008-07-11 11:24:00) [31]

> TUserClass  (11.07.2008 11:14:02)  [2]

RecNo не является никаким признаком четности в гриде. Более того оно даже не являтся признаком четности в датасете.


TUserClass   (2008-07-11 11:14:00) [32]


> Ega23 ©   (11.07.08 11:10) [1]


1. С королевства я даже скачал исходник - там тоже самое ((.

2. А TDataSet.RecNo приходится использовать ибо я не знаю другого способа получить четность строки :)


Ega23   (2008-07-11 11:10:00) [33]

1. Рекомендую к прочтению статью "Цветной DBGrid" (вроде на Королевстве была, погугли).
2. Не рекомендую активно пользовать свойство TDataSet.RecNo. Опасное свойство. Работает далеко не у всех потомков TDataSet и, зачастую, с разными неожиданными эффектами.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо