В Delphi, как я могу изменить цвет линий сетки в TDBGrid?

Я использую компонент TDBGrid в приложении Delphi, когда я меняю цвета строк, линии сетки становятся нечеткими или почти невидимыми.

Итак, кто-нибудь может показать нам, как изменить цвет линий сетки?

Я имею в виду: как изменить цвет границ ячеек (см. Следующую картинку)

Границы клеток

1 ответ

Решение

Вы ищете

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const [Ref] Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
  R: TRect;
begin
  R:= Rect;
  with DBGrid1.Canvas do
    begin
      Brush.Color:= clRed;
      R.Offset(Column.Width, 0);
      FillRect(R);
      R:= System.Types.Rect(Rect.Left, Rect.Bottom - 1, Rect.Right, Rect.Bottom);
      FillRect(R);
    end;
end;

Результаты будут такими:

Лучший способ (из комментария Tom Brunberg) - использовать FrameRect() как

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const [Ref] Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  with DBGrid1.Canvas do
    begin
      Brush.Color:= clRed;
      FrameRect(Rect);
    end;
end;

Используйте FrameRect(), чтобы нарисовать границу шириной 1 пиксель вокруг прямоугольной области, которая не заполняет внутреннюю часть прямоугольника шаблоном Brush. Чтобы нарисовать границу, используя Pen вместо этого, используйте метод Polygon

Другие вопросы по тегам