您的位置:首页 > 产品设计 > UI/UE

详测 Generics Collections TQueue (3): OnNotify、Extract

2009-10-11 14:47 567 查看
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Generics.Collections;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure MyQueueNotify(Sender: TObject; const Item: Integer;
Action: TCollectionNotification);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

//uses Generics.Collections;

{准备给 TQueue.OnNotify 调用的事件过程}
procedure TForm1.MyQueueNotify(Sender: TObject; const Item: Integer;
Action: TCollectionNotification);
begin
case Action of
cnAdded     : ShowMessageFmt('Add: %d', [Item]);
cnRemoved   : ShowMessageFmt('Remove: %d', [Item]);
cnExtracted : ShowMessageFmt('Extract: %d', [Item]);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
Queue: TQueue<Integer>;
begin
Queue := TQueue<Integer>.Create();
Queue.OnNotify := MyQueueNotify;

Queue.Enqueue(11); {Add: 11}
Queue.Enqueue(22); {Add: 22}
Queue.Enqueue(33); {Add: 33}

Queue.Dequeue;     {Remove: 11}

// Extract 和 Dequeue 功能一致, 区别只是在驱动 OnNotify 事件时传递的参数有区别, 没多大意义
Queue.Extract;     {Extract: 22}

//Queue.OnNotify := nil;

Queue.Free;        {Remove: 33}
end;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: