如题,即可以分别控制StringGrid1不同“网格线”的Width和Color!

解决方案 »

  1.   

    >>即可以分别控制StringGrid1不同“网格线”的Width
     StringGrid1.ColWidths[i] := 100;
      

  2.   

    to aiirii(ari-爱的眼睛) :为什么我网格线加引号?
      

  3.   

    在OnDrawCell事件中处理背景色。程序如下:
    //将第二列背景变为红色。
    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
    Rect: TRect; State: TGridDrawState);
    begin
    if not((acol=1) and (arow>=stringgrid1.fixedrows)) then exit;
    with stringgrid1 do
    begin
      canvas.Brush.color:=clRed;
      canvas.FillRect(Rect);
      canvas.TextOut(rect.left+2,rect.top+2,cells[acol,arow])
    end;
    end;
      

  4.   

    with stringgrid1 do
    begin
      canvas.Brush.color:=clRed;
      canvas.FillRect(Rect);
      canvas.TextOut(rect.left+2,rect.top+2,cells[acol,arow])
    end;在這裹再加下不同行列的判斷就可達到你的:
    分别控制StringGrid1不同“网格线”的Color
      

  5.   

    to aiirii(ari-爱的眼睛):你也回答太快了,我说的是“网格线”,不是网格.
      

  6.   

    再申明一下我需要控制“网格线”——GridLine的Width和Color,而不是“网格”。
      

  7.   

    你是想要花花绿绿的边框线是吗,没问题,也可以在DrawCell中写代码,
      

  8.   

    >>“网格线”,不是网格.
    sorry, 是什麼啊??我還是不知道什麼分別
      

  9.   

    看一下这个贴.
    http://community.csdn.net/Expert/topic/3181/3181643.xml?temp=.6880152
    你会明白的
      

  10.   

    StringGrid1.ColWidths[1] := 100;
      StringGrid1.ColWidths[2] := 50;
      StringGrid1.ColWidths[3] := 10;
      

  11.   

    不是ColWidth,我需要控制不同网格线(竖线)的宽度和颜色!
      

  12.   

    //参考如下代码~~
    function ZoomRect(mRect: TRect; mZoom: Integer): TRect;
    begin
      Result.Left := mRect.Left - mZoom;
      Result.Right := mRect.Right + mZoom;
      Result.Top := mRect.Top - mZoom;
      Result.Bottom := mRect.Bottom + mZoom;
    end; { ZoomRect }type
      TStringGridEx = class(TStringGrid);procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    const
      cPenWidth = 2;
    begin
      if ACol < TStringGrid(Sender).FixedCols then Exit;
      if ARow < TStringGrid(Sender).FixedRows then Exit;
      TStringGrid(Sender).OnDrawCell := nil;
      try
        TStringGridEx(Sender).DrawCell(ACol, ARow, Rect, State);
      finally
        TStringGrid(Sender).OnDrawCell := StringGrid1DrawCell;
      end;
      TStringGrid(Sender).Canvas.Brush.Style := bsClear;
      TStringGrid(Sender).Canvas.Pen.Width := cPenWidth;
      TStringGrid(Sender).Canvas.Pen.Color := clRed;
      TStringGrid(Sender).Canvas.Rectangle(ZoomRect(Rect, 1));  if ACol = 2 then
      begin
        TStringGrid(Sender).Canvas.Pen.Color := clGreen;
        TStringGrid(Sender).Canvas.MoveTo(Rect.Left - 1, Rect.Top - 1);
        TStringGrid(Sender).Canvas.LineTo(Rect.Left - 1, Rect.Bottom + 1);
      end;
      if ACol = 1 then
      begin
        TStringGrid(Sender).Canvas.Pen.Color := clGreen;
        TStringGrid(Sender).Canvas.MoveTo(Rect.Right, Rect.Top - 1);
        TStringGrid(Sender).Canvas.LineTo(Rect.Right, Rect.Bottom + 1);
      end;
    end;
      

  13.   

    网格线的宽度和颜色,得要自已画了,用stringgrid1.canvas.pen属性