unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Contnrs;

type

  // ObjectList에 추가할  Object
  TMyObj = class(TObject)
  private
    FiState : integer;
    FsId : string;
    FiTemp : integer;
  public
    function Cal(iTemp: integer): integer;
  published
    property State : integer read FiState write FiState;
    property ID : string read FsId write FsId;
  end;

  TForm1 = class(TForm)
    btnCreate: TButton;
    btnAdd: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    btnObjList: TButton;
    procedure btnObjListClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnCreateClick(Sender: TObject);
  private
    { Private declarations }
    ol : TObjectList;  // ObjectList 정의
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TPjObj }

function TMyObj.Cal(iTemp: integer): integer;
begin
  result := iTemp * 2;
end;

procedure TForm1.btnCreateClick(Sender: TObject);
begin
  // ObjectList 생성
  ol := TObjectList.Create(true);
end;

procedure TForm1.btnObjListClick(Sender: TObject);
var
  i : integer;
begin
  // Object List에 추가한 Object의 Property 표시
  for i := 0 to ol.Count - 1 do
    memo1.Lines.Add((ol.Items[i]as TMyObj).ID);
end;

procedure TForm1.btnAddClick(Sender: TObject);
var
  po : TMyObj;
begin
  // Object List에 추가할 Object 생성
  po := TMyObj.Create;
  po.ID := edit1.Text;
  // Object List에 Object 추가
  ol.Add(po);
  //po.Free;  <- Free하면 안됨
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // Object List 개방
  ol.Free;
end;

end.


Object List를 사용하려면 Contnrs를 uses에 추가해야 됨
Object List에 추가할 Object를 생성한 후 소멸시키지 않아도 되고
생성한 후 소멸시켜서도 안된다. ^^;;

프로그램이 죽을 때 Object List를 Free해 주면
추가한 모든 Object가 자동으로 소멸되어진다.

ObjectList에 추가한 Object의 Property나 Method를 사용할 때는
위 소스의 TMyObject로 예를들면 아래와 같이 쓸 수 있다.

    (ol.Items[i] as TMyObj).ID
    TMyObj(ol.Items[i]).ID
 
 

Posted by 떡잎
BLOG main image
프로그래밍 공부하면서 써가는 개인 노트 (따라서 여기에 씌여있는 소스의 신빙성을 보장 못함 -.-;;) 이 블로그 보면서 틀린 점이 있으면 꼬옥 알려주세요. by 띠리

공지사항

카테고리

분류 전체보기 (323)
Win32 SDK 초보 (27)
통신관련 (11)
MFC TIP (20)
C/C++ TIP (10)
개발기타 (10)
링크 (2)
견물생심 (24)
이것저것 (8)
용어메모 (3)
데이터베이스 (32)
비주얼 베이직 (10)
하드웨어 (3)
C# (42)
Xcode (3)
델파이 (82)
홈페이지 (5)
MindStorm (0)
낙서 (5)
스크래치 (0)
기타 (6)
아두이노 (1)
라즈베리파이 (2)
안드로이드 (6)
파이썬 (0)
WEB (2)
Total : 964,050
Today : 65 Yesterday : 370