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
[1502] [답변] JSK365/ 빠른 답변 좀 부탁드립니다./프포
박지훈.임프 [cbuilder] 3717 읽음    1999-06-28 06:47
안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당 임펠리테리입니다.

잠깐 장난을 쳐보다가.. 문제없이 동작하는 컴퍼넌트를 만들어버렸습니다.

소스를 아래에 첨부합니다. 아래 소스를 각각 헤더와 cpp 파일로 저장한후

컴퍼넌트 메뉴에서 인스톨 컴퍼넌트 메뉴를 선택하여 설치하시면 됩니다. Imp라는

팔레트에 TImpComboBox라는 새 컴퍼넌트가 나올겁니다.

먼저 헤더파일의 소스...

//---------------------------------------------------------------------------
#ifndef ImpComboBoxH
#define ImpComboBoxH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include <StdCtrls.hpp>
//---------------------------------------------------------------------------
class PACKAGE TImpComboBox : public TComboBox
{
private:
Classes::TNotifyEvent FOnCloseUp;
    void __fastcall CNCommand(TWMCommand &Message);
protected:
public:
    __fastcall TImpComboBox(TComponent* Owner);
__published:
__property Classes::TNotifyEvent OnCloseUp = {read=FOnCloseUp, write=FOnCloseUp};

BEGIN_MESSAGE_MAP
    VCL_MESSAGE_HANDLER(CN_COMMAND, TWMCommand, CNCommand);
END_MESSAGE_MAP(TComboBox);
};
//---------------------------------------------------------------------------
#endif

그리고, 아래는 cpp 유닛의 소스입니다.

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "ImpComboBox.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
namespace Impcombobox
{
    void __fastcall PACKAGE Register()
    {
         TComponentClass classes[1] = {__classid(TImpComboBox)};
         RegisterComponents("Imp", classes, 0);
    }
}
//---------------------------------------------------------------------------
static inline void ValidCtrCheck(TImpComboBox *)
{
    new TImpComboBox(NULL);
}
//---------------------------------------------------------------------------
__fastcall TImpComboBox::TImpComboBox(TComponent* Owner)
    : TComboBox(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TImpComboBox::CNCommand(TWMCommand &Message)
{
    if(Message.NotifyCode == CBN_CLOSEUP)
    {
        if (FOnCloseUp)
            FOnCloseUp(this);
    }
    else
        TComboBox::Dispatch(&Message);
}

별로 복잡하지 않죠? 이 컴퍼넌트를 폼에 놓고 오브젝트 인스펙터에서 이벤트 쪽을

보면, OnCloseUp이라는 새로운 이벤트가 나올겁니다. 말 그대로, 콤보박스의 리스트

박스가 사라질때 발생하는 이벤트입니다.

그럼 도움되시길...





임펠리테리 박지훈이었습니다.

(http://myhome.thrunet.com/~cbuilder, cbuilder@thrunet.com)



+ -

관련 글 리스트
1491 [질문] 빠른 답변 좀 부탁드립니다./프포 jsk365 3502 1999/06/25
1502     [답변] JSK365/ 빠른 답변 좀 부탁드립니다./프포 박지훈.임프 3717 1999/06/28
1498     [답변] JSK365/ 빠른 답변 좀 부탁드립니다./프포 박지훈.임프 3834 1999/06/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.