DELPHI TPanel 控件KEYDOWN事件中删除自己报错 5

代码如下:unit1.pas代码:unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Gr... 代码如下:

unit1.pas代码:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
pnl1: TPanel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses Unit2;
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
pnl:TCtrlBase;
begin
pnl:=TCtrlBase.createA(nil);
pnl.Parent:= pnl1;
end;

end.
unit Unit2;

interface
uses SysUtils,Controls, Windows,Classes,ExtCtrls,Messages,RzPanel,Dialogs;

type
TCtrlBase=class(TPanel)
protected
。。。字数限制,请见谅
procedure TCtrlBase.SelfKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=46 then
begin
try

Self.Parent:=nil;
FreeAndNil(self);
Exit;
except

end;

end;
end;
释放自己的时候报内存错误。。
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
Raypeng
2015-10-23 · TA获得超过533个赞
知道小有建树答主
回答量:222
采纳率:0%
帮助的人:148万
展开全部
不要用self,在很多时候self指的是当前窗体,而不是你现在所属的控件。你替换成控件名试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱心永恒2008
2015-10-23 · TA获得超过1231个赞
知道小有建树答主
回答量:1314
采纳率:62%
帮助的人:330万
展开全部
要在别的控件里删除,自己删除自己会破坏内部类指针
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式