Главная страница
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.47 MB
Время: 0.017 c
1-1182165752
Makhanev Alexander
2007-06-18 15:22
2007.08.26
Как убить поток...


9-1158659677
Slavikkk
2006-09-19 13:54
2007.08.26
Автовыключение в ODE


2-1185204031
nikfel
2007-07-23 19:20
2007.08.26
Функция LoadImage.


15-1185239853
Ганнибал
2007-07-24 05:17
2007.08.26
Нужна программа


15-1185885464
Piter
2007-07-31 16:37
2007.08.26
Где хранят информацию Java MIDP программы?