Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Komponente lässt sich über "free" nicht löschen (https://www.delphipraxis.net/15582-komponente-laesst-sich-ueber-free-nicht-loeschen.html)

billi 31. Jan 2004 20:00


Komponente lässt sich über "free" nicht löschen
 
Haloo, ich habe eine Komponente erstellt:
Code:
  BDel := TButton.Create(Fmain);
  with BDel do begin
    Parent := Fmain;
    Left := 376;
    Top := 40;
    Width := 57;
    Height := 25;
    Caption := 'Del';
    TabOrder := 2;
  end;
und möchte diese in einer zweiten procedure löschen:
Code:
BDel.free;
Das verursacht jetzt aber einen FEhler. ICh vermute mal das liegt daran, dass ich da was mit owner / parent falsch mache?! :? :?:
gruß
billi

Luckie 31. Jan 2004 20:53

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.

billi 31. Jan 2004 21:00

Re: Komponente lässt sich über "free" nicht lösche
 
Zitat:

Zitat von Luckie
musst du nil übergeben.

Wenn ich müsste wie gerne... :wink:

Luckie 31. Jan 2004 21:14

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);

billi 31. Jan 2004 21:24

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:

Luckie 31. Jan 2004 21:33

Re: Komponente lässt sich über "free" nicht lösche
 
Ghet doch:
Delphi-Quellcode:
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;
Man muss es nur richtig machen. ;)

billi 31. Jan 2004 21:39

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:

Man muss es nur richtig machen. ;)
So ist es...

Robert Marquardt 1. Feb 2004 05:40

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.

billi 1. Feb 2004 08:10

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 03:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz