Delphi XE2:如何在设计时设置属性?
Delphi XE2: How to make properties settable at design time?
我有一个简单的组件
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 的值。我的印象是我需要做的就是编写如图所示的代码,但是
- 我提供的默认值没有出现在设计器中并且
- 当我在构造函数中设置断点并查看它对实例执行的操作时,属性 后面的字段的值为 0,即使我在设计器中输入的值存储在 DFM 中.
我missing/doing哪里错了?
您在 属性 声明中提供的默认值仅供流式框架和 IDE 使用。例如,如果值等于默认值,则不会流式传输 属性。默认值还用于允许 IDE 以粗体突出显示哪些值已从其默认值修改。
您的代码中缺少的是您需要在组件的构造函数中设置支持字段的值。我们看不到该代码,但我很确定它就是缺少的代码。
此问题已包含在文档中:
我有一个简单的组件
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 的值。我的印象是我需要做的就是编写如图所示的代码,但是
- 我提供的默认值没有出现在设计器中并且
- 当我在构造函数中设置断点并查看它对实例执行的操作时,属性 后面的字段的值为 0,即使我在设计器中输入的值存储在 DFM 中.
我missing/doing哪里错了?
您在 属性 声明中提供的默认值仅供流式框架和 IDE 使用。例如,如果值等于默认值,则不会流式传输 属性。默认值还用于允许 IDE 以粗体突出显示哪些值已从其默认值修改。
您的代码中缺少的是您需要在组件的构造函数中设置支持字段的值。我们看不到该代码,但我很确定它就是缺少的代码。
此问题已包含在文档中: