![]() |
Komponente lässt sich über "free" nicht löschen
Haloo, ich habe eine Komponente erstellt:
Code:
und möchte diese in einer zweiten procedure löschen:
BDel := TButton.Create(Fmain);
with BDel do begin Parent := Fmain; Left := 376; Top := 40; Width := 57; Height := 25; Caption := 'Del'; TabOrder := 2; end;
Code:
Das verursacht jetzt aber einen FEhler. ICh vermute mal das liegt daran, dass ich da was mit owner / parent falsch mache?! :? :?:
BDel.free;
gruß billi |
Re: Komponente lässt sich über "free" nicht lösche
Der Besitzer ist Fmain. Und somit ist Fmain für die Freigabe des Speichers und somit des Objektes verantwortlich. Wenn du es selber freigeben willst, musst du nil übergeben.
|
Re: Komponente lässt sich über "free" nicht lösche
Zitat:
|
Re: Komponente lässt sich über "free" nicht lösche
So schwer ein wort gegen das andere auszutauschen? :roll:
Delphi-Quellcode:
BDel := TButton.Create(nil);
|
Re: Komponente lässt sich über "free" nicht lösche
sorry, da hatte ich dich falsch verstanden...
dennoch funzt das löschen mit "BDel.free;" net, der verlangt, dass ich BDel initialisiere, tue ich das und start das programm, dann stürzt es ab... :evil: |
Re: Komponente lässt sich über "free" nicht lösche
Ghet doch:
Delphi-Quellcode:
Man muss es nur richtig machen. ;)
var
Form1: TForm1; MyBtn: TButton; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin MyBtn := TButton.Create(nil); MyBtn.Parent := Form1; end; procedure TForm1.Button1Click(Sender: TObject); begin MyBtn.Free; end; |
Re: Komponente lässt sich über "free" nicht lösche
Danke...
Nur müsste ich so entweder sau viele Variablen für Komponenten global definieren (Soll man ja eigendlich net machen) oder mindestens genauso viele übergeben. Zitat:
|
Re: Komponente lässt sich über "free" nicht lösche
Zeig mal den Bereich mit der Deklaration von BDel. Es ist naemlich alles richtig.
Ob man als Owner nil angibt oder die Form ist voellig egal. Wenn man die Komponente mit Free loescht dann wird der Owner via Notification benachrichtigt und traegt die Komponente aus seiner Verwaltungsliste aus. |
Re: Komponente lässt sich über "free" nicht lösche
so, mittlerweile hab ich das so gelöst, dass ich frames veerwende :wink: :wall: ist eigendlich auch viel einfacher...
gruß billli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01: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