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
[56322] Re:Re:Re:Re:Re:빌더에서 이벤트 만드는 법?
둘리.CSIEDA [dooly386] 1643 읽음    2009-03-01 08:20
원하시는 답이 정확히 뭔지를 정리해주셔야 답을 찾으실수 있습니다.
물어보시는 분이야 몰라서 물어본다고 어쩔수 없지만, 그래도 어느정도 정리를 해보시고 정확히 물어보셔야
좋은 답을 찾으실 수 있을 듯 합니다.

제가 답을 단건 프로퍼티에 메소드 연결하는 것입니다. 컴포넌트 이벤트가 아닙니다. 컴포넌트 이벤트는 다른 분이 설명

참조 사이트 붙여 주셨고요

질문을 잘못하신건지 답변을 잘못한건지 모르겠군요...ㅠ.ㅠ

설마해서 생각해 봤는데 , 혹시 MESSAGE_MAP 을 원하시는건가요?

수고하세요~~~

나그네 님이 쓰신 글 :
: 답변을 잘못달았네요.. 프로퍼트에 일반 함수 연결은 이미 알고있었고요..(예전에 끄적거리다..) 컴포턴트 이벤트는 제 질문과 거리가 멉니다. 제가 원하는건 사용자 정의 이벤트 만들기 입니다.(프로퍼트에 메소드 포인터인가 연결하는..)
: 둘리.CSIEDA 님이 쓰신 글 :
: : component event 는 아래에 올리셨네요.. class __property 에 연결된 함수 연결에 대하여 적어 봅니다.
: :
: : 제 블로그에 있는거 옮겨 copy 해 왔어요..
: : http://opensourceforge.tistory.com/368
: :
: : 이하  paste 된 문장.------------------------------------------------------------------------------
: :
: : C++ Builder 의 class 에서 __property 에 의한 함수의 호출이 어떻게 이루어 지는지를 간략하게 설명하고자 한다.
: :
: : 
: :
: : 우선 C++ Builder 의 c++ 키워드로 __property 가 있다.  키워드 중 __ 가 붙은 즉 _ 가 두개 붙은 경우는 해당 컴파일러 만의 기능인 것을 인식해야 한다. 즉 __property 는 VC++ 에는 없다. 만약에 있다고 하더라도 그 기능은 다를 수 있다.
: :
: : 
: :
: : 일단 클래스 A 를 만들어 본다.
: :
: : 
: :
: : class A
: :
: : {
: :
: :           int Fdata;
: :
: :     protected:
: :
: :           int getData()
: :
: :           {
: :
: :                  return Fdata;
: :
: :           }
: :
: :           void setData(int v)
: :
: :           {
: :
: :                  Fdata = v;
: :
: :           }
: :
: :     public:
: :
: : 
: :
: :           __property int data = {read=getData,write=setData};
: :
: : };
: :
: : 
: :
: : 위와 같은 class 에 의하여 객체를 하나 만들어 보자.
: :
: : 
: :
: : A a;
: :
: : 
: :
: : 이제 a 라는 객체는 int Fdata 라는 private member 변수를 하나 갖게 되며 getData() 와 setData 라는 member 함수를 갖게 된다.
: :
: : 
: :
: : 우리가 클래스 객체에 있어서 내부 데이터의 접근 보호를 위하여 hiding 을 시키는 경우가 있으며 그 데이터 메모리에 접근 하는 방법을 제한적으로 설정하기를 원할 때가 있다. 이러한 경우 우리는 일반적인 c++ 프로그래밍에서 get 과 set 메소드를 만들어 접근하도록 하는 방법을 사용하고 있다.
: :
: : 이는 모든 객체 지향 프로그래밍의 기본으로 사용되고 있는 방식이다.
: :
: : 그러나 이러한 get 과 set 을 이용할 경우 우리는 함수의 형태를 갖는다는 것을 알 수 있으며 실제 접근 자체에서 해당 객체의 멤버함수의 호출 형식으로 이루어 진다.
: :
: : C++ Builder 의 __property (Delphi 도 마찬가지) 는 바로 이러한 객체 멤버함수에 접근하는 방법을 변수 형식으로 일관된 이름을 통하여 구현하도록 해 주는 것이다.
: :
: : 
: :
: : 즉 위의 class 에 의하여 만들어진 객체 a 에 대하여
: :
: : 
: :
: : a.getData() 에 의하여 Fdata 에 대한 read  접근, a.setData() 에 의하여 Fdata 에 대한 write 접근을 하게 된다. 이러한 연결 채널을
: :
: : __property int data = {read=getData,write=setData};
: :
: : 가 해주는 것이다.
: :
: : 
: :
: : a.data 라는 property 에 우리는 두 가지의 접근이 있을 수 있다는 것을 알 수 있다.
: :
: : 1. write 접근
: :
: : 2. read 접근
: :
: : 
: :
: : write 접근 과 read 접근이 과연 무엇일까???    별거 아니다. 바로 대입 연산자(operator)의 왼쪽에 있는 피 연산자(operand) 인지 오른쪽에 있는 피 연산자 인지를 나타낸다.. 대입 연산자의 왼쪽에 있으면 write 접근이고 오른쪽에 있으면 read 접근이 된다.
: :
: : 이렇게 어떤 메모리에 데이터가 갱신 되어질 경우와 해당 데이터를 읽어 오는 경우로 나뉘며 이를 분석하여 C++ Builder 는 a.data 에 대한 연결된 메소드를 어떤 것을 컴파일 시간에 링크하여 호출해야 할지를 컴파일러가 알아서 할당한 다는 것이다.
: :
: : 즉
: :
: : 
: :
: :       int i = a.data;   와    a.data = 10;    에서 data 접근은 서로 다른 함수가 호출된다는 것이다.
: :
: : 나그네 님이 쓰신 글 :
: : : 두가지 종합입니다.
: : : 프로퍼티에 연결된 메서드로 이벤트를 만들어서 프로그램의 흐름 중간에서 이벤트를 발생사켜서 사용해보려고 합니다.
: : : 그런데 프로퍼티에 연결된 메서드만드는거 부터가 안되네요..
: : : 둘리.CSIEDA 님이 쓰신 글 :
: : : : TForm 에 OnMouseDown 과 같은 event 를 말씀하시는건가요??
: : : : 아니면 __property 에 연결된 class method 를 말씀하시는 건가요?
: : : :
: : : : 나그네 님이 쓰신 글 :
: : : : : C++빌더에 보면 이벤트 핸들러런게 있네요.. 실제로 C++빌더로 짠 프로그램도 이 이벤트에 따라 움직이고요..
: : : : : 그렇다면 사용자 정의 이벤트를 만들어 사용 할 수도 있을거 같은데.. 이벤트를 만드는 방법은 없나요?

