在运行时使用 spring4d - TObjectDataset
Using spring4d - TObjectDataset at runtime
我无法在 运行 时正确创建和填充 spring4d ObjectDataSet,异常提示“字段 ID 没有数据集,(在设计时创建字段工作正常)这是我的代码:
procedure TForm2.FormCreate(Sender: TObject);
var
_id: TIntegerField;
_designation: TStringField;
_dataset: TObjectDataSet;
_artList: IList<TArticle>;
begin
_artList := TCollections.CreateList<TArticle>(true);
_artList.add(TArticle.Create(1, 'Article 1'));
_artList.add(TArticle.Create(2, 'Article 2'));
_artList.add(TArticle.Create(3, 'Article 3'));
_dataset := TObjectDataSet.Create(self);
_dataset.DataList := _artList as IObjectList;
_id := TIntegerField.Create(self);
_id.FieldKind := fkData;
_id.Name := 'fid';
_id.FieldName := 'ID';
_designation := TStringField.Create(self);
_designation.Size := 100;
_designation.FieldKind := fkData;
_designation.FieldName := 'Designation';
with _dataset.Fields do
begin
add(_id);
add(_designation);
end;
DataSource1.DataSet := _dataset;
// self.DBEdit1.DataField := 'ID';
// self.DBEdit2.DataField := 'Designation';
_dataset.Open;
_active := true;
end;
TFields.Add
没有设置传递字段的DataSet 属性。这不是 Spring4D TObjectDataSet
特有的,而是 Data.DB.pas
内部的。当您在设计时创建字段时,设计器会设置字段的 DataSet
属性(请参阅 DSDefine.pas
)
我无法在 运行 时正确创建和填充 spring4d ObjectDataSet,异常提示“字段 ID 没有数据集,(在设计时创建字段工作正常)这是我的代码:
procedure TForm2.FormCreate(Sender: TObject);
var
_id: TIntegerField;
_designation: TStringField;
_dataset: TObjectDataSet;
_artList: IList<TArticle>;
begin
_artList := TCollections.CreateList<TArticle>(true);
_artList.add(TArticle.Create(1, 'Article 1'));
_artList.add(TArticle.Create(2, 'Article 2'));
_artList.add(TArticle.Create(3, 'Article 3'));
_dataset := TObjectDataSet.Create(self);
_dataset.DataList := _artList as IObjectList;
_id := TIntegerField.Create(self);
_id.FieldKind := fkData;
_id.Name := 'fid';
_id.FieldName := 'ID';
_designation := TStringField.Create(self);
_designation.Size := 100;
_designation.FieldKind := fkData;
_designation.FieldName := 'Designation';
with _dataset.Fields do
begin
add(_id);
add(_designation);
end;
DataSource1.DataSet := _dataset;
// self.DBEdit1.DataField := 'ID';
// self.DBEdit2.DataField := 'Designation';
_dataset.Open;
_active := true;
end;
TFields.Add
没有设置传递字段的DataSet 属性。这不是 Spring4D TObjectDataSet
特有的,而是 Data.DB.pas
内部的。当您在设计时创建字段时,设计器会设置字段的 DataSet
属性(请参阅 DSDefine.pas
)