在窗体BizFormCreate需要动态生成自定义数据集中的字段,代码如下:
for I := TBizDataSet(DSTABLELIMIT_ZDY.DataSet).UserFieldCount-1 downto 0 do
begin
TBizDataSet(DSTABLELIMIT_ZDY.DataSet).UserFields[I].Free;
end;
lBizField:= TUserDataField.Create(DSTABLELIMIT_ZDY.DataSet);
lBizField.DataSet :=TBizDataSet(DSTABLELIMIT_ZDY.DataSet);
lBizField.ID :='OPERSTATE_ID';
lBizField.DisplayName :='运行状况';
lBizField.DataType:=TDataType.dtString;
lBizField.Size:=96;
if not DSSECTIONZDY.DataSet.Active then DSSECTIONZDY.DataSet.Open;
DSSECTIONZDY.DataSet.First;
while not DSSECTIONZDY.DataSet.Eof do
begin
try
lBizField:= TUserDataField.Create(DSTABLELIMIT_ZDY.DataSet); // 数据
lBizField.DataSet :=TBizDataSet(DSTABLELIMIT_ZDY.DataSet); // 指定字段所在的数据集
lBizField.ID :=DSSECTIONZDY.DataSet.FieldByName('DMID').AsString+'&';
lBizField.DisplayName :=DSSECTIONZDY.DataSet.FieldByName('DMMC').AsString+'正向限额';
lBizField.DataType:=TDataType.dtFloat;
lBizField.Size:=32;
在另一界面调用这个窗体,第一次执行程序正常,关了这个窗体再次调用生成新的字段时报错,错误如图所示,跟踪代码
for I := TBizDataSet(DSTABLELIMIT_ZDY.DataSet).UserFieldCount-1 downto 0 do
begin
TBizDataSet(DSTABLELIMIT_ZDY.DataSet).UserFields[I].Free;
end;
也执行了,但是在执行上述代码后,DSTABLELIMIT_ZDY.DataSet.fields[1] 仍然有数据,是上次程序执行的数据,为什么?
添加代码:DSTABLELIMIT_ZDY.DataSet.fields.Free,又报错
如何解决?