![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 например.
В нём смотришь, если строка четная, то красишь серым, если нет - белым.