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


    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.
    
  • 相关阅读:
    Vue2.x源码学习笔记-Vue构造函数
    微服务从设计到部署(七)重构单体为微服务
    微服务从设计到部署(六)选择部署策略
    Spring REST API + OAuth2 + AngularJS
    微服务从设计到部署(五)事件驱动数据管理
    REST:JAX-RS 与 Spring
    微服务从设计到部署(四)服务发现
    了解 Spring Boot AutoConfiguration
    微服务从设计到部署(三)进程间通信
    微服务从设计到部署(二)使用 API 网关
  • 原文地址:https://www.cnblogs.com/del/p/1580959.html
Copyright © 2020-2023  润新知