gpt4 book ai didi

delphi - Delphi XE2:如何在设计时使属性可设置?

转载 作者:行者123 更新时间:2023-12-03 18:39:53 25 4
gpt4 key购买 nike

我有一个简单的组件

type
TTimedScrollBox = class(TScrollBox)
private
procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
protected
FSkipTime: Cardinal;
FEndTimeout: Cardinal;
FSkipScrollTimer: TTimer;
FEndScrollTimer: TTimer;
FLastMessage: TWMVScroll;
FWaiting: boolean;
FLastMessageValid: boolean;
FLog: TStrings;
FSkipCount: integer;
procedure SkipTimerEvent(Sender: TObject);
procedure EndTimerEvent(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Log: TStrings read FLog;
published
property ScrollSkipTime: Cardinal read FSkipTime write FSkipTime default 100;
property ScrollEndTimeout: Cardinal read FEndTimeout write FEndTimeout default 200;
end;


我希望能够在设计时为ScrollSkipTime和ScrollEndTimeout指定值。我的印象是,要做的就是编写如下所示的代码,但是


我提供的默认值不会出现在设计器中,并且
当我在构造函数中设置断点并查看实例的功能时,即使我在设计器中输入的值存储在DFM中,该属性后面的字段的值也为0。


我想念/做错了什么?

最佳答案

您在属性声明中提供的默认值仅由流框架和IDE使用。例如,如果该值等于默认值,则不流式传输该属性。默认值还用于允许IDE以粗体突出显示已从默认值修改的值。

代码中缺少的是,您需要在组件的构造函数中设置backing字段的值。我们看不到该代码,但是我很确定那是缺少的代码。

文档中涵盖了此问题:


http://docwiki.embarcadero.com/RADStudio/en/Default_Property_Values
http://docwiki.embarcadero.com/RADStudio/en/Properties_(Delphi)#Storage_Specifiers

关于delphi - Delphi XE2:如何在设计时使属性可设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57364841/

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