ну, есть идеи, как бы модифицировать код, но и так сойдет
я бы перефразировал
if frmScanWindow = nil then
frmScanWindow := TFrmScanWindow.Create(NIL);
frmScanwindow.showModal(
procedure (const AResult:TModalResult)
begin
if AResult = mrOK then
begin
.......
и может быть даже
FreeAndNil(frmScanwindow);
end;
end);