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

Вниз

Полосатый грид для зависимых таблиц   Найти похожие ветки 

 
kyn66   (2007-12-21 10:49) [0]

Хочу ешшо раз подойти к жэтому вопросу и уточнить. Вот обычный механизм, которым я делаю грид полосатым:

procedure TRegionSprFrm.DBGridEh1GetCellParams(Sender: TObject;
 Column: TColumnEh; AFont: TFont; var Background: TColor;
 State: TGridDrawState);
begin
 if (DM1.OSTbl.RecNo mod 2 <> 0) then
  Background := clWhite
 else
  Background := clBtnFace;
end;


Подключая к гриду Query с выборкой, чередование полос нарушалось. Сейчас я заметил, такое-же нарушение имеет быть и при показе зависимой через MasterSources таблицы. Не помнб точно, но раньше вроде этого не замечал, могет просто не попадплось на глаза, а сейчас сплошь и рядом. Есть-ли какое конкретное решение для этого вопроса, т.е. чтобы чередование разноцветных полос было нормальным для данного вида таблиц ?


 
kyn66   (2007-12-21 10:58) [1]

Тысяча пардонов !!! Вчера был предложен способ устранения Kolan, поспешил с постом, не проверив его. Все работает. Прошу админа закрыть тему.


 
kyn66   (2007-12-21 11:11) [2]

и опять поспешил... Прошу прощения. Оказывается этот механизм удачно работает для Query. А когда простой зависимый Table просматриваем, то при скроллинге невидимых строк изначально они выезжают одного цвета. Повторный проход по ним урсором перекрашивает их в нужные цвета. Это не совсем то что нужно. Как -то можно подправить предложенный код?

procedure TRegionSprFrm.DBGridEh1DrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumnEh;
 State: TGridDrawState);
begin
if Sender is TDBGridEh then
begin
  with Sender as TDBGridEh do
  begin
     if Odd(TFakeGrid(Sender).DataLink.ActiveRecord) then
      Canvas.Brush.Color := $00EEEEEE
     else
       Canvas.Brush.Color := clBtnFace;
     if gdSelected in State then
       Canvas.Brush.Color := $00BFB4B2;//clSilver;//$00cccccc;
     DefaultDrawColumnCell(Rect, DataCol, Column, State);
   end;
end;
end;


 
sniknik ©   (2007-12-21 11:32) [3]

> Как -то можно подправить предложенный код?
скорее нужно делать рефреш гриду после скрола, а не этот код править, т.к. грид при скроле сдвигает записи своими силами без вызова DrawColumnCell, а "выехавшая" вполне естественно оказывается того же цвета, что была у записи до этого, ведь номер строки грида по которому проверка остался тот же.


 
kyn66   (2007-12-21 12:35) [4]

Да , действительно работает, спасибо. Однако некоторого мерцания и передергивания в данном случае не избежать...


 
sniknik ©   (2007-12-21 12:52) [5]

> Однако некоторого мерцания и передергивания в данном случае не избежать...
DoubleBuffered?

или переопределить гриду метод более низкого уровня (это типа уже собственного "полосатого наследника" писать), что там по очереди, DrawCell?



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
2-1209716088
mixcraft
2008-05-02 12:14
2008.05.25
проблема при копировании записи


15-1207649909
No_Dead
2008-04-08 14:18
2008.05.25
Мы стали слабее?%>


15-1207986208
legandr
2008-04-12 11:43
2008.05.25
Перевернулась система координат в AutoCAD


2-1208965349
smartleds
2008-04-23 19:42
2008.05.25
Подскажит плз, как при нажатии на кнопку произвести закрытие


15-1208174302
LinkOs10
2008-04-14 15:58
2008.05.25
Вопрос администраторам MSSQL