Tôi nhân bản một TClientDataSet và tôi muốn sao chép tất cả các trường vào bản sao (đó là một Số liệu mới), tôi biết tôi có thể lặp qua các Trường và sao chép thông tin, hoặc tạo 2 trường hợp của lớp và chỉ sao chép con trỏ, nhưng có cách nào tốt hơn không? Một cái gì đó như tạo một DataSet mới và gán các thông tin lĩnh vực?Có cách nào tốt hơn để sao chép tất cả các Trường Số liệu và thuộc tính của chúng sang một Số liệu khác không?
EDIT:
Phương thức lớp helper sau làm việc cho tôi:
procedure TDataSetHelper.CopyFieldDefs(Source: TDataSet);
var
Field, NewField: TField;
FieldDef: TFieldDef;
begin
for Field in Source.Fields do
begin
FieldDef := FieldDefs.AddFieldDef;
FieldDef.DataType := Field.DataType;
FieldDef.Size := Field.Size;
FieldDef.Name := Field.FieldName;
NewField := FieldDef.CreateField(Self);
NewField.Visible := Field.Visible;
NewField.DisplayLabel := Field.DisplayLabel;
NewField.DisplayWidth := Field.DisplayWidth;
NewField.EditMask := Field.EditMask;
if IsPublishedProp(Field, 'currency') then
SetPropValue(NewField, 'currency', GetPropValue(Field, 'currency'));
end;
end;
Bất cứ ai cũng có một cách tốt hơn để làm điều này?
Nó không hoạt động như tôi mong đợi, một số thuộc tính như "tiền tệ" không được sao chép vào tập dữ liệu mới, tôi muốn giữ tất cả các thiết lập của Field trong DataSet nhân bản. –