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 .
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 .