No estas creando una instancia de EnviarFila, sino heredando de ella.
Código Delphi
[-]type
TEnviarFila = class(EnviarFila)
La definición de EnviarFila está bien, lo que tienes que cambiar es el uso en el Form1.
Tienes que instanciar EnviarFila y asignar ese evento:
Código Delphi
[-]
type
TForm1 = class(Tform)
private
procedure AlTerminar(Sender: TObject);
end;
procedure TForm1.FormCreate(Sender: TObject);
var x :EnviarFila;
begin
x := EnviarFila.Create(false);
x.OnFinish := AlTerminar;
x.PushFile;
end;
procedure TForm1.AlTerminar(Sender: TObject);
begin
Showmessage('termino');
end;
la asignación "x.OnFinish := AlTerminar;" es idéntico a cuando tú en el inspector de objetos, das un doble clic en un evento para "rellenarlo con código".
En principio, para ejecutar un TThread, se debe usar su método Execute, tú usas PushFile, ya eso no es cuestión de eventos, sino de TThreads. Si no funciona como esperas, pon el código completo del TThread.
Saludos