自定义组件控件不断重新创建
Custom component controls keep re-creating
我是 Firemonkey/custom 控件的新手,很抱歉,如果这是一个陈腐的问题或重复的问题,但我被卡住了,无法弄清楚。
这是我的自定义控件的代码
unit swScheduler;
interface
uses
System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.StdCtrls,
FMX.Calendar, FMX.Objects;
type
TswScheduler = class(TControl)
private
{ Private declarations }
paLaterale: TPanel;
clCalendario: TCalendar;
paLibero: TPanel;
paScheduler: TPanel;
rcSCTop: TRectangle;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create( AOwner: TComponent ); override;
destructor Destroy; override;
published
{ Published declarations }
property Align default TAlignLayout.None;
property Enabled;
property Left;
property Top;
property Width;
property Height;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('CustomControls', [TswScheduler]);
end;
{ TswScheduler }
constructor TswScheduler.Create( AOwner: TComponent );
begin
inherited;
Self.Width := 650;
Self.Height := 400;
paLaterale := TPanel.Create( Self );
paLaterale.Parent := Self;
paLaterale.Align := TAlignLayout.Left;
paLaterale.Width := 202;
clCalendario := TCalendar.Create( Self );
clCalendario.Parent := paLaterale;
clCalendario.Align := TAlignLayout.Top;
paLibero := TPanel.Create( Self );
paLibero.Parent := paLaterale;
paLibero.Align := TAlignLayout.Client;
paScheduler := TPanel.Create( Self );
paScheduler.Parent := Self;
paScheduler.Align := TAlignLayout.Client;
rcSCTop := TRectangle.Create( Self );
rcSCTop.Parent := paScheduler;
rcSCTop.Align := TAlignLayout.Top;
rcSCTop.Height := 100;
end;
destructor TswScheduler.Destroy;
begin
inherited;
end;
initialization
RegisterClass( TswScheduler );
end.
它编译没有错误,但我的问题是当我想使用它时。
我在设计时把它放在一个表单上,没有 problems/errors
但是当我 运行 应用程序时它会这样做
如果我关闭并重新打开 IDE 中的 pas 文件,它会做同样的事情
当 运行安装应用程序时...
就像它一次又一次地执行构造函数一样。
我在 Google 上进行了搜索,但找不到与 firemonkey 类似的内容。
我试图改变一些东西,但没能成功。
如有任何提示,我们将不胜感激。提前致谢。
我正在使用 Delphi XE8 和 Firemonkey。
您需要将子组件的 stored 属性 设置为 false。
paLaterale := TPanel.Create(Self);
paLaterale.Stored := false;
etc
我是 Firemonkey/custom 控件的新手,很抱歉,如果这是一个陈腐的问题或重复的问题,但我被卡住了,无法弄清楚。
这是我的自定义控件的代码
unit swScheduler;
interface
uses
System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.StdCtrls,
FMX.Calendar, FMX.Objects;
type
TswScheduler = class(TControl)
private
{ Private declarations }
paLaterale: TPanel;
clCalendario: TCalendar;
paLibero: TPanel;
paScheduler: TPanel;
rcSCTop: TRectangle;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create( AOwner: TComponent ); override;
destructor Destroy; override;
published
{ Published declarations }
property Align default TAlignLayout.None;
property Enabled;
property Left;
property Top;
property Width;
property Height;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('CustomControls', [TswScheduler]);
end;
{ TswScheduler }
constructor TswScheduler.Create( AOwner: TComponent );
begin
inherited;
Self.Width := 650;
Self.Height := 400;
paLaterale := TPanel.Create( Self );
paLaterale.Parent := Self;
paLaterale.Align := TAlignLayout.Left;
paLaterale.Width := 202;
clCalendario := TCalendar.Create( Self );
clCalendario.Parent := paLaterale;
clCalendario.Align := TAlignLayout.Top;
paLibero := TPanel.Create( Self );
paLibero.Parent := paLaterale;
paLibero.Align := TAlignLayout.Client;
paScheduler := TPanel.Create( Self );
paScheduler.Parent := Self;
paScheduler.Align := TAlignLayout.Client;
rcSCTop := TRectangle.Create( Self );
rcSCTop.Parent := paScheduler;
rcSCTop.Align := TAlignLayout.Top;
rcSCTop.Height := 100;
end;
destructor TswScheduler.Destroy;
begin
inherited;
end;
initialization
RegisterClass( TswScheduler );
end.
它编译没有错误,但我的问题是当我想使用它时。
我在设计时把它放在一个表单上,没有 problems/errors
但是当我 运行 应用程序时它会这样做
如果我关闭并重新打开 IDE 中的 pas 文件,它会做同样的事情
当 运行安装应用程序时...
就像它一次又一次地执行构造函数一样。
我在 Google 上进行了搜索,但找不到与 firemonkey 类似的内容。
我试图改变一些东西,但没能成功。
如有任何提示,我们将不胜感激。提前致谢。
我正在使用 Delphi XE8 和 Firemonkey。
您需要将子组件的 stored 属性 设置为 false。
paLaterale := TPanel.Create(Self);
paLaterale.Stored := false;
etc