お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"property の override"

この発言に対し以下のコメントが寄せられています
#00859 花井 達 さん RE:property の override は不可

Inherited がプロパティにも使えるという例です。 以下では、静的(でしかも private)な SetText の動作に変更を加える ためにText プロパティを override しています。 (本当は上書きですが、意味を考慮して override といわせてもらいます) TAncestor990424 = class private FStrings: TStrings; function GetText: String; procedure SetText(const Value: String); public constructor Create; destructor Destroy; override; function GetCharNumber: Integer; property Text: String read GetText write SetText; end; TDescendant990424 = class(TAncestor990424) protected function GetText: String; procedure SetText(const Value: String); public property Text: String read GetText write SetText; end; { TAncestor990424 } constructor TAncestor990424.Create; begin FStrings:= TStringList.Create; end; destructor TAncestor990424.Destroy; begin FStrings.Free; inherited; end; function TAncestor990424.GetText: String; begin Result:= FStrings.Text; end; procedure TAncestor990424.SetText(const Value: String); begin FStrings.Text:= Value; end; function TAncestor990424.GetCharNumber: Integer; begin Result:= Length(FStrings.Text); end; { TDescendant990424 } function TDescendant990424.GetText: String; begin {親クラスの property の値取得} Result:= Inherited Text; end; procedure TDescendant990424.SetText(const Value: String); begin {親クラスの property に値セット} Inherited Text:= AnsiUpperCase(Value) end; (* TEST PROGRAM *) var ADescendant: TDescendant990424; procedure TForm1.FormCreate(Sender: TObject); begin ADescendant:= TDescendant990424.Create; end; procedure TForm1.Button1Click(Sender: TObject); begin ADescendant.Text:= 'setting overridden property'; ShowMessage(ADescendant.Text); ShowMessage(IntToStr(ADescendant.GetCharNumber)); end; procedure TForm1.FormDestroy(Sender: TObject); begin ADescendant.Free; end; 参考記事 Brown, P. "Property Overriding", Delphi Informant (1999) vol. 5, num. 4, pp. 56-60. この記事の中では TEdit の ReadOnly プロパティのアクセスメソッドに 手を加える手法などを紹介しています。 Original document by 佐々木@六角堂 氏 ID:(CXE02604)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum