gpt4 book ai didi

delphi - 自定义组件控件不断重新创建

转载 作者:行者123 更新时间:2023-12-02 08:20:08 26 4
gpt4 key购买 nike

我是 Firemonkey/自定义控件的新手,如果这是一个平庸的问题或重复的问题,我很抱歉,但我陷入困境并且无法弄清楚。

这是我的自定义控件的代码

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.

它编译时没有错误,但我的问题是当我想使用它时。

我在设计时将其放在表单上,​​没有出现问题/错误

1

但是当我运行应用程序时,它会执行此操作

2

如果我在 IDE 中关闭并重新打开 pas 文件,它会执行相同的操作

3

运行应用程序时...

4

就像它一次又一次地执行构造函数一样。

我在 Google 上进行了搜索,但找不到与 firemonkey 类似的内容。

我尝试更改某些内容,但未能成功。

如有任何提示,我们将不胜感激。提前致谢。

我正在使用 Delphi XE8 和 Firemonkey。

最佳答案

您需要设置stored将子组件的属性设置为 false。

paLaterale := TPanel.Create(Self);
paLaterale.Stored := false;
etc

关于delphi - 自定义组件控件不断重新创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30912270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com