dbGridEh怎么實現運行時動態增加計算的欄

dbGridEh如何實現運行時動態增加計算的欄
如題.
例如: 行中有從表中取出的單價, 數量, 如何令到程序運行時自動生成一欄, 其內容為單價*數量? 
讓AdoQuery運行時動態增加計算欄位也行, 前題是不需要在設計時把所有欄位都加到程序中去.

------解决方案--------------------

------解决方案--------------------
Delphi(Pascal) code

你在SQL中写就可以了哦。
adoquery.Close();
adoQuery.Sql.Text := 'select *,單價*數量 as 总金额 from table1';
adoQuery.Open();

------解决方案--------------------
运行时自动生成,要生成所有要显示的字段,并不是只增加1列
1.设计时全部加进来
2.运行时动态全部添加(字段多的话,类型也会很多,就会觉得很麻烦)
3.全部不指定通过SQL语句有多少列就显示多少列

2)动态添加就像下面这样,主要就这几个属性要设置
var F:TField;
bein
F:=TField.Create(self);
F.DataType:=
F.FieldKind:=
F.FieldName:=
F.Size:=
ADOQuery.Fields.Add(F);
------解决方案--------------------
DBGridEh也是一样的,做成循环添加

with DBGridEh1 do
begin
Columns.BeginUpdate;
Columns.Clear;
for i:=0 to 10 do
begin
Columns.Add;
Columns[i].FieldName:='F'+IntToStr(i);
Columns[i].Title.Caption:=Columns[i].FieldName;
Columns[i].Width:=80;
end;
Columns.EndUpdate;
end;
------解决方案--------------------
有多种办法的。
1.用2楼的办法解决,在显示记时就直接记算了。但是这样显示的记录不能做修改。
2.在数据集中增加一个计算用的栏位,然后用数据集的OnCalcFields事件来写计算代码,这种呢,就可以修改单价和数量后自动计算金额。但是计算出来的金额不会存到数据库中。
3.如果又要自动计算,又要储存计算后的金额到数据库的话,在数据表中就要有个栏位,然后在输出控件DBGridEh1中写相应的数量和单价的值输入后要执行计算的代码。

第三种实现的方法有多种。

原理就是这样。
------解决方案--------------------
首先获取字段名、字段类型、字段长度、显示长度、显示标题、是否关联、是否主键、关联ID等,这些可以用xml的形式保存下来或者写成控件,然后界面上去解析对应的字段