Guest User

INotifyPropertyChanged

a guest
Aug 21st, 2022
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.94 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
  8.  
  9.  
  10. type
  11.   TExample = class
  12.   private
  13.     FPropertyChanged: TNotifyEvent;
  14.     FSomeIntegerProperty: Integer;
  15.     FSomeStringProperty: String;
  16.     procedure SetSomeIntegerProperty(Value: Integer);
  17.     procedure SetSomeStringProperty(Value: String);
  18.   public
  19.     property SomeIntegerProperty: Integer read FSomeIntegerProperty write SetSomeIntegerProperty;
  20.     property SomeStringProperty: String read FSomeStringProperty write SetSomeStringProperty;
  21.  
  22.     // событие на изменение свойства
  23.     property OnPropertyChanged: TNotifyEvent read FPropertyChanged write FPropertyChanged;
  24.   end;
  25.  
  26.   TForm1 = class(TForm)
  27.     Button1: TButton;
  28.     procedure Button1Click(Sender: TObject);
  29.     procedure FormCreate(Sender: TObject);
  30.   private
  31.     { Private declarations }
  32.   public
  33.     { Public declarations }
  34.  
  35.     Example: TExample;
  36.     procedure ExamplePropChanged(Sender: TObject);
  37.   end;
  38.  
  39. var
  40.   Form1: TForm1;
  41.  
  42. implementation
  43.  
  44. {$R *.dfm}
  45.  
  46. procedure TExample.SetSomeIntegerProperty(Value: Integer);
  47. begin
  48.   FSomeIntegerProperty := Value;
  49.   FPropertyChanged(Self); // дергаем событие
  50. end;
  51.  
  52. procedure TExample.SetSomeStringProperty(Value: String);
  53. begin
  54.   FSomeStringProperty := Value;
  55.   FPropertyChanged(Self); // дергаем событие
  56. end;
  57.  
  58.  
  59. procedure TForm1.Button1Click(Sender: TObject);
  60. begin
  61.  
  62.   // тестим
  63.   Example.SomeIntegerProperty := 10;
  64.   Example.SomeStringProperty := 'sometext';
  65. end;
  66.  
  67. procedure TForm1.ExamplePropChanged(Sender: TObject);
  68. begin
  69.   ShowMessage('property changed');
  70. end;
  71.  
  72. procedure TForm1.FormCreate(Sender: TObject);
  73. begin
  74.   Example := TExample.Create();
  75.   Example.OnPropertyChanged := ExamplePropChanged; // присваиваем обработчик
  76. end;
  77.  
  78. end.
  79.  
Advertisement
Add Comment
Please, Sign In to add comment