답변 감사드립니다.
그런데 Self는 Form 자신을 의미하는 것 아닌지요?
nWidth := Self.Width;
nWidth := Width;
이렇게 입력하면 폼의 넓이가 구해지는데 제가 알고 싶은 것은
procedure TForm1.Edit1Change(Sender: TObject);
begin
Showmessage(Edit1.Text);
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
Showmessage(Edit2.Text);
end;
위의 예에서 Edit1.text, Edit2.text로 각각 표기하지 않고 한가지로 표현할 수
있는, PB에서 This.text와 같은 것은 무엇인지요? Form내의 어떤 Componet
로도 인식될 수 있는 예약어입니다.
답변주시면 감사하겠습니다.
아래에 먼저 답변해 주신 분들의 답변을 참고하시면 될것 같습니다.
조금 더 덧붙이자면...
델파이는 이벤트 핸들러를 처리하는데 있어
비주얼 베이직이나 파워빌더와는 다른 방법을 사용합니다.
예를들어 비주얼 베이직에서는 Sub의 이름의 구성을 가지고 이벤트 핸들러를 구분합니다.
그래서 Sub의 이름을 임으로 변경하면 General Procedure로 바뀌죠.
그러나 델파이는 이벤트 핸들러를 가르키는 방법을 씁니다.
예를 들면
"버튼A의 클릭 이벤트는 'aaaa' 라는 프로시져를 사용한다." 처럼요.
만약
"버튼B의 클릭 이벤트도 'aaaa' 라는 프로시져를 사용해라." 라고 지정하시면
두개의 버튼이 한개의 프로시져를 클릭 이벤트의 핸들러로 공유하며 사용하게 됩니다.
( dfm 파일을 보시면 이해가 빠릅니다. 텍스트파일이므로 쉽게 보실 수 있습니다. 예전엔 바이너리 파일로 되어있어서 보기 힘들었지만...)
버튼 클릭의 이벤트 핸들러는 TObject type의 파라미터가 필요합니다.
기본 값으로 Sender라고 나오는...
'aaaa' 라는 프로시져의 TObject type의 파라미터(주로 Sender)는
버튼A의 클릭일 때는 버튼A가 되고
버튼B의 클릭일 때는 버튼B가 됩니다.
이러한 것들을 이해하시면
델파이의 오브젝트 인스펙터에서 이벤트 부분이 콤보박스로 되어있는 이유를
아시게 될것입니다.
이런 이유로 객체의 동적 생성과
동적으로 생성된 객체에게 이벤트를 연결하는 일들이 무척 쉽고 자유롭습니다.
델파이 조금 더 해보시면 금방 눈치 채실 수 있습니다.
도움이 되셨기를 바랍니다.