詳細Generics Collections:TObjectList、TObjectQueue、TObjectStack
1685 ワード
TObjectList、TObjectQueue、TObjectStackはそれぞれ次のように継承されます.
TList、TQueue、TStack;
オブジェクトに特化したリストで、オブジェクトが自動的に解放されるかどうかを決定するOwnsObjectsブール属性が追加されています(これもCreateのパラメータによって決定されます).
その他は基本的にそれらの親と同じであり、TObjectListテストの一例のみを与える(この汎用関連コンテンツの学習が完了する):
TList
オブジェクトに特化したリストで、オブジェクトが自動的に解放されるかどうかを決定するOwnsObjectsブール属性が追加されています(これもCreateのパラメータによって決定されます).
その他は基本的にそれらの親と同じであり、TObjectList
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Generics.Collections;
procedure TForm1.Button1Click(Sender: TObject);
const
w = 100; h = 20;
var
ObjList: TObjectList<TEdit>;
Edit: TEdit;
i: Integer;
begin
ObjList := TObjectList<TEdit>.Create();
//ObjList := TObjectList<TEdit>.Create(False); { , }
Randomize;
for i := 0 to 5 do { 6 Edit, }
begin
Edit := TEdit.Create(Self);
Edit.Parent := Self;
Edit.SetBounds(Random(ClientWidth-w), Random(ClientHeight-h), w, h);
ObjList.Add(Edit);
end;
{2 }
Sleep(2000);
ObjList.Delete(0);
{2 , ; }
Sleep(2000);
Edit := ObjList.Extract(ObjList[0]);
Edit.Color := clRed;
Edit.Repaint;
//ObjList.OwnsObjects := False; { , }
{2 ; }
Sleep(2000);
ObjList.Free;
end;
end.