掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
自作コンポーネント上のTEditのプロパティを保存させるには? (ID:28740)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
TWinControl上にTEditを2つ乗っけるコンポーネントを作成しています。 動的に生成したTEditにアクセスするために以下のようなプロパティを用意したのですが、オブジェクトインスペクタで変更した値がうまくDFMに保存されません。 property EditCode: TEdit read FEditCode; 生成時に↓のように「Self」指定で作っているため、と思われます。 FEditCode := TEdit.Create(Self); 「AOwner」を指定するとプロパティは保存されますが、デザイン画面でコンポーネント内のTEditを直接選択出来てしまい、移動させたり、削除出来てしまうなど問題があります。 (また、下記に示すサンプルソースではTEditがいくつも出来てしまいます) 2つのTEditにアクセスするためのプロパティをそれぞれ2個ずつ記述すれば良いのですが、プロパティが多くなりごちゃごちゃしてしまいそうなので、出来るならオブジェクトインスペクタでそれぞれグループ化されるようにしたいと考えています。 宜しくお願いします。 環境:BDS2006 win32 + WinXP Pro SP2 --- 以下サンプルソース ----------------------------------------------- unit Sample; interface uses SysUtils, Classes, Controls, StdCtrls; type TSample = class(TWinControl) private { Private 宣言 } FEditCode: TEdit; FEditName: TEdit; protected { Protected 宣言 } public { Public 宣言 } constructor Create(AOwner: TComponent); override; destructor Destroy; override; published { Published 宣言 } property EditCode: TEdit read FEditCode; property EditName: TEdit read FEditName; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TSample]); end; { TSample } constructor TSample.Create(AOwner: TComponent); begin inherited Create(AOwner); // FEditCode := TEdit.Create(AOwner); //プロパティ保存されるが問題あり FEditCode := TEdit.Create(Self); FEditCode.Parent := Self; FEditCode.Left := 0; FEditCode.Top := 0; FEditCode.Width := 50; // FEditName := TEdit.Create(AOwner); FEditName := TEdit.Create(Self); FEditName.Parent := Self; FEditName.Left := 50; FEditName.Top := 0; FEditName.Width := 100; Self.Height := 21; Self.Width := 150; end; destructor TSample.Destroy; begin FEditCode.Free; FEditName.Free; inherited Destroy; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.