Hallo Jungs und Mädels,
ich erzeuge im OnCreate einer Form eine MessageForm mit CreateMessageDialog:
Delphi-Quellcode:
//Meldungs-Form erzeugen und beschreiben
MessageForm := CreateMessageDialog(Msg3, mtInformation, []);
with MessageForm do
begin
BorderIcons := [];
BorderStyle := bsNone;
Font.Height := 15;
Font.Style := [fsBold];
Color := $00F8E4D8;
Height := 55;
Width := 320;
FormStyle := fsStayOnTop;
OnPaint := OnPaintMessageForm;
end;
die Variable MessageForm ist im private-Bereich als TForm deklariert.
Soweit so gut - es funktioniert bestens.
Nur, soviel ich weiss, muss man "alles" was man erzeugt auch wieder im OnDestroy der Form freigeben.
Also mach ich im OnDestroy der Form:
FreeAndNil(MessageForm);
Nur erhalte ich dabei folgende AccessViolation:
Zitat:
---------------------------
Benachrichtigung über Debugger-
Exception
---------------------------
Im Projekt Project1.exe ist eine
Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00000010. Lesen von Adresse 00000010'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Nur warum?
Die Variable existiert - wird createt und müsste doch ganz einfach freizugeben sein, oder irre ich da mich?
Oder sind CreateMessageDialogs spezielle Forms?