Und jetzt zum 2. Problem:
Es wird MessageDlg() verwendet wo eigentlich eine
Exception ausgelöst werden sollte:
Delphi-Quellcode:
procedure TfrmXXX.ZeileDelExecute(Sender: TObject);
var
anzahl : Integer;
azid : Integer;
begin
azid := dmXXX.AZQ.fieldbyname('
AZ.ID').asinteger;
anzahl := dmXXX.GetFertigteileAnzahl(azid);
if (anzahl > 0)
then
// Exception auslösen und dem Benutzer möglichst genaue Info geben wo das Problem ist
raise Exception.CreateFmt('
Löschen der Auftragszeile NICHT möglich, da bereits %d Fertigteile daraus eingebucht wurden (azid=%d)', [anzahl, azid]);
Und selbst diese Methode gehört ins DM. Dann merkt man nämlich auch, worin der Vorteil der
Exception gegenüber dem MessageDlg liegt: man hat keine
GUI im DM. Wobei man sich darüber streiten kann, ob hier nicht lieber ein Result vom Typ Boolean einer
Exception vorzuziehen wäre (Stichwort: keine Exceptions als Teil der Business Logic).