У меня есть компонент, который я получил из TImage, который имеет TGlowEffect. У меня он установлен, и он виден на форме. Я могу изменить параметры эффекта свечения, но когда я запускаю программу, программа разбивает Rad Studio?Добавление TGlowEffect к полученному компоненту TImage от firemonkey
Вот мой код.
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» не является полезным описанием проблемы. Вы получили сообщение об ошибке? Если да, то что он говорит? Не устанавливайте компоненты, пока вы их не протестировали. Вы делаете это, создавая его в коде в тестовом приложении и устанавливая параметры для разных значений; если он не работает, вы можете легко использовать отладчик, чтобы определить, почему. После того, как вы тщательно протестировали его, * затем * вы его установите. –
Не причина аварии, но в вашем деструкторе нет необходимости вызывать Assigned перед FreeAndNil. FreeAndNil можно безопасно вызвать с помощью ссылки nil. –