Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi self.free (https://www.delphipraxis.net/55907-self-free.html)

xaromz 30. Okt 2005 20:51

Re: self.free
 
Hallo,
Zitat:

Zitat von berens
Klick --> Benachrichtigung an Form --> löschen durch das Form klappt ja nicht, weil der auslöser der Löschen funktion ja wiederrum mein Löschen Knopf ist.... Zirkelbezug ohne Ende...

Ist doch ganz einfach:
Klick -> Message an Form -> Funktion wird beendet -> Message wird verarbeitet -> Form löscht Zettel.

Gruß
xaromz

berens 30. Okt 2005 21:01

Re: self.free
 
Ja aber wir genau mach ich des?

Wenn ich einen Pointer/Variable auf das zu löschende Objekt setze und dann beim zuweisen (Property write) das ändere, ist der auch noch mitten in der OnClick procedure des Löschen Buttons.

procedure TMeineKompo.cmdDeleteClick(Sender: TObject);
begin
form1.KompoDieDuLöschenSollst := Self;
end;

klappt also nicht, da ja direkt beim zuweisen die TMeineKomponente gelöscht wird...

Wie würde dass ganze denn in etwa (Quellcodetechnisch?) ablaufen?

xaromz 30. Okt 2005 21:34

Re: self.free
 
Hallo,

ungefähr so:
Delphi-Quellcode:
unit Unit1;

const
  CM_LOESCHEN = WM_USER + 24;

type
  TForm1 = class(TForm)
  ...
  procedure CMLOESCHEN(var Message: TMessage); message CM_LOESCHEN;
  ...

procedure TForm1.CMLOESCHEN(var Message: TMessage);
begin
  TObject(Message.wParam).Free;
end;
Delphi-Quellcode:
unit Unit2;

type
  TZettel = class(TForm)
  ...
  procedure DeleteClick(Sender: TObject);
  ...

procedure TZettel.DeleteClick(Sender: TObject);
begin
  SendMessage(Form1.Handle, CM_LOESCHEN, Integer(Self), 0);
end;
Gruß
xaromz

berens 30. Okt 2005 23:59

Re: self.free
 
Danke, genau sowas hab ich gesucht, is ja was vergleichbares wie der Link zu dem anderen Thema weiter oben.

Das ist nur halt problematisch wenn man selbst noch nie direkt mit Messages gearbeitet hat ;)

Danke für die Info, ich denke damit kann man gut was anfangen. :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.
Seite 3 von 3     123   

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