Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.26;
Скачать: CL | DM;

Вниз

Цветные строки в DBGrid.   Найти похожие ветки 

 
Kolan ©   (2007-08-01 15:55) [0]

Мне нужно раскрасить нечет. строки. Трудность в том как кзнать что тек строка нечётная&#133

1. По RecNo?
— Попадаются так, что подряд идут две нечётных строки :(

2. Думал что победил проблему так:
var
 Coords: TGridCoord;
begin
 if Sender is TDBGridEh then
   with Sender as TDBGridEh do
   begin
     Coords := MouseCoord(Rect.Left, Rect.Top);
     
     if gdSelected in State then
       Canvas.Brush.Color := clHighlight
     else
     begin
       if Odd(Coords.Y) then
       begin
         Canvas.Brush.Color := $00EEEEEE;
       end
       else
         Canvas.Brush.Color := clWindow;
     end;
     DefaultDrawColumnCell(Rect, DataCol, Column, State);
   end;
end;


Однако в этом случае Coords.Y = 1 будет не у первой из всех отображенных, а у верхней видимой.
То есть если строк 100.А окно маленькое и чел видит 2-20, то верхняя строка, на самом деле вторая по счёту, будет первой и ессно все испортится :(

Как его раскарасить правильно ?


 
clickmaker ©   (2007-08-01 16:00) [1]

статью "полосатый грид" на delphikingdom.ru читал?


 
Kolan ©   (2007-08-01 16:31) [2]

> статью «полосатый грид» на delphikingdom.ru читал?

Млин че я не догался сам. Читал ведь про ActiveRecord.
Благодарю :)


 
Kolan ©   (2007-08-01 16:40) [3]

Поспешил :(
  if TFakeGrid(Sender).DataLink.ActiveRecord and 1 <> 0 then
    TDBGrid(Sender).Canvas.Brush.Color:=$00EEEEEE;

Неработает. ActiveRecord &#151; странные значения принимает&#133


 
Kolan ©   (2007-08-01 16:45) [4]

Блин, наврал. Просто там код не полный был, а я подумал, что это все что надо.
Так:
procedure TMainForm.StationaryDBGridEhDrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumnEh;
 State: TGridDrawState);
begin
 if Sender is TDBGridEh then
 begin
    if Odd(TFakeGrid(Sender).DataLink.ActiveRecord) then
       (Sender as TDBGridEh).Canvas.Brush.Color := $00EEEEEE
    else
      TDBGrid(Sender).Canvas.Brush.Color := clWindow;
    (Sender as TDBGridEh).DefaultDrawColumnCell(Rect, DataCol, Column,
      State);
 end;
end;


Вроде нормально :)


 
Плохиш ©   (2007-08-01 17:13) [5]


>     if Odd(TFakeGrid(Sender).DataLink.ActiveRecord) then

Для первой видимой строки ActiveRecord всегда равен нулю, поэтому при скроллинге перемещается только содержимое строк, но не закраска.



Страницы: 1 вся ветка

Текущий архив: 2007.08.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
15-1185515813
Vlad Oshin
2007-07-27 09:56
2007.08.26
Что-то вот подумалось. Подавить ошибки, кто-то когдато спрашивал


1-1182243710
DrAndrew
2007-06-19 13:01
2007.08.26
Ошибка #10061 у IdHTTP1. Как исправить?


15-1185806075
DillerXX
2007-07-30 18:34
2007.08.26
Я может слишком жалостлив к людям, но...


2-1185786383
tytus
2007-07-30 13:06
2007.08.26
MS Excel - Как закрасить диапазон ячеек ?


2-1186392643
pirks
2007-08-06 13:30
2007.08.26
Железо