Форум: "Основная";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];
ВнизDBGridEh теряет расцветку Найти похожие ветки
← →
kyn66 © (2009-08-28 13:26) [0]Уважаемые мастера, помогите разобраться. Для расцветки своего грида использую следующий код:
Const
BackColors : array[Boolean] of TColor = (clWhite, clBtnFace);
...
procedure TMainFrm.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
With TDBGridEh(Sender) do
begin
if (Rect.Top = CellRect(Col, Row).Top) then
begin
Canvas.Brush.Color := clMoneyGreen;
Canvas.Font.Color := clBlack;
Canvas.Font.Style := [fsBold];
DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
end;
...
procedure TMainFrm.DBGridEh1GetCellParams(Sender: TObject;
Column: TColumnEh; AFont: TFont; var Background: TColor;
State: TGridDrawState);
begin
Background := BackColors[(Sender as TDBGridEh).DataSource.DataSet.RecNo mod 2 <> 0];
end;
Когда грид прокручивается в вертикальной плоскости, то все нормально. http://yurec66.narod.ru/Vopros/vop1.jpg . Стоит только щелкнуть по скролу вправо, чтобы увидеть спрятанные за правым краем поля, то цветность грида нарушается. http://yurec66.narod.ru/Vopros/vop2.jpg . Вернувшись обратно влево, все снова восстанавливается http://yurec66.narod.ru/Vopros/vop1.jpg . Чтобы это значило? Возможно не совсем верно выбрано событие обработки грида?
← →
KilkennyCat © (2009-08-28 13:38) [1]событие верно.
происходит выделение строки.
создайте более одной строки, чтобы видеть разницу.
привет Эхлибу.
← →
KilkennyCat © (2009-08-28 13:40) [2]добавлю, что Ваш код не предусматривает раскрашивание строки в состоянии selected
← →
kyn66 © (2009-08-28 13:48) [3]
> создайте более одной строки, чтобы видеть разницу.
А что это даст. ? СОздал еще 4 строки - разницы нет. При сдвиге вправо - разрисовка пропадает.
← →
KilkennyCat © (2009-08-28 13:49) [4]и все становятся синими?
← →
kyn66 © (2009-08-28 13:55) [5]Да http://yurec66.narod.ru/Vopros/vop3.jpg
http://yurec66.narod.ru/Vopros/vop4.jpg
← →
Медвежонок Пятачок © (2009-08-28 14:10) [6]Background := BackColors[(Sender as TDBGridEh).DataSource.DataSet.RecNo mod 2 <> 0];
А зачем это, и тем более замешанное на рекно?
Полосатость ехгрид и сам умеет поддерживать без пользовательского кода
← →
KilkennyCat © (2009-08-28 14:10) [7]
> TGridDrawState
http://www.delphimaster.ru/articles/stringgrid/index.html
[2] считать неверным
> if (Rect.Top = CellRect(Col, Row).Top) then
заменить на нормальное, учитывая выше свойство и ссылку
← →
KilkennyCat © (2009-08-28 14:12) [8]
> СОздал еще 4 строки - разницы нет. При сдвиге вправо -
> разрисовка пропадает.
Разница есть. видно, что разрисовка пропадает только у ячеек в состоянии gdSelected
← →
kyn66 © (2009-08-28 14:48) [9]
> Разница есть. видно, что разрисовка пропадает только у ячеек
> в состоянии gdSelected
Точнее сказать у "активного окна" А строка как была gdSelected так ею и осталась. Здесь что-то другое Почему-же при сдвиге влево все возвращается обратно к нормальному виду?. Раньше, как вариант, я полностью раскрытый на всю ширину грид помещал на ScrollBox и был задействован именно его скрол. Тогда се было нормально.
← →
kyn66 © (2009-08-28 14:56) [10]
> А зачем это, и тем более замешанное на рекно?Полосатость
> ехгрид и сам умеет поддерживать без пользовательского кода
Это осталось еще от применения к обычным гридам. Можно и не использовать, а воспользоваться Sequenced
← →
Медвежонок Пятачок © (2009-08-28 14:57) [11]А строка как была gdSelected так ею и осталась.
Откуда вот так сразу вся строка? Всего лишь одна ячейка.
← →
kyn66 © (2009-08-28 15:24) [12]
> Откуда вот так сразу вся строка? Всего лишь одна ячейка.
Нет, вся строка, так как у грида выставлены свойства dgRowSelect
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.004 c