|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"TCollectionの使い方"
こんにちは、凛です。
TCollectionの使い方の最もシンプルな例です。
TCollectionは特定のクラスのインスタンスを束ねておくのに便利です。
TCollectionからオブジェクトを削除することでオブジェクトは解放されます
し、オブジェクトを解放すればTCollectionのリストから削除されます。
このサンプルはボタンを4つ、ListBoxをひとつフォーム上に配置して、それぞれ
のボタンのOnClickイベントを以下のようにすることで実行できるようになりま
す。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
StdCtrls;
type
TMyCollectionItem=Class(TCollectionItem)
public
AProp:String;
end;
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private 宣言 }
ACollection:TCollection;
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
ACollection:=TCollection.Create(TMyCollectionItem);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
//TCollectionのインスタンスを解放すればそのItemも解放される
ACollection.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
NewItem:TMyCollectionItem;
begin
//ACollectionに新しいTMyCollectionItemを追加する
NewItem:=TMyCollectionItem(ACollection.Add);
//新しいTMyCollectionにユニークなデータを格納しておく
NewItem.AProp:='今 '+FormatDateTime('hh:nn:ss',Now);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
//ACollectionの全アイテムのAPropをListBoxに書き出す
ListBox1.Clear;
for i:= 0 to ACollection.Count-1 do
begin
ListBox1.Items.Add(TMyCollectionItem(ACollection.Items[i]).AProp);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
DelItem:TCollectionItem;
begin
DelItem:=ACollection.Items[0];
//オブジェクトを解放すればCollectionからは削除される
DelItem.Free;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
//CollectionからDeleteするとオブジェクトも解放される
ACollection.Delete(0);
end;
end.
2001/08/30(Thu) 00:11am MXB01744 凛
Original document by 凛 氏 ID:(MXB01744)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|