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