Hallo,
ich könnte mal wieder eure Hilfe gebrauchen.
Folgender Code wird nach dem Öffnen eines Child-Formulars aufgerufen:
Delphi-Quellcode:
procedure TFmAlbum.LoadAlbum(fn: string);
begin
if Alb <> nil
then Alb.Free;
Alb := TAlbum.Create(Self); // Alb ist public in FmAlbum vereinbart.
Alb.LoadFromFile(fn);
end;
LoadFromFile lädt u. a. Bilder und zeigt sie auf dem Formular in zur Laufzeit erzeugten TImage-Komponeneten an.
Das Formular wird mit folgendem Code geschlossen:
Delphi-Quellcode:
procedure TFmAlbum.FormDestroy(Sender: TObject);
begin
if Alb <> nil
then Alb.Free;
end;
Nun das Problem:
Die Prozedur LoadFromFile braucht ein paar Sekunden bis alles geladen, berechnet und angezeigt ist. Wenn in dieser Zeit das Formular mit dem BorderIcon biSystemMenu geschlossen wird, wird Alb im FormDestroy freigegeben, obwohl LoadFromFile noch läuft. Dies führt logischerweise zu Zugriffverletzungen.
Ich könnte diese Zugriffverletzungen mit try ... except abfangen. Das ist aber bestimmt nicht der richtige Weg.
Wie kann ich das Formular ohne Fehler schließen?
Schon mal Danke für die Hilfe.
Gruß Klaus.