Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 

Re: Klasseninstanz soll sich selbst löschen

  Alt 22. Apr 2006, 17:02
Hallo,

sende doch irgendeine Message (die Du vorher deklariert hast).
Hier mal ein Beispiel (Du brauchst ein Form und einen Button):
Delphi-Quellcode:
const
  WM_LOESCHMICH = WM_USER + 123; // die Message (immer als WM_USER + irgendeine Zahl deklarieren)

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure LoeschMich(var Msg: TMessage); message WM_LOESCHMICH; // der MessageHandler
  public
    { Public-Deklarationen }
  end;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(Handle, WM_LOESCHMICH, Integer(Sender), 0); // an Form senden (Handle), in WParam den Button stecken
end;

procedure TForm1.LoeschMich(var Msg: TMessage);
begin
  TObject(Msg.WParam).Free; // WParam nach TObject casten und freigeben
end;
Du solltest allerdings in der Messagebehandlungs-Methode noch ein paar Sicherheitschecks einbauen (z. B. überprüfen, dass WParam nicht Null ist).

Gruß
xaromz
  Mit Zitat antworten Zitat