Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Вниз

Цветные строки в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.044 c
15-1185058346
Каникулы
2007-07-22 02:52
2007.08.26
Кто может объяснить кубические сплайны словами?


2-1185996421
Мануха
2007-08-01 23:27
2007.08.26
chart


2-1185830237
_Anton
2007-07-31 01:17
2007.08.26
Узнать полезное пространство


15-1185309114
Dr. Andrew
2007-07-25 00:31
2007.08.26
Как прервать инсталляцию в Inno Setup до распаковки файлов?


2-1186099361
Riply
2007-08-03 04:02
2007.08.26
RtlDecompressBuffer - использование в цикле.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский