C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[26941] [냉무] 감사합니다. 많은 도움이 되었습니다. -초보마차-
이진우 [geniart] 745 읽음    2003-08-27 09:45
posix.duo 님이 쓰신 글 :
: TObject *Sender는 이벤트를 발생시킨 VCL 객체를 넘겨주는 객체 포인터입니다.
: TObject는 모든 VCL 콤포넌트의 최상위 조상입니다. 따라서 어떤 VCL 콤포넌트이든 TObject로부터 파생되어 나온 것들이기 때문에 공통 파라미터 인자로 사용할 수가 있겠죠..
: 그래서 모든 VCL 이벤트에는 TObject *Sender라는 파라미터 인자가 있는 것입니다.
: 즉, 어떤 VCL 콤포넌트에서 발생시킨 이벤트인지를 구별할 수 있도록 하는 것입니다.
:
: 어디서 발생시켰는지를 굳이 구별하는 이유는 하나의 이벤트 함수를 여러 VCL 콤포넌트에 연결을 할 수 있기 때문에 그 이벤트가 발생한 시점에서 어떤 콤포넌트에서 발생시킨 것인지를 확인해야할 필요가 있는 경우가 종종 있습니다. 그럴 때는 아주 유용하게 쓰이지요.
:
: 이벤트를 공통으로 묶어주는 경우에 같은 클래스의 콤포넌트들로만 묶어줄 수도 있고(대부분의 경우), 다른 클래스의 콤포넌트들의 어떤 이벤트를 하나로 묶어서 쓰는 경우도 있습니다.
:
: 예를 들자면,
: Form1에 Edit1, Label1, Image1, Memo1, Button1이 있다고 할때 이것들의 Click 이벤트를 하나로 묶어 줄 경우에 각 콤포넌트의 OnClick 이벤트를 'AnythingClick'이라는 이벤트로 연결했을 경우에 아래와 같이 이벤트를 작성했다면...
:
: void __fastcall TForm1::AnythingClick(TObject *Sender)
: {
:     Memo1->Lines->Add(Sender->ClassName() + " : " + ((TComponent*)Sender)->Name);
: }
:
: 메모 콤포넌트에 마우스로 클릭하는 콤포넌트의 클래스이름과 콤포넌트의 이름이 추가되는 것을 볼 수 있습니다.
: 이처럼 어떤 객체(콤포넌트)를 통한 이벤트가 발생했는지를 알 수 있도록 구별해주는 것이 TObject *Sender 입니다.
: 위 코드에서 보듯이 포인터를 넘긴다는 것은 이벤트를 발생시킨 객체의 주소를 넘기는 것이기 때문에 타입캐스팅을 통하여 캐스팅해주는 객체의 멤버 변수나 메소드를 호출할 수도 있습니다.
:
: 만약, 계산기를 만든다고 할 때 숫자키 역활을 하는 버튼들을 모두 하나의 이벤트로 묶는 경우에는 TButton으로 타입캐스팅하여 TButton의 모든 속성과 메소드를 사용할 수 있게 되는 것입니다.
:
: 글재주가 없어서 짧은 글로써 설명을 할려니 제대로 설명을 했는지 모르겠네요....
: 도움이 되셨길 바랍니다. 그럼 이만...
:

+ -

관련 글 리스트
26935 [TObject * Sender]에 관하여 마차 916 2003/08/27
26936     Re:[TObject * Sender]에 관하여 posix.duo 1157 2003/08/27
33259         Re:Re:[TObject * Sender]에 관하여 수야!╋ 928 2003/08/27
33258         Re:Re:[TObject * Sender]에 관하여 이진우 919 2003/08/27
26941         [냉무] 감사합니다. 많은 도움이 되었습니다. -초보마차- 이진우 745 2003/08/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.