Навскидку, все неправильно.
Но, для начала, вытащить весь код, не имеющий отношения к форме, в тот же DM (это DataModule, если я правильно понял ?):
procedure TDM.DoUpdateRegistr ;
begin
try
try
DM.REGISTR.UpdateTransaction.StartTransaction;
DM.REGISTR.Post;
DM.REGISTR.UpdateTransaction.Commit;
except
....
end ;
finally
DM.REGISTR.Refresh; // ЗАЧЕМ ?
........
end;
end ;
В форме TfmTalon определить:
class procedure TfmTalon.Execute ;
var
fm : TfmTalon ;
begin
fm := TfmTalon.Create(....) ;
try
if fm.ShowModal <> idOK then Exit ;
DM.DoUpdateRegistr ;
finally
fm.Free ;
end ;
end ;
в котором будет все создание и реализация.
В обработчике в итоге останется:
procedure TfmMain.ActEditExecute(Sender: TObject);
begin
TfmTalon.Execute ;
end ;
Вторым шагом я бы подумал, как перейти на использование SQL вместо Edit/Appent/Post