Ich kann spring4d ObjectDataSet zur Laufzeit nicht ordnungsgemäß erstellen und füllen, eine Ausnahme mit der Aussage "Feld ID hat kein Dataset, (Erstellen von Feldern bei Entwurfszeit funktioniert gut) hier ist mein Code:Verwenden von spring4d - TObjectDataset zur Laufzeit
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;
Schließlich funktioniert es durch Entfernen der hinzufügen blockieren, und beeinflussen Sie die _dataset zu Field.Dataset (_id.Dataset: = _Daset;) Eigenschaft direkt, was ist das Diff? –