実用的な小オブジェクトクラス、TStringListとの組み合わせを提供
1574 ワード
Borlandがサボるためなのか効率的なためなのか分からないが、多くのVCLはTStringListをメンバーとしてデータ(例えばTListBox/TStringGrid)を管理し、専用のItemタイプ(例えば、ListViewにはListViewItemタイプがある)を使用するのではなく、拡張したい場合(例えば、1つのListBoxに名前を表示し、IDを記録しなければならないが、このIDは表示できない)、トラブルにぶつかる
実際、StringList内部には、stringコンテンツに関連するオブジェクトを管理できるObjectsの管理が提供する.ただし、この対象はTObjectであることを要求する.多くの場合、IDや他の簡単な文字列を別に記録する必要があるかもしれません.オブジェクトを専門にする必要はありません.このとき、私たちの今日の主役は生まれました.
このクラスには1つのメンバーしかいません:Value(Variantタイプ)は、関数を構築することによって値を伝達し、作成することができます.普段string/integerを記録するのに便利になりました.もちろんもう一つの用途は多くのVCLコントロールにTAG属性があるが、この属性はintegerでしかなく、文字列を記録したいときは不便である.それはこの小さな対象類で手伝うことができます.
リストボックスにアイテムを追加し、クリックすると内部に含まれる値が表示されます.
レンガを投げて玉を引いて、みんなの指導を望みます(ブログ園delphierが少なくないことを発見します...)
実際、StringList内部には、stringコンテンツに関連するオブジェクトを管理できるObjectsの管理が提供する.ただし、この対象はTObjectであることを要求する.多くの場合、IDや他の簡単な文字列を別に記録する必要があるかもしれません.オブジェクトを専門にする必要はありません.このとき、私たちの今日の主役は生まれました.
type
//CopyRight(c) Hydonlee,
TMyObject = class(TObject)
private
FV: Variant;
public
constructor Create(v: Variant);
property Value: Variant read FV write FV;
end;
implementation
constructor TMyObject.Create(v: Variant);
begin
self.FV := v;
end;
このクラスには1つのメンバーしかいません:Value(Variantタイプ)は、関数を構築することによって値を伝達し、作成することができます.普段string/integerを記録するのに便利になりました.もちろんもう一つの用途は多くのVCLコントロールにTAG属性があるが、この属性はintegerでしかなく、文字列を記録したいときは不便である.それはこの小さな対象類で手伝うことができます.
リストボックスにアイテムを追加し、クリックすると内部に含まれる値が表示されます.
procedure TForm1.btn1Click(Sender: TObject);
begin
//CopyRight(c) Hydonlee,
lst1.Items.AddObject('I Love YOu', TMyObject.Create('1'));
lst1.Items.AddObject('Do You Love ME', TMyObject.Create('2'));
lst1.Items.AddObject('Sorry', TMyObject.Create('3'));
lst1.Items.AddObject('BYE', TMyObject.Create('4'));
end;
procedure TForm1.lst1Click(Sender: TObject);
begin
ShowMessage(TMyObject(lst1.Items.Objects[lst1.ItemIndex]).Value);
end;
レンガを投げて玉を引いて、みんなの指導を望みます(ブログ園delphierが少なくないことを発見します...)