ADOQuery1.Active:=false;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select TaiTypeHao,TaiType,fjs');
  DataSource1.DataSet:=ADOQuery1;
  DBGridEh1.DataSource:=DataSource1;
//
//要求第一列显示TaiType,但它总是显示TaiTypeHao,TaiType,fjs
//请看以下语句错在哪?
  DBGridEh1.Columns[0].FieldName:='TaiType';
  DBGridEh1.Columns[1].FieldName:='fjs';
  DBGridEh1.Columns[2].FieldName:='TaiTypeHao';

解决方案 »

  1.   

    需要调整字段显示顺序就修改字段的Index属性
    ADOQuery1.FieldByName('TaiType').Index := 0;
      

  2.   

    改成一下这样就可以了:
    var
     field:Tcolumneh;
    begin
      ADOQuery1.Active:=false; 
      ADOQuery1.SQL.Clear; 
      ADOQuery1.SQL.Add('select TaiTypeHao,TaiType,fjs'); 
      DataSource1.DataSet:=ADOQuery1; 
      field:=DBGridEh1.Columns.Add;
      field.FieldName:='TaiType'; 
      field:=DBGridEh1.Columns.Add;
      field.FieldName:='fjs'; 
      field:=DBGridEh1.Columns.Add;
      field.FieldName:='TaiTypeHao'; DBGridEh1.DataSource:=DataSource1; 
    end;