我的意思是,SQL语句中的列是不固定的,总之,SQL是我们随时改变的,把SQL语句赋给Query,在CxGrid的属性里还用设置什么吗?谢谢! TO de410,你的代码,你试了吗,谢谢!procedure TForm1.Button1Click(Sender: TObject);begin adoquery1.sql.clear; adoquery1.sql:=memo1.text; adoquery1.Execute; CxgridDBTableView3.ClearItems;//这里是cxgrid的表层,先清除之前的列再创建 for I:=0 to adoquery1.FieldCount-1 do begin CxgridDBTableView3.CreateColumn; CxgridDBTableView3.Columns.DataBinding.FieldName:=adoquery1.Fields.FieldName; CxgridDBTableView3.Columns.Width:=80; end; end;