十九、详测 Generics Collections TList (10): OnNotify 事件

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 MyListNotify(Sender: TObject; const Item: string;
      Action: TCollectionNotification);
  
end;
 
var
  Form1: TForm1;

implementation

{$R *.dfm}

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

procedure TForm1.Button1Click(Sender: TObject);
var
  List: TList
<string>;
begin
  List :
= TList<string>.Create();
  List.OnNotify :
= MyListNotify; {关联事件过程}

  List.AddRange([
'A''B''C']); {Add: A | Add: B | Add: C }

  List.Delete(
0);    {Remove: A}
  List.Remove(
'B');  {Remove: B}
  List.Extract(
'C'); {Extract: C}

  List.OnNotify :
= nil;    
  List.Free;
end;

end.

posted on 2009-11-05 12:05  jxgxy  阅读(308)  评论(0编辑  收藏  举报

导航