Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.015 Beiträge
 
Delphi 12 Athens
 
#4

AW: Exception wird nicht angezeigt - Ist das ein Fehler?

  Alt 9. Dez 2016, 08:46
Es ist tatsächlich so, daß die Exception-Meldung das aktive Fenster als Parent benutzt. Dieses hat aber zu diesem Zeitpunkt bereits ein CM_RELEASE in der Message-Queue, von dem es aber noch nichts weiß.

Jetzt könnte man ja hingehen und bei der Anzeige der Exception-Box nachschauen, ob so eine Message im aktiven Fenster in der Queue steht, aber das würde auch nur diesen einen Fall abdecken. Es kann ja auch sein, daß dieses Release erst später z.B. durch einen Timer ausgelöst wird. Womöglich ist das Verschwinden der Message-Box dann ja auch erwünscht.

In solchen Fällen ist dann wohl der Entwickler gefragt, der ja um diese Besonderheiten wissen sollte. Hier müsste also das Parent-Fenster für die Message-Box gezielt auf ein valides anderes Fenster umgelegt werden. Konkret lässt sich das in dem Beispielprojekt durch ein simples SetFocus erreichen. Wie das im produktiven Fall am sinnvollsten umgesetzt werden kann, vermag ich so nicht zu sagen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Application.CreateForm(TForm2, Form2);
  try
    Form2.Show;
    raise Exception.Create('Ein Fehler');
  finally
    SetFocus;
    Form2.Release;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat