我自己导出生成一个Panel,Panel上放了个Label“Destroy Me”, Label的的Parent是
导出生成的Panel, 然后在 Dialog上Create了这个Panel. 我设想在Label的点击事件上写入销毁整个Panel的代码,问题总是出错,我想原因是不能自己销毁自己, 于是我想通过向Panel的父窗口(一
个Dialog)发一个自定义事件,让Dialog来销毁这个Panel,但是我用Delphi不过2周,
所以请问大家我如何实现这个功能,能附一点代码最好,感激不尽(PS:我看一些资料,于是这样实现了一下
在Dialog放了一个button, 在Label点击事件上实现了MyDialog.button.perform(WM_LButtonDown,
 0, 0)
然后在Dialog上的Button的Click事件上写销毁Panel的free,为什么还是出现内存
问题呢?
)

解决方案 »

  1.   

    可以销毁自己啊
    ,试试下面的代码unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Button2: TButton;
        procedure Button2Click(Sender: TObject);
      private
        procedure destroyme(Sender:TObject);
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button2Click(Sender: TObject);
    var
      pp:TPanel;
      bb:TButton;
    begin
      pp:=TPanel.Create(nil);
      pp.Parent :=self;
      bb:=TButton.Create(nil);
      bb.Parent :=pp;
      bb.OnClick :=destroyme;
      bb.Caption :='destroyme';
    end;procedure TForm1.destroyme(Sender: TObject);
    begin
      TWinControl(Sender).Parent.Free;
    end;end.