adding calculated fields into an already existing tdataset at run time

i know It can be done quite easily using the field editor and 'Create new
fields'.
I just can't seem to add  calculated fields at run-time to a tdataset

i have tried the following to add the calculated field ...........
{oTable is my tDataSet Object with its  default database fields}
mycalcfield:= tStringField.Create(oTable);
mycalcfield.Name:='mycalcfield'; // name of component
mycalcfield.Size := 30;
mycalcfield.FieldName := 'CALC1';
mycalc1.FieldKind := fkCalculated;
mycalc1.CALCULATED := TRUE;
otable.OnCalcFields:=myCalcFields;

i seem to end up with either all the fields and no calculated field, or just
the calculated field.
Also , when compiling i keep getting 'mycalcfield' has no associated
component.

any help would be greatley appreciated.

thanks

sean