Главная страница
    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.45 MB
Время: 0.044 c
10-1135338727
Bleed
2005-12-23 14:52
2007.08.26
Методы и Свойства COM объекта


2-1185615743
Alex8
2007-07-28 13:42
2007.08.26
SQL


15-1185473815
sdarqweqwe
2007-07-26 22:16
2007.08.26
настройка windows


9-1156239437
VitaWED
2006-08-22 13:37
2007.08.26
Большие сцены в OpenGL


2-1185952855
denis24
2007-08-01 11:20
2007.08.26
postmessage на получение фокуса окном





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский