object pascal에서의 self와 sender

http://www.borlandforum.com/impboard/impboard.dll?action=read&db=del_qna&no=4112

일단 위의 강좌를 기초로하면 이러한 결과물을 볼 수가 있습니다

object pascal에서의 sender와 self예제
object pascal에서의 sender와 self예제

조금 더 생각을 해서 이걸 분석해 보도록 하겠습니다.

현재 저 예제 대로라면

Sender :: Tbutton

self :: TForm1

이런 결과가 나오게 됩니다.

 

자아.. 멀쩡히 TButton의 OnClick을 눌렀는데 왜 이런 결과가 나오게 될까요?

여기에는 기본 전제가 필요합니다.

button이고 뭐고.. Form위에 얹혀진 객체들은 OnClick 이벤트를 눌렀다고 하더라도  실행되는건 TForm의 method이다

 

사실 대단히 당연한겁니다. 해당되는 method의 이름은 TForm1.Button1Click 이니깐요.

Form의 위에서 뭔가를 추가한다고 해도 사실 TForm을 벗어나지는 못한다는 얘기죠.

당연히 Sender는 Button1의 OnClick이벤트가 TForm1.Button1Click을 호출하는거니깐 TButton이 되는거고

self는 TForm1.Button1Click 이라는 method가 TForm의 method기때문에 메소드가 소속된 객체이름인 TForm이 되는겁니다.

 

간단한건데 여태까지 별 생각없이 살았네요…-.-;

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다