这两天为了实现让客户自定义的加载子表列表的列的功能. 所以必须找到adoquery设计期间的add field的对应程序.
我就自己在ADoquery的属性找到了adoquery1.fields.add()方法..非常高兴.但后来试了很多次都不行.就是因为要add(TField).但这个类应该怎样弄呢.?所以问题就卡住了......
第二天我在网上找到这个
procedure AddField(FdName: string; DSName: TDataSet; dt: TFieldClass);
begin
if DSName.FindField(FdName) <> nil then exit;
DSName.Close;
try
with dt.Create(DSName) do
begin
FieldName := FdName;
DisplayLabel := FdName;
FieldKind := fkData;
Name := DSName.Name + 'DSDesigner' + inttostr(DsName.FieldCount);
index := DSName.FieldCount;
DataSet := DSName;
end;
except
on e: exception do
raise Exception.Create(E.Message);
end;
end;
让我受益非汇少
但以上要注意的是有两点.
1.其中TFieldclass是一个类参数..他的原形定义是 TFieldclass = class of TField
所以传递的时类.不是类的对象.
2.在设用方法时.AddField('aaaa';adoquery1;TStringfield);其中TStringField 就是TField的一个子类.也可用TintegerField....看实际的需要)