Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизЦветные строки в DBGrid. Найти похожие ветки
← →
Kolan © (2007-08-01 15:55) [0]Мне нужно раскрасить нечет. строки. Трудность в том как кзнать что тек строка нечётная…
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 — странные значения принимает…
← →
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