gpt4 book ai didi

delphi - Delphi-在运行时动态添加所有字段,在数据集中生成重复项

转载 作者:行者123 更新时间:2023-12-03 18:36:57 25 4
gpt4 key购买 nike

我基于How to add a field programatically to a TAdoTable in Delphi尝试将所有字段动态添加到FibPlus数据集(可以是任何TDataSet后代)。每个字段都声明为变量。声明部分

  TForm4 = class(TForm)
pFIBDatabase1: TpFIBDatabase;
pFIBTransaction1: TpFIBTransaction;
ds1: TpFIBDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
iVERField : TFIBIntegerField;//I need that all fields to be represented by a variable
{ Public declarations }
end;


然后在formcreate事件上,创建所有字段,设置所需的属性,然后将所有这些属性动态添加到我的数据集中。

procedure TForm4.FormCreate(Sender: TObject);
var i:Integer;
fieldDef :TFieldDef;
begin
ds1.SQLs.SelectSQL.Text := 'select ver from ver';

ds1.Fields.Clear;
ds1.FieldDefs.Clear;
ds1.FieldDefs.update;

iVERField := TFIBIntegerField.Create(ds1);
iVERField.FieldName := 'VER';
iVERField.DisplayLabel := 'VER';
iVERField.Name := 'iVERField';
iVERField.DataSet := ds1;
ds1.Fields.Add(iVERField);

ds1.Open;
end;


我的问题是该字段在dbgrid上显示为重复项



LE:为什么字段出现两次:

 iVERField.DataSet := ds1; //one 
ds1.Fields.Add(iVERField);//two


LE1:这是我应该将所有字段作为变量添加到数据集中的方式吗?

最佳答案

在D7中(并且我怀疑它是否已更改),TField的SetDataSet方法已经调用了数据集的Ffields.Add方法,因此您的显式ds1.Fields.Add将第二次添加它,因此是重复的字段。

关于delphi - Delphi-在运行时动态添加所有字段,在数据集中生成重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21457253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com