![]() |
Problem mit Exception bei MDI aufrufen über mehrere Ecken
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leutz,
Ich sitze gerade an zwei kleinen Problemen mit Vererbungen und gegenseitigen Aufrufen von MDIchild´s in Delphi 6. Es geht darum ein QuickReport in einem Berichtformular zu erzeugen. Beim gegenseitigen Erzeugen von MDIchild´s über drei Ecken bekomme ich immer wieder eine Exception und ich bekomme einfach nicht heraus, warum diese auftritt. Und wenn ich den QuickReport mehrmals erzeuge bekomme ich auch eine Fehlermeldung, weil die Komponente schon existiert. (In diesem Fall sollte der QuickReport mit den aktuellen Daten aus der DB aktualisiert werden.(update) ) genauere Beschreibung des Problems (Beispielprogg ist attached): der Quickreport ist bei mir die "QR_Report" diese wird im "FberichtVorschau" erzeugt. Und die "FberichtVorschau" soll als MDIchild im Fmain angezeigt werden. Soweit, sogut. Das Funktioniert auch alles. Doch nun möchte ich den Aufruf von einem anderen MDIchild "FberichtAufrufen" aus ausführen. Der Aufruf funktioniert von dem FberichtAufrufen direkt auch noch (Button "BBerichtAufrufDirekt") Doch jetzt kommt es: Wenn ich das MDIchild "FberichtAufrufen" schließe, solange das MDIchild "FberichtVorschau" noch geöffnet ist, kommt eine Exception. Nagut, habe ich mir gedacht, weil das ganze ja von der "FberichtAufrufen" aufrufe und ich diese jetzt schließe kann eine Exception mal passieren. Daher kam ich auf die Idee, das ganze Indirekt zu machen. Also rief ich mit der "FberichtAufrufen" eine Procedure in der Fmain auf "Fmain.BerichtAufrufen_Indirekt" denn die Fmain schließe ich ja nicht. Doch jetzt kommt immernoch eine Exception, wenn ich die "FberichtAufrufen" generiere, dann darüber indirekt die "FberichtVorschau" aufrufe, dann die "FberichtAufrufen" schließe, diese dann nocheinmal öffne und anschließend die "FberichtVorschau" schließen möchte. Sollte da noch keine Fehlermeldung erscheinen, probiert einfach: Nach dem generieren der "FberichtVorschau" die "FberichtAufrufen" ein paar mal generieren und wieder schließen, bevor man die "FberichtVorschau" schließt. Beim Schließen von "FberichtVorschau" kommt dann wieder eine Exception. Außerdem bekomme ich noch eine Fehlermeldung wenn die "FberichtVorschau" mehrmals geöffnet werden soll, da dann die Komponente QR_Report schon existiert. Habs irgendwie noch nicht geschafft, nach der QR_Report für eine überprüfung suchen zu lassen, da diese ja in der Fmain->FberichtVorschau(MDI)->QRPReview integriert ist. Würd mich freuen, wenn mir jem. bei diesem Problem helfen kann. Gruß Sunfy |
Re: Problem mit Exception bei MDI aufrufen über mehrere Ecke
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal nur den Teil für den neuen Report ein wenig umgestellt (siehe Anhang). Schau mal ob es das ist was du wolltest.
|
Re: Problem mit Exception bei MDI aufrufen über mehrere Ecke
Hmm, deine Überlegung war dass überprüft wird, ob der Zeiger auf die FberichtVorschau auf Nil zeigt.
Wenn ja dann wird eine neue Instanz von FberichVorschau erzeugt.
Delphi-Quellcode:
Problem ist nur, dass der Zeiger beim schließen von FberichtVorschau nicht auf nil zurückgesetzt wird.
procedure TQR_Report.QuickRepPreview(Sender: TObject);
begin if not Assigned(FBerichtVorschau) then FBerichtVorschau:= TFBerichtVorschau.create(Self); FBerichtVorschau.QRPreview.QRPrinter := (Sender as TQRPrinter); end; In der DelphiHilfe findet man zu assigned den Hinweis: "Assigned kann keine Zeiger erkennen, die zwar nicht nil sind, aber trotzdem nicht mehr auf gültige Daten verweisen." Daher bekommt man eine Exception, wenn man "Datei->Neuer Report" ausführt diesen dann schließt und "Datei->Neuer Report" erneut ausführt. Eine Idee, wie man das machen kann? Außerdem möchte ich vielmehr überprüfen ob schon ein QR_Report (in einem FberichVorschau) geöffnet ist. Wenn bsp. schon ein FberichtVorschau mit einem anderen QR_Report_2 geöffnet ist, soll wenn noch kein QR_Report vorhanden ist, ein neues FberichtVorschau mit dem QR_Report geöffnet werden können, ohne dass QR_Report_2 geschlossen wird. Ne idee dazu? |
Re: Problem mit Exception bei MDI aufrufen über mehrere Ecke
Moin, DeppNightmoin,
Zitat:
1. Du schickst dem Hautpformular (MDI-Master) eine Windowsmessage und bei Empfan dieser wird Dein Formular geschlossen sowie das Formular mit der Nummer in der Message geöffnet. 2. Du hast im MDI-Master eine Memini komponente wo Du ein Nachricht hinterlegst. Dann schließt Du Dein MDI-Child. Wenn kein MDI-Child geöffnet ist schaut Dein MDI-Master in der Memini nach ob eine Botschaft hier liegt und öffnet ein entsprechendes Formular. Soweit für heute Abend // Grüße //Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz