Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
- type
- TExample = class
- private
- FPropertyChanged: TNotifyEvent;
- FSomeIntegerProperty: Integer;
- FSomeStringProperty: String;
- procedure SetSomeIntegerProperty(Value: Integer);
- procedure SetSomeStringProperty(Value: String);
- public
- property SomeIntegerProperty: Integer read FSomeIntegerProperty write SetSomeIntegerProperty;
- property SomeStringProperty: String read FSomeStringProperty write SetSomeStringProperty;
- // событие на изменение свойства
- property OnPropertyChanged: TNotifyEvent read FPropertyChanged write FPropertyChanged;
- end;
- TForm1 = class(TForm)
- Button1: TButton;
- procedure Button1Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- Example: TExample;
- procedure ExamplePropChanged(Sender: TObject);
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TExample.SetSomeIntegerProperty(Value: Integer);
- begin
- FSomeIntegerProperty := Value;
- FPropertyChanged(Self); // дергаем событие
- end;
- procedure TExample.SetSomeStringProperty(Value: String);
- begin
- FSomeStringProperty := Value;
- FPropertyChanged(Self); // дергаем событие
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- // тестим
- Example.SomeIntegerProperty := 10;
- Example.SomeStringProperty := 'sometext';
- end;
- procedure TForm1.ExamplePropChanged(Sender: TObject);
- begin
- ShowMessage('property changed');
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- Example := TExample.Create();
- Example.OnPropertyChanged := ExamplePropChanged; // присваиваем обработчик
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment