Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Dynamisch erzeugte Komponente soll sich selbst löschen...

  Alt 20. Nov 2010, 09:47
Das Problem eine Komponente im OnClick zu vernichten habe ich auch lange über eine Liste und Timer gelöst, da es zwar manchmal funktioniert, aber üblicherweise zu Zugriffsverletzungen führt da das Verlassen der Prozedur OnClick nach dem Vernichten nicht mehr definiert ist.
Ich habe inzwischen eine zuverlässige Methode gefunden die in Deinem Beispiel wie folgt aussähe:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

const
  KillMessage = WM_USER + 200;

type
  TPanel=Class(ExtCtrls.TPanel)
    procedure Kill(var Msg: TMessage); message KillMessage;
  End;

  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 PostMessage(TButton(sender).Parent.Handle,KillMessage,0,0) ;
end;

{ TPanel }
procedure TPanel.Kill(var Msg: TMessage);
begin
  Free;
end;
end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (20. Nov 2010 um 09:50 Uhr)
  Mit Zitat antworten Zitat