DBGrid1.Columns[I].Width := 86;

解决方案 »

  1.   

    直接写
    DBGrid1.DataSource.DataSet.FieldByName('aaa').AsString;
    就是当前选中的记录的aaa字段的值
      

  2.   

    to tikkypeng:怎么我按你第一答案那样写了却不行, 出错提示为:
    Access violation at address oo4A3665 in module 'abc.exe',Read ofaddress ffffffff
      

  3.   

    var
      i:Integer;
    begin
      for i:=0 to DBGrid1.Columns.Count-1 do
      begin
        DBGrid1.Columns[i].Width := 120;
      end;
    end;
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin  
    for i:=0 to DBGrid1.Columns.Count do
        begin
          DBGrid1.Columns[i].Width:=DEPT1.Width div DBGrid1.Columns.Count;
        end;
    end;
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin  
    for i:=0 to DBGrid1.Columns.Count-1 do//越界了~~~
        begin
          DBGrid1.Columns[i].Width:=DEPT1.Width div DBGrid1.Columns.Count;
        end;
    end; 顺便问一下~~你的Dept1是什么??
      

  6.   

    DBGrid1.Columns.Count我已经减1 了,上面写漏了,
    还有第一个问题,有什么办法可以动态指定字段的名字,因为我要取得当前选中的那一格的值,如果按你的方法做,只能取得一个固定字段的值,而不当前选中那个字段的值
      

  7.   

    用DBGrid1.DataSource.DataSet.FieldByName(DBGrid1.SelectedField.Name).AsString;
      

  8.   

    你的columns是不是设计状态下就增加好的???
    如果不是~~~
    那么则要把procedure TForm1.FormShow(Sender: TObject);
    var
      i:Integer;
    begin
      for i:=0 to DBGrid1.Columns.Count-1 do
      begin
        DBGrid1.Columns[i].Width := Button4.Width div DBGrid1.Columns.Count; 
      end;
    end;这段代码放到你的Query或者Table的OPen之后~~
      

  9.   

    Dept1可能和这个东西有关~~
    你先把宽度写死了~~120试试
      

  10.   

    可能是你的Dept1的控件的问题~~那是什么东东??