0
我有一个组件,它具有TGlowEffect的TImage。我已经安装了它,并且它在窗体上可见。我可以改变发光效果参数,但是当我运行该程序时,程序崩溃Rad Studio?将TGlowEffect添加到派生的firemonkey中TImage组件
这是我的代码。
type
TGlowImage = class(TImage)
private
FGlowEffect: TGlowEffect;
procedure SetGlowEffect(const Value : TGlowEffect);
protected
public
constructor Create(AOwner : TComponent); override;
destructor Destroy(); override;
published
property GlowEffect : TGlowEffect read FGlowEffect write SetGlowEffect;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('SomeCompany', [TGlowImage]);
end;
{ TGlowImage }
constructor TGlowImage.Create(AOwner : TComponent);
begin
inherited;
FGlowEffect := TGlowEffect.Create(Self)
end;
destructor TGlowImage.Destroy();
begin
if(Assigned(FGlowEffect)) then
FreeAndNil(FGlowEffect);
inherited;
end;
procedure TGlowImage.SetGlowEffect(const Value : TGlowEffect);
begin
FGlowEffect.Assign(Value);
end;
我不知道我错过了什么,但它一定是相当糟糕。
任何帮助,将不胜感激。
“该程序崩溃RAD Studio”不是一个有用的问题描述。你有错误信息吗?如果是这样,它说什么?在测试之前不要安装组件。您可以通过在测试应用程序的代码中创建它并将参数设置为不同的值来实现此目的;如果它不起作用,您可以轻松使用调试器来确定原因。一旦你完全测试了它,*然后*你安装它。 – 2014-10-19 05:01:54
不是崩溃的原因,但在你的析构函数中没有必要在FreeAndNil之前调用Assigned。 FreeAndNil可以安全地用一个零参考来调用。 – 2014-10-19 07:10:55