![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Полосатый грид для зависимых таблиц [D7, ADS]
kyn66 © (2007-12-21 10:49:00)Хочу ешшо раз подойти к жэтому вопросу и уточнить. Вот обычный механизм, которым я делаю грид полосатым:
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 таблицы. Не помнб точно, но раньше вроде этого не замечал, могет просто не попадплось на глаза, а сейчас сплошь и рядом. Есть-ли какое конкретное решение для этого вопроса, т.е. чтобы чередование разноцветных полос было нормальным для данного вида таблиц ?
sniknik (2007-12-21 12:52:00) [1]> Однако некоторого мерцания и передергивания в данном случае не избежать...
DoubleBuffered?
или переопределить гриду метод более низкого уровня (это типа уже собственного "полосатого наследника" писать), что там по очереди, DrawCell?
kyn66 (2007-12-21 12:35:00) [2]Да , действительно работает, спасибо. Однако некоторого мерцания и передергивания в данном случае не избежать...
sniknik (2007-12-21 11:32:00) [3]> Как -то можно подправить предложенный код?
скорее нужно делать рефреш гриду после скрола, а не этот код править, т.к. грид при скроле сдвигает записи своими силами без вызова DrawColumnCell, а "выехавшая" вполне естественно оказывается того же цвета, что была у записи до этого, ведь номер строки грида по которому проверка остался тот же.
kyn66 (2007-12-21 11:11:00) [4]и опять поспешил... Прошу прощения. Оказывается этот механизм удачно работает для 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;
kyn66 (2007-12-21 10:58:00) [5]Тысяча пардонов !!! Вчера был предложен способ устранения Kolan, поспешил с постом, не проверив его. Все работает. Прошу админа закрыть тему.