文档章节

详测 Generics Collections TDictionary(4): OnKeyNotify、OnValueNotify

涂孟超
 涂孟超
发布于 2014/09/26 15:30
字数 181
阅读 16
收藏 0
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 KeyNotify(Sender: TObject; const Item: string;
      Action: TCollectionNotification);
    procedure ValueNotify(Sender: TObject; const Item: Integer;
      Action: TCollectionNotification);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.KeyNotify(Sender: TObject; const Item: string;
  Action: TCollectionNotification);
begin
  case Action of
    cnAdded     : ShowMessageFmt('Key_Add: %s', [Item]);
    cnRemoved   : ShowMessageFmt('Key_Remove: %s', [Item]);
    cnExtracted : ShowMessageFmt('Key_Extract: %s', [Item]);
  end;
end;

procedure TForm1.ValueNotify(Sender: TObject; const Item: Integer;
  Action: TCollectionNotification);
begin
  case Action of
    cnAdded     : ShowMessageFmt('Value_Add: %d', [Item]);
    cnRemoved   : ShowMessageFmt('Value_Remove: %d', [Item]);
    cnExtracted : ShowMessageFmt('Value_Extract: %d', [Item]);
  end;
end;  

procedure TForm1.Button1Click(Sender: TObject);
var
  Dictionary: TDictionary<string,Integer>;
begin
  Dictionary := TDictionary<string,Integer>.Create();
  Dictionary.OnKeyNotify := KeyNotify;
  Dictionary.OnValueNotify := ValueNotify;

  Dictionary.Add('n1', 111); {Key_Add: n1;  Value_Add: 111}
  Dictionary.Add('n2', 222); {Key_Add: n2;  Value_Add: 222}

  Dictionary.AddOrSetValue('n1', 123); {Value_Remove: 111;  Value_Add: 123}

  Dictionary.Remove('n1');      {Key_Remove: n1;  Value_Remove: 111}

  Dictionary.ExtractPair('n2'); {Key_Extract: n2;  Value_Extract: 222}

  Dictionary.OnKeyNotify := nil;
  Dictionary.OnValueNotify := nil;
  
  Dictionary.Free;
end;

end.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/10/11/1580959.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
Delphi 2010 中的泛型

Delphi 2010 中的泛型日期:2010年5月31日 作者: 人气:10504 查看:[大字体 中字体 小字体]2010已发布很长时间了,口碑还不错,准备用它开发下一项目,但对泛型等新东西的认识还不够,就搜了...

vga
2016/08/09
45
0
GBin1推荐教程之Java泛类型(Generics)快速入门

发布时间: 2011-9-20 来源:javacodegeeks.com 翻译: gbin1.com 泛类型(Generics)是Java SE5.0里的特性,在发布后的几年里,我相信每个java开发者都不仅仅听说过,而且实实在在的使用过。...

gbin1
2011/09/21
192
0
Apache Maven 3.0.3 Released

相比较 Maven 3.0.2 版本,3.0.3 改进主要包括: * [MNG-3575] - Allow hexadecimal parameters * [MNG-4971] - Display maven home in version info * [MNG-4984] - Simplify drop in of 3......

红薯
2011/03/05
1K
0
Google Guava vs Apache Commons for Argument Validation

It is an established good practice to validate method arguments at the beginning of the method body. For example you could check that the passed value is not negative before doi......

泳泳啊泳泳
2018/01/07
0
0
java核心基础 --- 泛型

本篇博文主要介绍两部分,为什么要有泛型以及泛型擦除这个概念,如果你想要了解泛型的具体使用,请查看相关书籍或者其他博客。 为什么要有泛型 来看看官方文档给的解释: Code that uses gen...

firepation
01/25
20
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis + Ehcache 二级缓存实例

二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相同的sql语句,第一次执行完毕...

xiaolyuh
6分钟前
1
0
Spring源码学习(二)哎呦,按菜谱做菜与AbstractAutowireCapableBeanFactory.createBean流程差不多

记得跟老婆谈恋爱时,有一天心血来潮给老婆做饭,按照菜谱一步一步的做,结果差点把厨房烧了!!! 这事至今老婆还记得。 入口 上一篇说了,AbstractBeanFactory.getBean的主流程 ,今天来说下...

温安适
8分钟前
15
0
前端UI攻城狮 你们该抛弃jQuery了

你不再需要jQuery! Web工程师太依赖jQuery了,某种意义上说jQuery已经成了JavaScript的同义词。但是我们真的需要他么?或许我们应该反思一下什么时候才真的需要jQuery。 对我个人而言开始使...

前端老手
10分钟前
1
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
52分钟前
5
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
59分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部