Try this:
In the interface part of the form unit insert this prototype into the Private 
declarations:
 
private
    { Private declarations } 
    Procedure OnCalcFields(DataSet: TDataSet);  // insert this
 
Early in the implementation part insert the event procedure:
 
Procedure TForm1.OnCalcFields(DataSet: TDataSet);  
begin
    SQLQuery1.FieldByName('calc').AsBoolean := true;
 end;
 
Then after creating your "f" field:
   f.DataSet   := SQLQuery1.FieldDefs.Dataset; 
   SQLQuery1.OnCalcFields:=OnCalcFields;  // insert this line
Dealing with events without using the Object Inspector can be tricky!
 
A. G.

>________________________________
> From: Krzysztof <dib...@wp.pl>
>To: Lazarus mailing list <lazarus@lists.lazarus.freepascal.org> 
>Sent: Sunday, December 30, 2012 6:26 AM
>Subject: [Lazarus] Can't create calculated field
>  
>
>Hi,
>
>
>I have this code:
>
>
>  f := TField.Create(FDataList);
>  f.FieldName := 'calc';
>  f.FieldKind := fkCalculated;
>  f.SetFieldType(ftBoolean);
>  f.DataSet   := SQLQuery1.FieldDefs.Dataset; 
>
>
>
>
>procedure TForm1.OnCalc(DataSet: TDataSet);
>begin
>  SQLQuery1.FieldByName('calc').AsBoolean := true; 
>end; 
>
>
>But I get error "Invalid type conversion to Boolean in field calc"
>
>
>Regards 
>--
>_______________________________________________
>Lazarus mailing list
>Lazarus@lists.lazarus.freepascal.org
>http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>
>
>   
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to