SVTX Опубликовано 24 октября, 2017 Поделиться Опубликовано 24 октября, 2017 Есть простой самописный компонент. TRectangle и при его создании автоматически создаем TShadowEffect. После сохранения эти TShadowEffect начинают массово плодится в DFM. Одна, вторая, третья, 10-тая. Везде стоит Stored := False и другие проверки. И все равно они плодятся. Как быть коллеги?) unit uFGComponents; interface uses System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Objects, FMX.Effects; type TFGRectangle = class(TRectangle) private { Private declarations } protected { Protected declarations } FShadowEffect: TShadowEffect; public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override; published { Published declarations } end; procedure Register; implementation uses FMX.Graphics; procedure Register; begin RegisterComponents('FGComponents', [TFGRectangle]); end; { TRectangle1 } constructor TFGRectangle.Create(AOwner: TComponent); begin inherited; with Self do begin Stroke.Kind := TBrushKind.None; XRadius := 4; YRadius := 4; Fill.Color := $FF23B18C; end; if (csDesigning in Self.ComponentState) or (csLoading in Self.ComponentState) then Exit; FShadowEffect := TShadowEffect.Create(Self); with FShadowEffect do begin Stored := False; Distance := 0.01; Opacity := 0.3; Softness := 0.2; Parent := Self; end; end; destructor TFGRectangle.Destroy; begin FreeAndNil(FShadowEffect); inherited; end; end. Цитата Ссылка на комментарий
Вопрос
SVTX
Есть простой самописный компонент.
TRectangle и при его создании автоматически создаем TShadowEffect.
После сохранения эти TShadowEffect начинают массово плодится в DFM. Одна, вторая, третья, 10-тая.
Везде стоит Stored := False и другие проверки. И все равно они плодятся. Как быть коллеги?)
unit uFGComponents; interface uses System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Objects, FMX.Effects; type TFGRectangle = class(TRectangle) private { Private declarations } protected { Protected declarations } FShadowEffect: TShadowEffect; public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override; published { Published declarations } end; procedure Register; implementation uses FMX.Graphics; procedure Register; begin RegisterComponents('FGComponents', [TFGRectangle]); end; { TRectangle1 } constructor TFGRectangle.Create(AOwner: TComponent); begin inherited; with Self do begin Stroke.Kind := TBrushKind.None; XRadius := 4; YRadius := 4; Fill.Color := $FF23B18C; end; if (csDesigning in Self.ComponentState) or (csLoading in Self.ComponentState) then Exit; FShadowEffect := TShadowEffect.Create(Self); with FShadowEffect do begin Stored := False; Distance := 0.01; Opacity := 0.3; Softness := 0.2; Parent := Self; end; end; destructor TFGRectangle.Destroy; begin FreeAndNil(FShadowEffect); inherited; end; end.
Ссылка на комментарий
0 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.