掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
配列型変数をプロパティーにするには? (ID:31639)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
集合型ではないなら、こんな感じか? TPersistent以下から継承したクラスをプロパティにしたら、そのクラスの published型のプロパティは自動的に[+]になる。 type _TestItem = (tsA,tsB,tsC,tsD,tsE,tsF,tsG); TTestTag=class(TPersistent) protected FTag: array[_TestItem] of Integer; public procedure Assign(Source: TPersistent); override; protected function GetTag(Index: _TestItem): Integer; procedure SetTag(Index: _TestItem; Value: Integer); published property TagA: Integer index tsA read GetTag write SetTag; property TagB: Integer index tsB read GetTag write SetTag; property TagC: Integer index tsC read GetTag write SetTag; property TagD: Integer index tsD read GetTag write SetTag; property TagE: Integer index tsE read GetTag write SetTag; property TagF: Integer index tsF read GetTag write SetTag; property TagG: Integer index tsG read GetTag write SetTag; end; TTest = class(TComponent) private FTag: TTestTag; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; protected procedure SetTag(TestTag: TTestTag); published property Tag: TTestTag read FTag write SetTag; end; implementation procedure TTestTag.Assign(Source: TPersistent); var i: _TestItem; begin inherited Assign(Source); if Source is TTestTag then begin for i := Low(_TestItem) to high(_TestItem) do begin FTag[i] := TTestTag(Source).FTag[i]; end; end; end; function TTestTag.GetTag(Index: _TestItem): Integer; begin Result := FTag[Index]; end; procedure TTestTag.SetTag(Index: _TestItem; Value: Integer); begin FTag[Index] := Value; end; constructor TTest.Create(AOwner: TComponent); begin inherited Create(AOwner); FTag := TTestTag.Create; end; destructor TTest.Destroy; begin FTag.Free; inherited Destroy; end; procedure TTest.SetTag(TestTag: TTestTag); begin FTag.Assign(TestTag); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.