![]() |
Objekt freigeben
Hi,
ich erszelle währen der laufzeit ein panel mit mehrere images. wie kann ich nun das objekt wieder "löschen" und neu initialisieren ? wenn ich
Code:
eingebe, erhalte ich eine execption, das gleiche mit .Free;
if panel1 <> nil then
Panel1.Destroy; wenn ich nil zuweise, befindet es sich aber noch auf dem Formular, was nicht sein sollte. mh, ich dachte das geht mit destroy |
Re: Objekt freigeben
eigentlich nimmt man .Free
oder noch FreeAndNil(panel1). Doch sollte man ein VCL-Control nur zerstören wenn man es auch selber erzeugt hat. |
Re: Objekt freigeben
Ich hab das so gemacht:
Delphi-Quellcode:
P als globale Variable. Funktioniert bestens.
procedure TForm1.Button1Click(Sender: TObject);
begin p:=TPanel.Create(self); p.Parent:=Form1; p.Left:=100; p.Top:=100; end; procedure TForm1.Button2Click(Sender: TObject); begin p.Destroy; end; [edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit] |
Re: Objekt freigeben
Liest von euch keiner die VCL-Hilfe...
Zitat:
|
Re: Objekt freigeben
ja, ok x.free ist besser. :oops:
Die Theorie ist die selbe :) |
Re: Objekt freigeben
Der grund warum man das so machen sollte ist folgender...
Delphi-Quellcode:
FreeAndNil könnte man auch durch
if l then
obj := TSomething.Create else obj := nil; FreeAndNil(obj); // erzeugt nix Fehler, wenn obj = nil // nun ist obj = nil
Delphi-Quellcode:
ersetzen...
obj.Free;
obj := nil; |
Re: Objekt freigeben
mit FreeAndNil klarppts, danke :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 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