Hinweis: Es handelt sich um XE5, läßt sich hier aber nicht auswählen.
Ich habe eine zur Laufzeit erzeugte Firemonkey-Komponente. Die will ich von Zeit zu Zeit neu erzeugen. Bisher war ich es ja gewohnt, das mit
Free oder
FreeAndNil zu machen. Leider verschwindet die Komponente aber nicht. Erst mit
DisposeOf.
Das ist natürlich gefährlich, da man ja jahrelang so gearbeitet hat. Manchmal funktioniert es, manchmal nicht. Was muß man da für ein Pattern verwenden? Welche Schritte sind wann zu beachten.
Delphi-Quellcode:
interface
...
TfrmDisplay = class(TForm)
...
public
Target : TTarget;
Painter : TTargetPainter;
CursorCircle : TEllipse;
end;
...
implementation
...
procedure TfrmDisplay.Init;
begin
if Assigned(Target) then Target.Free;
if Assigned(Painter) then Painter.Free;
// Mit Free oder FreeAndNil bleibt die Komponente stehen und bei jedem
// Aufruf der Init-Procedur kommt eine hinzu.
if Assigned(CursorCircle) then CursorCircle.DisposeOf;
...
CursorCircle := TEllipse.Create(ImageControl1);
...
end;