お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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