+ -

관련 글 리스트
56303 빌더에서 이벤트 만드는 법? 나그네 1948 2009/02/27
56311     Re:빌더에서 이벤트 만드는 법? 둘리.CSIEDA 1747 2009/02/28
56313         Re:Re:빌더에서 이벤트 만드는 법? 나그네 1648 2009/02/28
56316             Re:Re:Re:빌더에서 이벤트 만드는 법? 둘리.CSIEDA 1741 2009/02/28
56320                 Re:Re:Re:Re:빌더에서 이벤트 만드는 법? 나그네 1567 2009/02/28
56322                     Re:Re:Re:Re:Re:빌더에서 이벤트 만드는 법? 둘리.CSIEDA 1643 2009/03/01
56342                         Re:Re:Re:Re:Re:Re:빌더에서 이벤트 만드는 법? 나그네 1926 2009/03/02
63344                             Re:Re:Re:Re:Re:Re:Re:빌더에서 이벤트 만드는 법? 지금 시작 1475 2010/12/24
63350                                 Re:Re:Re:Re:Re:Re:Re:Re:빌더에서 이벤트 만드는 법? 나그네 1844 2010/12/24
56310         Re:Re:빌더에서 이벤트 만드는 법? 나그네 1492 2009/02/28
56315             Re:Re:Re:빌더에서 이벤트 만드는 법? 김권영 1869 2009/02/28
56319                 Re:Re:Re:Re:빌더에서 이벤트 만드는 법? 나그네 1672 2009/02/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.