interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
Type
// 이벤트 핸들러 생성
TMy1stEvent = procedure(PrvValue, CurValue: integer) of object;
// 값 변경 감시 클래스 정의 [사용자 이벤트 정의]
TWatchChangeValue = class
private
FOnChangeVal : TMy1stEvent;
public
procedure ChangeValue(PrvValue, CurValue: integer);
published
property OnChangeValue : TMy1stEvent read FOnChangeVal write FOnChangeVal;
end;
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
// 값 변경 감시 클래스 선언
WatchChangeValue : TWatchChangeValue;
// 이벤트 발생시 호출하는 함수 선언
procedure ChangeValue2(PrvValue, CurValue: integer);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
// 이벤트를 발생시키는 트리거 함수
WatchChangeValue.ChangeValue(edit1.Tag, StrToInt(edit1.Text));
if edit1.Tag <> StrToInt(edit1.Text) then
edit1.Tag := StrToInt(edit1.Text);
end;
// 이벤트 발생시 호출하는 함수
procedure TForm1.ChangeValue2(PrvValue, CurValue: integer);
begin
// 변경전 값과 변경후 값 표시
self.Caption := IntToStr(PrvValue) + '>>>' + IntToStr(CurValue)
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// 이벤트 등록
WatchChangeValue := TWatchChangeValue.Create();
// 값 변경 이벤트가 발생되었을 때 호출할 함수 설정
WatchChangeValue.OnChangeValue := ChangeValue2;
end;
{ TWatchChangeValue }
// 이벤트 호출
procedure TWatchChangeValue.ChangeValue(PrvValue, CurValue: integer);
begin
if Assigned(OnChangeValue) then OnChangeValue(PrvValue, CurValue);
end;
end.
// 출처 Posted by 떡잎 http://wwwi.tistory.com/280
댓글 없음:
댓글 쓰기