tStringGrid控件单元格的文本如何设置水平居中对齐和垂直居中对齐。

解决方案 »

  1.   

    换控件,tStringGrid控件要实现太麻烦了.
      

  2.   

    stringgrid可以用下面的方法,响应grid的 ondrawcell事件,在响应事件
    里自己提供画表格中元素的方法,当然你就可以随便怎样定义它的对齐方式了。
    一个例子:
    //表格OnDrawCell事件方法
    procedure TFormTest.StringGridDrawCell(Sender: TObject; ACol,
      ARow: Integer; Rect: TRect; State: TGridDrawState);
    const
      WSpace = 2;
      HSpace = 2;
    var
      tmpstr: string;
      w,h: integer;
    begin
      if (Sender as TStringGrid).tag>0 then
      begin
        tmpstr := (Sender as TStringGrid).Cells[ACol,ARow];
        with (Sender as TStringGrid).Canvas do
        begin
          w := TextWidth(tmpstr);
          h := TextHeight(tmpstr);
          if (gdFixed in State) then 
            TextRect(Rect,trunc((Rect.Right+Rect.Left-w)/2)+WSpace,  //居中显示
                          trunc((Rect.Bottom+Rect.Top-H)/2)+HSpace,tmpstr)
          else     //右对齐显示
            TextRect(Rect,Rect.Right-WSpace-W,Rect.Bottom-HSpace-H,tmpstr);
         end;
      end;
    end;
      

  3.   

    bjbs_vb(不见不散)的方法不错.就这样,没有必要用到第三方控件