Bei einem Seriendruck können ja auch Exceptions auftreten.
Der Benutzer kann auswählen was er tun möchte.
1.) Fehler ignorieren, auf Nachfrage abbrechen
2.) Fehleretikett drucken
3.) sofort abbrechen
Ausserdem werden alle Exceptions in einem Memo protokolliert.
Delphi-Quellcode:
procedure TSerienDruckForm.HandleException(E:
Exception);
begin
AddError(E.
Message);
// Memo1.lines.Add(...)
case RgpErrorAction.ItemIndex
of
0:
// Druckauftrag ignorieren
begin
if MessageDlg(E.
Message + #13#10 + '
Seriendruck abbrechen ?', mtError, [mbYes, mbNo], 0) = mrYes
then
Abort;
end;
1:
// Fehleretikett
begin
DMPrtFehlerEtikett.PrintFehlerEtikett(E);
end;
2:
// Seriendruck abbrechen, Exception erneut auslösen
begin
// "raise E" will nicht, daher neue Exception erzeugen.
raise Exception.Create(E.
Message);
end;
else
begin
Assert(False);
end;
end;
end;
Die Fehlerbehandlung sieht dann so aus:
Delphi-Quellcode:
try
EinzelauftragAbarbeiten;
except
on E:
Exception do
begin
// Auftrag als fehlerhaft markieren
.....
HandleException(E);
end;