你可以到www.51delphi.com上下载一个advstringgrid,可以实现你要的功能,也可以实现stringgrid的打印等等,很好

解决方案 »

  1.   

    设置StringGrid的Options--goRowSizing,goColSizing属性为True
      

  2.   

    www.vclxx.org上有你要的控件,不过名字我记不大清楚了。你查查有关控件的说明即可
      

  3.   

    通过
    stringgrid1.Colwidths[i]  := xxx;
    stringgrid1.RowHeights[i] := yyy;控制
      

  4.   

    一个字节大概是5,那就stringgrid1.Colwidths[i]  := length(str)*5
      

  5.   

    stringgrid的事件SetEditText
    procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
      ARow: Integer; const Value: String);
    begin
    if stringgrid1.ColWidths[acol]<length(value)*8 then
         stringgrid1.ColWidths[acol]:=length(value)*8;
    end;
      

  6.   

    Stringgrid1.colwidths[i]:=100;
    Stringgrid1.rowheights[j]:=30;
      

  7.   

    其实这是个很麻烦的事情, 因为每一个列里的数据可能都是长短不一,你预先设置好CELL宽度,难保在下面的数据显示时,会被掩盖掉。用一个土办法就是在数据显示完后,开一个线程对STRINGGRID 进行逐列访问,在每一列都取得一个最大宽度,然后将当前列设为该宽度。这样显示出来就紧凑了。