![]() |
zugriffsverletzung bei aufruf von destroy
hallo
ich habe folgendes problem: habe eine mdi-anwendung mit mehreren formularen, wobei ein der formulare der owner von allen anderen formularen ist. jetz wollte ich erreichen, dass wenn irgendeins der formulare geschlossen wird, alle anderen auch geschlossen werden, also hab ich in die procedure zum onclose-ereignis der einzelnen formulare reingeschrieben:
Delphi-Quellcode:
da schließt sich dann zwar alles so wie ich will, aber leider bekomm ich da auch immer gleich so eine hässliche meldung von wegen "zugriffsverletzung"...was mach ich da falsch?
self.Owner.Destroy()
danke, martin |
Re: zugriffsverletzung bei aufruf von destroy
Warscheinlich ist beim ersten Fenster der Owner undefiniert. Einfach mal mit try .. except .. end abzufangen versuchen.
Florian |
Re: zugriffsverletzung bei aufruf von destroy
Oder einfach mal die Delphi Hilfe lesen:
Zitat:
|
Re: zugriffsverletzung bei aufruf von destroy
ok, hab ich probiert
das ändert leider auch nichts :| |
Re: zugriffsverletzung bei aufruf von destroy
hast du mal haltepunkte gesetzt und/oder durchgestept bei welchen Befehlen im Destroy die AV kommt?
|
Re: zugriffsverletzung bei aufruf von destroy
Alternativ zum Free aus Lukies Beitrag:
Delphi-Quellcode:
if Self.Owner <> nil then
Self.Owner.Destroy; |
Re: zugriffsverletzung bei aufruf von destroy
Zitat:
|
Re: zugriffsverletzung bei aufruf von destroy
Hallo Martin,
normalerweise ist die Application der Owner, aber egal. Am Beispiel des Templates aus dem Objekt Repository geht es so:
Delphi-Quellcode:
Grüße vom marabu
procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin Action := caFree; with Application do if not Terminated then Terminate; end; |
Re: zugriffsverletzung bei aufruf von destroy
Zitat:
grüße, martin |
Re: zugriffsverletzung bei aufruf von destroy
Ohne MDI-Formulare geht es so:
Delphi-Quellcode:
marabu
procedure TParentForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin Release; end; procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; with Owner as TForm do PostMessage(Handle, WM_CLOSE, 0, 0); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 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