|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"オブジェクト型プロパティ"
{
オブジェクトインスペクタで「+」の部分をダブルクリックするとプロパ
ティリストを展開してそれらを編集できるオブジェクト型プロパティのサ
ンプルコード。
・プロパティにするオブジェクトはTPersistentを継承する。
・オブジェクトに持たせるプロパティはPublised宣言する。
}
unit TestCompo1;
interface
uses
Windows, Messages, SysUtils, Classes;
type
TSex = (sxMale, sxFemale);
TPersonalData = class(TPersistent) // プロパティにする
private // オブジェクトのクラス宣言
FName: string; // 名前
FAge: Integer; // 年齢
FSex: TSex; // 性別
FMarried: Boolean; // 既婚かどうか?
procedure SetAge(const Value: Integer);
procedure SetMarried(const Value: Boolean);
procedure SetName(const Value: string);
procedure SetSex(const Value: TSex);
public
published
property Name: string read FName write SetName;
property Age: Integer read FAge write SetAge;
property Sex: TSex read FSex write SetSex;
property Married: Boolean read FMarried write SetMarried;
end;
TTestCompo = class(TComponent) // コンポーネントのクラス宣言
private
{ Private 宣言 }
FPersonalData: TPersonalData;
procedure SetPersonalData(const Value: TPersonalData);
protected
{ Protected 宣言 }
public
{ Public 宣言 }
constructor Create( AOwner : TComponent ); override;
destructor Destroy; override;
published
{ Published 宣言 }
property PersonalData: TPersonalData read FPersonalData write SetPersonalData;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TTestCompo]);
end;
{ TPersonalData}
// プロパティアクセスメソッド(書込用)のみ実装しています。
procedure TPersonalData.SetAge(const Value: Integer);
begin
if Value <> FAge then FAge := Value;
end;
procedure TPersonalData.SetMarried(const Value: Boolean);
begin
if Value <> FMarried then FMarried := Value;
end;
procedure TPersonalData.SetName(const Value: string);
begin
if Value <> FName then FName := Value;
end;
procedure TPersonalData.SetSex(const Value: TSex);
begin
if Value <> FSex then FSex := Value;
end;
{ TTestCompo }
// オブジェクト型プロパティの作成
constructor TTestCompo.Create(AOwner: TComponent);
begin
inherited Create( AOwner );
FPersonalData:= TPersonalData.Create;
end;
// オブジェクト型プロパティの破棄
destructor TTestCompo.Destroy;
begin
FPersonalData.Free;
inherited Destroy;
end;
// オブジェクト型プロパティへのアクセスメソッド(書込用)
procedure TTestCompo.SetPersonalData(const Value: TPersonalData);
begin
FPersonalData.Assign(Value);
end;
end.
○ 心を打つ美しい文書作りは「えるの〜と」 ○
http://member.nifty.ne.jp/h-triton/
Avalon's Friendly Crew #80008 H-Triton (^^) since 1996
Original document by H-Triton 氏 ID:(QZV11422)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|