2016-05-16 7 views
0

デフォルト値50のColumnWidthというプロパティを含むコンポーネントの例を見てみましょう。設計時に値を100に変更してから、アプリケーションをコンパイルします。コンポーネントプロパティの初期値を取得する方法は?

今度は、私のコンポーネントの中にReset to default(ポップアップメニュー)ボタンを実装して、ColumnWidthを値100に初期化したいと思います。コンポーネントメソッドの下

TMyComponent = class(TComponent) 
    private 
    FVirtualStringTree: TVirtualStringTree; 
    FColumnWidth: Integer; 
    FColumnWidthDef: Integer; 
    public 
    constructor Create(AOwner: TComponent); override; 
    destructor Destroy; override; 
    procedure ResetToDefault; 
    published 
    property ColumnWidth: Integer read FColumnWidth write SetColumnWidth default 50; 
    property VirtualStringTree: TVirtualStringTree read FVirtualStringTree write FVirtualStringTree; 
    end; 

constructor TMyComponent.Create(AOwner: TComponent); 
begin 
    inherited; 
    FColumnWidth:= 50; 
end; 

destructor TMyComponent.Destroy; 
begin 
    inherited; 
end; 

procedure TMyComponent.SetColumnWidth(const Value: Integer); 
begin 
    if FColumnWidth <> Value then FColumnWidth:= Value; 
end; 

procedure TMyComponent.ResetToDefault; 
begin 
    ColumnWidth:= FColumnWidthDef; 
end; 

、どのように私はColumnWidthの初期値を保存することができますか?

+1

どこでも定数を使用してみませんか? –

+0

@RobKennedyのコメントを追加して、2,3週間前に同じ質問に答えられなかったのですか? –

+0

以前の「類似」の質問については、同じことを考えていましたが、私の間違いで心配しました。私は設計時からそれを行う必要があると考えましたが、実際にはリアルタイムで行う必要があります。今私はこの質問がより明確だと思う。プログラミングは趣味であり仕事ではないので、インターネットとStackoverflowは私の唯一のトレーナーです。場合によっては愚かな質問をしてもらえないか、ご理解いただきありがとうございます。 – REALSOFO

答えて

1

値100は、コンポーネントが存在するフォーム、フレーム、またはデータモジュールのDFMリソースに格納されているため、コンポーネント内部では使用できません。悲しいかな、後でDFMからその値を読み返すのは面倒かもしれません(可能ではありますが)。したがって、FormCreateイベント中にフォームフィールドに値を保存し、後でこのコンポーネントプロパティを保存された値にリセットする方が便利です。

+0

私はその目的のために 'FColumnWidthDef'があると思います。 –

関連する問題