Estoy clonando un TClientDataSet y quiero copiar todos los campos al clon (que es un nuevo DataSet), sé que puedo recorrer los campos y copiar la información, o hacer 2 instancias de mi clase y simplemente clonar el cursor, pero ¿hay alguna forma mejor? ¿Algo así como crear un nuevo DataSet y asignar la información de los campos?¿Hay alguna forma mejor de copiar todos los campos de DataSet y sus propiedades a otro DataSet?
EDIT:
El siguiente método auxiliar de clase que funciona para mí:
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;
alguien tiene una mejor manera de hacer esto?
No funcionó como esperaba, algunas propiedades como "moneda" no se copiaron en el nuevo conjunto de datos, quiero mantener todas las configuraciones del campo en el DataSet clonado. –