二十三、详测 Generics Collections TQueue (3): OnNotify、Extract
2009-11-05 14:54
661 查看
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.
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.
相关文章推荐
- 详测 Generics Collections TQueue (3): OnNotify、Extract
- 二十八、详测 Generics Collections TDictionary(4): OnKeyNotify、OnValueNotify
- 详测 Generics Collections TList (10): OnNotify 事件
- 十九、详测 Generics Collections TList (10): OnNotify 事件
- 详测 Generics Collections TDictionary(4): OnKeyNotify、OnValueNotify
- 二十二、详测 Generics Collections TQueue (2): Create、Count、Clear、TrimExcess
- 三、Delphi 2009 泛型容器单元(Generics.Collections)[2]: TQueue<T>
- Delphi 2009 泛型容器单元(Generics.Collections)[2]: TQueue<T>
- 泛型容器单元(Generics.Collections)[2]: TQueue<T> 队列列表
- 详测 Generics Collections TList (3): Insert、Delete、Remove、Extract
- 详测 Generics Collections TQueue (1): Enqueue、Dequeue、Peek
- 十二、详测 Generics Collections TList (3): Insert、Delete、Remove、Extract
- 二十一、详测 Generics Collections TQueue (1): Enqueue、Dequeue、Peek
- 详测 Generics Collections TQueue (2): Create、Count、Clear、TrimExcess
- ON_NOTIFY_REFLECT : Message Reflection for Windows Controls
- Delphi 2009 泛型容器单元(Generics.Collections)[5]: TObject...<T> 系列
- ON——NOTIFY的例子
- [导入]Delphi 2009 泛型容器单元(Generics.Collections)[1]: TList
- 《Java Generics and Collections》读书笔记二:子类化与通配符
- ON_NOTIFY_REFLECT_EX的使用