好像是跟数据库字段的长度相关
把数据库字段的长度修改后,DBGrid中的列长度也跟着变化
以致在DBGrid的Columns的Width属性的修改都无效了
就是说,假如数据从access里取出                                        
而你access里该字段长度为100,那么在数据显示时它会有100个字符的宽度-_-
有没什么办法解决???

解决方案 »

  1.   

    procedure TForm1.Query1AfterOpen(DataSet: TDataSet);
    var
      I, n: Integer;
    begin
      with DBGrid1 do
        for I := 0 to Columns.Count - 1 do begin
          n := Columns[I].Field.DataSize;//当然你可以进一步利用DataType对不同类型的字段进行不同的处理
          if n = 0 then n := 6;//BLOB字段,显示“(MEMO)”6个字符
          if n <Length(Columns[I].Title.Caption) then 
            n := Length(Columns[I].Title.Caption);//如果列标题更长,就以列标题为准
          Columns[I].Width := Canvas.TextWidth(StringOfChar('M', n)) + 2;
        end;
    end;
      

  2.   

    你手工添加dbgrid的Columns
    然后指定width
    用editing columns就是columns后面那个按钮