簡體   English   中英

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 指定值。 我的印象是我需要做的就是編寫如圖所示的代碼,但是

  1. 我提供的默認值不會出現在設計器中
  2. 當我在構造函數中設置斷點並查看它為實例執行的操作時,即使我在設計器中輸入的值存儲在 DFM 中,屬性后面的字段的值為 0。

我錯過了什么/做錯了什么?

您在屬性聲明中提供的默認值僅由流框架和 IDE 使用。 例如,如果該值等於默認值,則不會流式傳輸該屬性。 默認值還用於允許 IDE 以粗體突出顯示已從默認值修改的值。

您的代碼中缺少的是您需要在組件的構造函數中設置支持字段的值。 我們看不到那個代碼,但我很確定那是缺少的東西。

文檔中涵蓋了此問題:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM