Hola oscjae.
Un ejemplo de como podes implementar lo que solicitas:
Código Delphi
[-]
...
procedure TForm1.FormCreate( Sender: TObject );
var
i: Integer;
Field: TField;
begin
with tu_DataSet do
begin
Close;
SQL.Text := 'SELECT CAMPO1, CAMPO2, ... FROM TU_TABLA';
Open;
end;
tu_DataSet.Close;
for i :=0 to tu_DataSet.FieldDefs.Count - 1 do
Field := tu_DataSet.FieldDefs[i].CreateField( tu_DataSet );
Field := TFloatField.Create( tu_DataSet );
with Field do
begin
FieldName := 'CalcFld';
Calculated := True;
DataSet := tu_DataSet;
end;
tu_DataSet.Open;
end;
procedure TForm1.tu_DataSetCalcFields( DataSet: TDataSet );
begin
with DataSet do
begin
FieldByName('CalcFld').AsFloat := PI * ( Fields[0].Value + Fields[1].Value );
end;
end;
Saludos