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;
你在SQL中写就可以了哦。
adoquery.Close();
adoQuery.Sql.Text := 'select *,單價*數量 as 总金额 from table1';
adoQuery.Open();
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);
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中写相应的数量和单价的值输入后要执行计算的代码。第三种实现的方法有多种。原理就是这样。
我的系统中大量用到DbGridEh, 而且设计时全部是空的, AdoQuery语句也是空的, 全部在运行时根据用户权限临时从库里提取装配adoQuery的SQL.Text. 现在唯一的麻烦就是计算字段没有好的解决方案. 除你提到的这些属性外, 我还要考虑dbGridEh中的某些栏位的下拉选择, 关联选择, 只读, 显示宽度, 等等.