프로그래밍 노트

[델파이] 사용자 이벤트 본문

델파이

[델파이] 사용자 이벤트

떡잎 2010. 4. 12. 15:57
unit Unit1;

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.



아직도 정리가 잘 되지는 않지만 이렇게 하면 사용자 이벤트를 만들어 쓸 수 있다.
Comments