procedure TFrmauto.IGridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  vText:PChar;
begin
   with Tstringgrid(sender) do
     begin
       if ARow=0 then
         vText := PChar(trim(Cells[ACol, ARow]));
       Canvas.FillRect(Rect);
       DrawText(Canvas.Handle, vText, StrLen(vText), Rect,
       DT_CENTER or DT_VCENTER or DT_SINGLELINE);
    end;
end;

解决方案 »

  1.   

    var
      Txt:String;
    begin
      Txt:=FieldGrid.Cells[ACol,ARow];
      FieldGrid.Canvas.Rectangle(Rect);
      DrawText(FieldGrid.Canvas.Handle,
      Pchar(Txt),
               Length(Txt),
               Rect,
               DT_CENTER);
      

  2.   

    换用tms advstringgrid吧,比stringgrid好用
      

  3.   

    在StringGrid的OnDrawCell事件中写上如下代码:
    var
      Txt:String;
    begin
      Txt:=StringGrid1.Cells[ACol,ARow];
      FieldGrid.Canvas.Rectangle(Rect);
      DrawText(StringGrid1.Canvas.Handle,
      Pchar(Txt),
               Length(Txt),
               Rect,
               DT_CENTER or DT_VCenter or DT_SingleLine);
      

  4.   

    to  dmyb7233(东东):
      使用了你的代码后,StringGrid上的数据丢失了.
      

  5.   

    到www.vclxx.org上去找一个TStringGrid的加强控件,可以达到你的要求。有很多
      

  6.   


     删除一行的方法:供参考
      for l:=i to stringgrid1.rowcount-2 do
     for k:=1 to stringgrid1.colcount-2 do
      stringgrid1.cell[k,l]:=stringgrid1.cell[k,i+1];
    stringgrid1.rowcount:=stringgrid1.rowcount-1;
      

  7.   

    告诉你一段经典的代码,用来将StringGrid的内容居中
    至于那一行那一列,只要控制ACol和ARow两个参数就行了
    procedure TFrm_dktj.SGDrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var
      TmpPchar: array[0..2047] of char;
      RectX: TRect;
    begin  
      RectX.Left:= Rect.Left+2;
      RectX.Right:= Rect.Right-2;
      RectX.top:= Rect.top+2;
      RectX.Bottom:= Rect.Bottom-2;
      Sg.Canvas.FillRect(Rectx);
      StrPcopy(TmpPchar,Sg.cells[ACol,ARow]);
      DrawText(Sg.Canvas.Handle,tmppchar,-1,rectx,DT_CENTER or DT_VCENTER or DT_SINGLELINE);
    end;
      

  8.   

    隐藏列在dbgrid中有但stringgrid只有stringgrid1.colcount:=5;//5列