|
김성규 입니다.
직접 입력하면 안됩니다. 안되는 이유가 있지요.
물론 오브젝트 인스펙터를 이용하지 않고도 됩니다.
오브젝트 인스펙터를 이용하지 않는 방법을 알려드리고
왜 오브젝트 인스펙터를 이용하지 않으면 안되는지 알려드리겠습니다.
직접 입력할 때는 아래와 같은 함수를 적당히 만드시고, OnCreate 같은 적당한 곳에서 아래와 같이 이벤트 핸들러와 코딩하신 함수와 연결을 해주셔야 합니다.
this->OnClose = FormClose;
오브젝트 인스펙터를 이용한 것과 같이 잘 동작할 겁니다.
벌써 눈치 채셨겠지만, 오브젝트 인스펙터를 이용하면 이런 작업은 해주지 않아도 됩니다.
오브젝트 인스펙터를 이용할때 이러한 작업을 해주는 코드를 자동으로 생성하기 때문이죠.
정확히 이야기 하자면, 이러한 코드가 자동으로 생성되는 것이 아니라, "OnClose 이벤트 핸들러는
FormClose 함수다"라는 정보를 저장해서 리소스로 들고가게 됩니다. 그 리소스는 바로 .dfm 즉 폼 파일이죠. 폼파일들은 리소스 컴파일러로 컴파일되어서 실행파일에 링크되게 됩니다.
프로그램이 수행하면서 해당 폼이 생성되면 리소스에서 해당 폼데이터를 읽어오고 폼데이터를 처리하면서 각종 이벤트 핸들러들을 자동으로 연결해주게 됩니다.
따라서 그냥 손으로 이벤트 핸들러만 만들어주면, 폼파일에 해당 정보가 없으니 그거 아니다
라는 에러가 나는 것 입니다.
이건 사족인데, 이러한 특징때문에 빌더나, 델파이로 만든 프로그램은 해킹하기 쉽다고 하더군요.
중요한 이벤트 핸들러는 수동으로 연결해주는 것이 좋다고 하더군요.
그리고... 아래 말씀은 질문의 내용이 이해가 안되는 군요.
: FocusControl 메소드를 사용하려는데... 직접입력안하구 onclose이벤트 처럼 Object Inspector에서 할수 있는 방법이 있나요?
: 찾아봐도 없어서 직접입력해서 했는데 에러가 납니다.
도움이 되셨기를...
|