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

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

DBGrid, раскраска строчек [D6, WinXP]


avsam ©   (2005-01-28 16:50:00) 

Как ищменить DBGrid, чтоб в нем цвет строк чередовался?
Т.е. одна строка белая, вторая серая...


avsam   (2005-01-29 21:53:00) [1]

Решил проблему.
В DBGrid1DrawColumnCell для Grid пишем

if DBGrid1.Datasource.Dataset.RecNo mod 2 = 0 then
один цвет
else
другой.

Устроил именно RecNo. Счетчик не может работать, так как при скроллинге и при перелистывании получается неверно.


Johnmen   (2005-01-29 01:51:00) [2]

Любой поисковик+полосатый dbgrid


tazik   (2005-01-29 00:22:00) [3]

Я, например, делаю так:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (clientDataSet1.RecNo mod 2) = 0 then
 begin
   DBGrid1.Canvas.Brush.Color := $00FAF0EB;
   DBGrid1.Canvas.Font.Color := clNavy;
 end;

if gdSelected in State then
 begin
   DBGrid1.Canvas.Brush.Color := clHighlight;
   DBGrid1.Canvas.Font.Color := clHighlightText;
   DBGrid1.Canvas.Font.Style := [fsBold];
 end;

dbGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;


Antonn   (2005-01-28 18:46:00) [4]

Gek1   (28.01.05 18:34) [5]
Ага, если честно, про mod совсем забыл:( Стареем...

ЗЫ А ФАК вообще обновляется? Подобные вопросы уже замучили...


Gek1   (2005-01-28 18:41:00) [5]


> begin...end

Склироз. :-) Действительно лучше Odd.


begin...end   (2005-01-28 18:39:00) [6]

Вы про функцию Odd не слышали?


Gek1   (2005-01-28 18:34:00) [7]


> if (ARow div 2)*2=(ARow) then

if (ARow mod 2) = 0 then

так помоему быстрее. Мелочь но всетаки!


Antonn   (2005-01-28 18:25:00) [8]


> 1. Заведи переменную и при каждой обработке прибавляй
> к ней 1.

зачем переменные?

procedure TFormConf.SG_STATUSDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var s:string;
begin
    if (ARow div 2)*2=(ARow) then begin
     SG_STATUS.Canvas.Font.Color  := clblack;
     SG_STATUS.Canvas.Brush.Color := clwhite;
    end else begin
     SG_STATUS.Canvas.Font.Color  := clwhite;
     SG_STATUS.Canvas.Brush.Color := clblack;
    end;
  SG_STATUS.Canvas.FillRect(Rect);
  SG_STATUS.Canvas.TextOut(Rect.Left, Rect.Top, SG_STATUS.Cells[ACol, ARow] );
end;
SG_STATUS - это у меня StringGrid
Надо это вместо баннера прилепить, чтоб виднее...


Shirson   (2005-01-28 17:43:00) [9]

RecNo не устраивает?

Тогда, на выбор:
1. Заведи переменную и при каждой обработке прибавляй к ней 1.
2. Вставь в запрос вычисляемое поле, которое будет выдавать порядковые номера или сразу чётность/нечётность.
3. Заведи отдельный StringList и копируй в него НД. При обработке IndrxOf даст порядковый номер.

Можно еще чего придумать.


avsam   (2005-01-28 17:17:00) [10]

Это понятно.
А как определить, четная или нечетная строка?


Shirson   (2005-01-28 17:09:00) [11]

Пишешь обработчик на DrawColumnCell например.
В нём смотришь, если строка четная, то красишь серым, если нет - белым.


Наверх

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