Si claro, te creas una función cuya forma sea igual a la que el evento requiera, y la asignas asi :
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables;
type
TForm1 = class(TForm)
Table1: TTable;
Button1: TButton;
procedure CalcField(DataSet: TDataSet);
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.CalcField(DataSet: TDataSet);
begin
ShowMessage('ISLU');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.OnCalcFields := CalcField;
end;
end.
Para saber cual es la forma del procedimiento, es decir, que parametros toma, basta con que crees una por defecto con el diseñador de Delphi, y luego crees la tuya.
Puedes hacerlo con cualquier evento, bien sea de una tabla, de un botón ( OnCLick ), de cualquier elementio visual. Solo has de tener en cuenta los parámetros de entrada.
Una cosa, para saber si un evento ya esta asignado :
Código Delphi
[-]
if( not assigned( Table1.OnCalcFields ) ) then
Table1.OnCalcFields := CalcField
else
ShowMessage( 'Ya asignado!!!');
Asi evitas macharacar algún evento, o si lo tienes que asignar o no.