就是改变horzline和vertline线的颜色呀,有高手吗?

解决方案 »

  1.   

    在StringGrid组件DrawCell事件中
    StringGrid1.Canvas.Pen.Color:=clRed;
    StringGrid1.Canvas.MoveTo(rect.Left,rect.Top);
    StringGrid1.Canvas.LineTo(rect.Left,rect.Bottom );
    这只是一个例子,你可以试试!
      

  2.   

    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    begin
      with TStringGrid(Sender).Canvas do
      begin
        Pen.Color := clRed;
        Brush.Style := bsClear;
        Rectangle(Rect);
      end;
    end;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  3.   

    字体颜色的实例,同时选中背景的颜色可以自定义,双击要选的网格
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, ADODB, Grids, DBGrids,StdCtrls;type
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        DataSource1: TDataSource;
        ADOQuery1: TADOQuery;
        Button1: TButton;
        procedure DBGrid1Enter(Sender: TObject);
        procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
          DataCol: Integer; Column: TColumn; State: TGridDrawState);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}function get_dbg_edit_text(dbgrid :tdbgrid):TEdit;
    var i:integer;
    begin
    result := nil;
    if not assigned(dbgrid) then exit;
    if not dbgrid.EditorMode then
       begin
       dbgrid.EditorMode:=true;
       dbgrid.EditorMode:=false;
       end;
       with dbgrid do for i:=0 to pred(componentcount) do
        if components[i] is Tcustomedit then
        begin
         result := tedit(components[i]);
         break;
        end;end;function get_dbg_edit(dbgrid : tdbgrid): string;
    var
       dbg_edit :TEdit;
    begin
       dbg_edit:=get_dbg_edit_text(dbgrid);
       if assigned(dbg_edit) then
       result := dbg_edit.text
       else result:='';
    end;procedure TForm1.DBGrid1Enter(Sender: TObject);
    {显示当前编辑框背景颜色}
    var
        dbg_edit : tedit;
    begin
        dbg_edit:=get_dbg_edit_text(tdbgrid(sender));
        if assigned(dbg_edit) then dbg_edit.color:=clyellow;
    end;procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    //DBGrid1DrawColumnCell事件。
    //sex字段为女的,字体颜色为红色,其它的为蓝色:
     if Adoquery1.FieldByName('sex').Asstring = '女' then
      DBGrid1.Canvas.Font.Color := clRed
     else
      DBGrid1.Canvas.Font.Color := clBlue;
     DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;end.
      

  4.   

    lzybfs(lzybfs):
    你的办法实际上是在Rect的四周画上了4条线,这样和指定FrameRect的Pen是一样的。在中间会有一条很细的白线。
      

  5.   

    lzybfs(lzybfs):
    不好意思,你的方法是框线加粗了。lxpbuaa(桂枝香在故国晚秋) :
    你的方法是每个cell的中间会出现一条细白线
      

  6.   

    在StringGrid组件DrawCell事件中
    StringGrid1.Canvas.Pen.Color:=clRed;
    StringGrid1.Canvas.MoveTo(rect.Left-1,rect.Top);
    StringGrid1.Canvas.LineTo(rect.Left-1,rect.Bottom );
    这只是一个例子,你可以试试!